📄 nn2train.m
字号:
function tweights=NN2train(IWeights,TDIN,TDOUT,LR,ErTh,AF)
[rows,numdatasets]=size(TDIN);
toterr=ErTh+1;
epoch=0;
while(toterr>ErTh)
disp(toterr);
dataorder=randperm(numdatasets);
for n=1:numdatasets
output=NN2(IWeights,TDIN(:,dataorder(n)),AF);
%Should update bias weights
for j=1:IWeights.outputnum
if(AF=='p')
IWeights.bias(j)=IWeights.bias(j)+LR*(TDOUT(j,dataorder(n))-output(j));
else
IWeights.bias(j)=IWeights.bias(j)+LR*output(j)*(1-output(j))*(TDOUT(j,dataorder(n))-output(j));
end
end
for r=1:IWeights.outputnum
for s=1:IWeights.inputnum
if (AF=='p')
IWeights.inputs(r,s)=IWeights.inputs(r,s)+LR*(TDOUT(r,dataorder(n))-output(r))*TDIN(s,dataorder(n));
else
IWeights.inputs(r,s)=IWeights.inputs(r,s)+LR*(TDOUT(r,dataorder(n))-output(r))*TDIN(s,dataorder(n))*output(r)*(1-output(r));
end
end
end
end
%should be finished for an epoch
temperr=0;
for n=1:numdatasets
output=NN2(IWeights,TDIN(:,dataorder(n)),AF);
%disp(output)
%display(TDOUT(:,dataorder(n))')
%disp(TDOUT(:,dataorder(n))-output')
temperr=temperr+sum((TDOUT(:,dataorder(n))-output').^2);
end
toterr=temperr/(IWeights.outputnum*2);
epoch=epoch+1;
end
disp(epoch);
tweights=IWeights;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -