Matlab 的 BP 神经网络各种不同算法程序
1:一般模式的 BP:
clc
P=[-1 -1 2 2 ;0 5 0 5];
T=[-1 -1 1 1];
net=newff(minmax(P),[3 ,1],{'tansig','purelin'},'traingd');
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.epochs=300;
net.trainParam.goal=1e-5
[net tr]=train(net,P,T);
2:加入动量的 BP
clc
P=[-1 -1 2 2 ;0 5 0 5];
T=[-1 -1 1 1];
net=newff(minmax(P),[3 ,1],{'tansig','purelin'},'traingdm');
net.trainParam.show=10000;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=10000;
net.trainParam.goal=1e-5*100
[net tr]=train(net,P,T);
3:自适应 LR 变步长:
clc
P=[-1 -1 2 2 ;0 5 0 5];
T=[-1 -1 1 1];
net=newff(minmax(P),[3 ,1],{'tansig','purelin'},'traingda');
net.trainParam.show=10000;
net.trainParam.lr=0.05;
net.trainParam.lr_inc=1.05;
net.trainParam.epochs=10000;
net.trainParam.goal=1e-5*100
[net tr]=train(net,P,T);
4:弹性梯度法
clc
P=[-1 -1 2 2 ;0 5 0 5];
T=[-1 -1 1 1];
net=newff(minmax(P),[3 ,1],{'tansig','purelin'},'trainrp');
net.trainParam.show=10000;
评论12