matlab腳本程序實例源碼:
clear;
clc;
%一個簡單的BP網絡擬合問題
%訓練樣本的生成
X=-1:0.1:1; %X爲輸入 這裏是在[-1 1]區間內以0.1爲步進值(相鄰兩數的差值)生成的21組數據,用來表示該網絡的輸入
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201]; %D爲X每一項數據對應的輸出(實際x對應的實際y值)
figure; %創建一個新窗口
plot(X,D,'+'); %繪製原始數據分佈圖
%創建網絡
net = newff([-1 1],[5 1],{'tansig','tansig'}); %newff:前饋網絡創建函數,即創建一個前饋神經網絡net
%設置訓練參數
net.trainParam.epochs = 100; %設定訓練的最大次數
net.trainParam.goal = 0.005; %設定全局最小誤差,此處爲mse:均方誤差(mean squared error)
%訓練網絡
net = train(net,X,D); %網絡學習函數
%仿真
O = sim(net,X);
%作出擬合圖形
figure;
plot(X,D,'*',X,O); %繪製訓練後得到的結果和誤差曲線
V = net.iw{1,1}%輸入層到中間層權值
theta1 = net.b{1}%中間層各神經元閾值
W = net.lw{2,1}%中間層到輸出層權值
theta2 = net.b{2}%輸出層各神經元閾值
運行結果:
MATLAB神經網絡訓練結果各參數解釋:
如上圖形顯示的是神經網絡的結構圖,可知有一個隱層一個輸出層
第二部分顯示的是訓練算法,這裏爲學習率自適應的梯度下降BP算法;誤差指標爲MSE
第三部分顯示訓練進度:
Epoch:訓練次數;在其右邊顯示的是最大的訓練次數,可以設定,上面例子中設爲100;而進度條中顯示的是實際訓練的次數,上面例子中實際訓練次數爲7次。
Time:訓練時間,也就是本次訓練中,使用的時間
Performance:性能指;進度條中顯示的是當前的均方誤差;進度條右邊顯示的是設定的均方誤差(如果當前的均方誤差小於設定值,則停止訓練),這個指標可以用用.trainParam.goal參數設定。
Gradiengt:梯度;進度條中顯示的當前的梯度值,其右邊顯示的是設定的梯度值。如果當前的梯度值達到了設定值,則停止訓練。
validation check爲泛化能力檢查(若連續6次訓練誤差不降反升,則強行結束訓練)
第四部分爲作圖。分別點擊三個按鈕能看到誤差變化曲線,分別用於繪製當前神經網絡的性能圖,訓練狀態和迴歸分析。