當前位置:
首頁 > 最新 > 使用前向神經網路做線性回歸

使用前向神經網路做線性回歸

前饋神經網路(Feedforward Neural Network,FNN),為人工智慧領域中,最早發明的簡單人工神經網路類型。在它內部,參數從輸入層向輸出層單向傳播。有異於遞歸神經網路,它的內部不會構成有向環。

我們這段時間介紹的感知機也可以歸類為前饋神經網路,今天我們介紹使用MATLAB工具箱中自帶的神經網路工具包中的前饋神經網路來進行線性回歸,代碼如下:

close all; clear all; clc;

%% Linear Regression

% generate data

[X,Xtrain,Ytrain,fig] = data_generator();

%---------------------------------

% no hidden layers

net = feedforwardnet([]);

% % one hidden layer with linear transfer functions

% net = feedforwardnet([10]);

% set early stopping parameters

net.divideParam.trainRatio = 1.0; % training set [%]

net.divideParam.valRatio = 0.0; % validation set [%]

net.divideParam.testRatio = 0.0; % test set [%]

% train a neural network

net.trainParam.epochs = 200;

net = train(net,Xtrain,Ytrain);

%---------------------------------

% view net

view (net)

% simulate a network over complete input range

Y = net(X);

% plot network response

figure(fig)

plot(X,Y,"color",[1 .4 0])

legend("original function","available data","Linear regression","location","northwest")

%% Data generator function

function[X,Xtrain,Ytrain,fig] = data_generator()

% data generator

X = 0.01:.01:10;

f = abs(besselj(2,X*7).*asind(X/2) + (X.^1.95)) + 2;

fig = figure;

plot(X,f,"b-")

hold on

grid on

% available data points

Ytrain = f + 5*(rand(1,length(f))-.5);

Xtrain = X([181:450 601:830]);

Ytrain = Ytrain([181:450 601:830]);

plot(Xtrain,Ytrain,"kx")

xlabel("x")

ylabel("y")

ylim([0 100])

legend("original function","available data","location","northwest")

end

訓練樣本如下:

網路訓練結果如下:

最後學習的結果如下:

最後我們來一個投票,大家選一下自己喜歡的推送內容,我後面會酌情考慮。

以上就是今天推送的內容,歡迎討論。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 蟹先森愛學習 的精彩文章:

使用多層感知機解決XOR問題

TAG:蟹先森愛學習 |