我使用ADAPT进行简单网络的增量训练,我知道ADAPT改变了权重和偏差,我使用了这个:
clc
clear all
net = linearlayer([0 1 2]);
pi = {[1; 1] [2;2]};
p = {[3 ;4] [5; 6] [7;8]};
t={[40; 50; 60] [10 ;20; 30] [70;60;50]};
net=configure(net,p,t);
net.inputweights{1}.learnparam.lr=0.001
net.adaptParam.passes = 10;
for i=1:1
[net,y,E,pf,af] = adapt(net,p,t,pi);
end
之后,我使用相同的输入模拟该网络:
y1=sim(net,p,pi);
我希望y = y1,但结果y1和y不相等!! 为什么网络输出训练与ADAPT(y)和训练网络的输出(y1)之间存在差异!? ADAPT做了什么?
答案 0 :(得分:0)
你有它:
net = linearlayer([0 1 2]);
pi = {[1; 1] [2;2]};
p = {[3 ;4] [5; 6] [7;8]};
t = {[40; 50; 60] [10 ;20; 30] [70;60;50]};
net = configure(net,p,t);
net.inputweights{1}.learnparam.lr = 0.001;
net.adaptParam.passes = 10;
view(net)
[net,y,E,pf,af] = train(net,p,t);
tout = net(p);
您可以将adapt()用于培训后应用程序。 matlab文档特别指出,在训练完成后,您可以使用自适应,并且网络在模拟时适应(http://www.mathworks.com/help/nnet/ref/adapt.html)
答案 1 :(得分:0)
谢谢你的光荣。 所以我应该在训练后使用ADAPT吗?喜欢这段代码吗?
net = linearlayer([0 1 2]);
pi = {[1; 1] [2;2]};
p = {[3 ;4] [5; 6] [7;8]};
t = {[40; 50; 60] [10 ;20; 30] [70;60;50]};
net = configure(net,p,t);
net.inputweights{1}.learnparam.lr = 0.001;
net.adaptParam.passes = 10;
view(net)
[net,y,E,pf,af] = train(net,p,t);
tout = net(p);
for i=1:100
[net,y,E,pf,af] = adapt(net,p,t,pi);
end
如果是,这是增量培训吗??