作者jack0711 (小修)
看板MATLAB
标题[问题]NARX模型
时间Sat Mar 22 23:37:33 2014
在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)