[問題]NARX模型
在Matlab類神經中,有一種時間序列預測方法是NARX模型
將此系統訓練完成後可以得到最終的一些參數值
包含net.IW,net.LW,net.b以及初始條件Pi,Ai
接下來我想自己重建此訓練好之類神經系統
但是卻遇到瓶頸,將上述資料全數帶入後,竟然與預期的輸出不相同
我想或許是我對此類神經的理解還不夠,想請問一下問題出在哪裡?
load data
y = con2seq(y);
u = con2seq(u);
d1 = [1:2];
d2 = [1:2];
narx_net = narxnet(d1,d2,4);
narx_net.layers{1}.transferFcn = 'satlins';
narx_net.layers{2}.transferFcn = 'purelin';
[p,Pi,Ai,t] = preparets(narx_net,u,{},y);
narx_net = train(narx_net,p,t,Pi);
yp = sim(narx_net,p,Pi);
narx_net_closed = closeloop(narx_net); <-欲自行重建此NARX
%%%%將參數值取出%%%%
Ai1 = cell2mat(Ai1);
Pi1 = cell2mat(Pi1);
IW1 = narx_net_closed.IW{1,1};
IW2 = narx_net_closed.LW{1,2};
LW = narx_net_closed.LW{2,1};
bI = narx_net_closed.b{1};
bL = narx_net_closed.b{2};
%欲模擬NARX
load data
NARX_struct = create_NARX(Pi1,Ai1(:,end));
for n = 1:3000
yy(n) = NARX(u_test(n+2),IW1,IW2,bI,LW,bL,NARX_struct);
end
%NARX副程式
function y = NARX(in,IW1,IW2,bI,LW,bL,NARX_struct)
NARX_struct.hidden_in = IW1*[NARX_struct.input_d1;NARX_struct.input_d2]
+ IW2*[NARX_struct.output_d1;NARX_struct.output_d2]
+ bI;
NARX_struct.hidden_out = satlins(NARX_struct.hidden_in);
NARX_struct.output_in = LW*NARX_struct.hidden_out + bL;
NARX_struct.output_out = purelin(NARX_struct.output_in);
NARX_struct.input_d1 = NARX_struct.input_d2;
NARX_struct.input_d2 = in;
NARX_struct.output_d1 = NARX_struct.output_d2;
NARX_struct.output_d2 = NARX_struct.output_out;
y = NARX_struct.output_out;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.160.118.192
※ 編輯: jack0711 來自: 1.160.118.192 (03/22 23:42)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章
7
20