1樓:匿名使用者
你這個問題其實我回答過,你可以參考
2樓:
最簡單的擬合方法就是利用matlab中的nntool工具箱,無論是知道擬合曲線的形式還是不知道,都可以用nntool工具箱。我做出來的擬合曲線即相關引數,擬合影象分別如下圖。
講解bp神經網路比較好的書有:matlab神經網路:從零開始》(共上下兩冊)和
《matlab 神經網路30個案例分析》
3樓:添顏旅行
人工神經網路第一次作業
題目:使用函式
sin()au
tecu
試驗matlab
中的bp演算法1
、改變不同訓練演算法,觀察效果;
2、改變引數
a,c的值,觀察效果;
3、改變隱層神經網路個數,觀察效果;
4、嘗試:加入雜訊的訓練效果。
一、改變不同訓練演算法,觀察效果
在matlab
中,bp
網路的訓練函式一共有以下幾種,改變不同訓練演算法,
觀察效果就是在其他引數不變只改變程式中訓練函式的情況下,
得到不同訓練算
法的訓練結果。
訓練方法
訓練函式
梯度下降法
traingd
有動量的梯度下降法
traingdm
自適應lr
梯度下降法
traingda
自適應lr
動量梯度下降法
traingdx
彈性梯度下降法
trainrp
fletcher-reeves
共軛梯度法
traincgf
ploak-ribiere
共軛梯度法
traincgp
powell-beale
共軛梯度法
traincgb
量化共軛梯度法
trainscg
擬牛頓演算法
trainbfg
一步正割演算法
trainoss
levenberg-marquardt
法trainlm
由於這只是改變程式中的訓練演算法,
其他不變,
所以為了簡潔,
在本程式中
只選取了四種訓練演算法,
分別是梯度下降法
traingd
、彈性梯度下降法
trainrp、擬
牛頓演算法
trainbfg
和levenberg-marquardt
法trainlm
,只更改不同的訓練演算法來
構造節點,程式如下,得到不同訓練演算法下的**圖如圖
1所示。
clear
all;
close
all;
clc;
a=1,c=1;
%在此改變
a,c的值
layer_number=20;
%在此改隱含層的個數
u=-4:0.001:4;
t=exp(-a*u).*sin(c*u);
%這裡是矩陣相乘,要用點乘
net=newff(minmax(u),[layer_number,1],,
'traingd');%
梯度下降法
y1=sim(net,u);
%未訓練直接輸出
net1=newff(minmax(u),[layer_number,1],,
'traingd');
%梯度下降法
net2=newff(minmax(u),[layer_number,1],,
'trainrp');
%彈性梯度下降法
net3=newff(minmax(u),[layer_number,1],,
'trainbfg');%
擬牛頓演算法
net4=newff(minmax(u),[layer_number,1],,
'trainlm');
%levenberg-marquardt
net.trainparam.show = 50;
net.trainparam.epochs=1000;
net.trainparam.goal=0.01;
net1=train(net1,u,t);
%採用梯度下降法訓練節點
net2=train(net2,u,t);
%採用彈性梯度下降法訓練節點
net3=train(net3,u,t);
%採用擬牛頓演算法訓練節點
net4=train(net4,u,t);%採用
levenberg-marquardt
法訓練節點
y2_1=sim(net1,u);
y2_2=sim(net2,u);
y2_3=sim(net3,u);
y2_4=sim(net4,u);
subplot(2,2,1)
plot(u,t,
'b--'
,u,y1,
'g:'
,u,y2_1,
'r-'
); title(
'1、採用梯度下降法的**結果圖
');xlabel(
'input_u'
);ylabel(
'output_y'
);legend(
'目標函式曲線',
'未經訓練
bp網路逼近曲線',
'訓練後的
bp網路逼近曲線');
subplot(2,2,2)
plot(u,t,
'b--'
,u,y1,
'g:'
,u,y2_2,
'r-'
) title(
'2、採用彈性梯度下降法的**結果圖
');xlabel(
'input_u'
);ylabel(
'output_y'
);legend(
'目標函式曲線',
'未經訓練
bp網路逼近曲線',
'訓練後的
bp網路逼近曲線');
subplot(2,2,3)
plot(u,t,
'b--'
,u,y1,
'g:'
,u,y2_3,
'r-'
) title(
'3、採用擬牛頓演算法的**結果圖
');xlabel(
'input_u'
);ylabel(
'output_y'
);legend(
'目標函式曲線',
'未經訓練
bp網路逼近曲線',
'訓練後的
bp網路逼近曲線');
subplot(2,2,4)
plot(u,t,
'b--'
,u,y1,
'g:'
,u,y2_4,
'r-'
) title(
'4、採用
levenberg-marquardt
法的**結果圖
');xlabel(
'input_u'
);ylabel(
'output_y'
);legend(
'目標函式曲線',
'未經訓練
bp網路逼近曲線',
'訓練後的
bp網路逼近曲線');
matlab中建立bp神經網路的函式newff的引數的
1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...
BP人工神經網路的收斂是什麼,bp神經網路收斂問題
檀君博 收斂和迭代演算法有關。反向傳播演算法是定義乙個誤差er 往往是輸出結果與預想結果之間的某個範數 然後求出滿足誤差極小的權向量。如果把誤差看成乙個連續函式 泛函 的話,求對權向量各分量的偏導為0即可,但是實際上它是離散的,所以我們需要用迭代來求最小梯度。如果是新定義演算法的話理論上的收斂要證明...
求助,應用BP神經網路逼近非線性函式
文庫精選 內容來自使用者 金海望 bp神經網路逼近非線性函式 3 試用bp神經網路逼近非線性函式 f u sin 10u 其中,u 0.5,0.5 解題步驟 網路建立 使用 net newff minmax x 20,1 語句建立個前饋bp神經網路。該bp神經網路只含個隱含層,且神經元的個數為20。...