0
當直接隱含在輸入上時,我從訓練中獲得的權重返回不同的結果! 我將演示一個非常簡單的例子 假設我們有一個輸入向量x= 0:0.01:1;
和目標矢量t=x^2
(我知道它更好地使用非線性網絡) 訓練後,2層,線性網絡,與一個神經元每一層,我們得到:來自訓練的簡單線性神經網絡權重與訓練結果不兼容
sim(net,0.95) = 0.7850
(一些錯誤的訓練 - 這是確定也應該)從net.IW,net.LW,net.b:
IW 權重=
0.4547
LW =
2.1993
B =
0.3328 -1.0620
如果我使用的權重:時間= purelin(purelin(0.95 * IW + B(1))* LW + B(2))= 0.6200 ! ,我從SIM卡的結果中得到了不同的結果! 怎麼可能?怎麼了?
的代碼:
%Main_TestWeights
close all
clear all
clc
t1 = 0:0.01:1;
x = t1.^2;
hiddenSizes = 1;
net = feedforwardnet(hiddenSizes);
[Xs,Xi,Ai,Ts,EWs,shift] = preparets(net,con2seq(t1),con2seq(x));
net.layers{1,1}.transferFcn = 'purelin';
[net,tr,Y,E,Pf,Af] = train(net,Xs,Ts,Xi,Ai);
view(net);
IW = cat(2,net.IW{1});
LW = cat(2,net.LW{2,1});
b = cat(2,[net.b{1,1},net.b{2,1}]);
%Result from Sim
t2=0.95;
Yk = sim(net,t2)
%Result from Weights
x1 = IW*t2'+b(1)
x1out = purelin(x1)
x2 = purelin(x1out*(LW)+b(2))
,我不知道這在所有的,但會不會是網絡以某種方式規範輸入和目標?如果是這樣,那麼報告的權重將無用,而不必對自己的輸入應用相同的標準化。另外,我認爲你應該在加權之前加上偏差(例如((輸入+ b(1))* IW + b(2))* LW)。 – Niclas 2012-08-04 17:51:50