BP神经网络的运用
输入p=[-1 -1 2 2 ;0 5 0 5];
t=[-1 -1 2 2];
然后生成与输入输出对应的神经网络
net=newff(minmax(p),[3 1],{'tansing','perelin'},'traingd');
接下来设定网络参数
net.p=trainParam.lr=0.05; 学习速率
net.trainParam.epochs=300; 迭代次数
net.trainParam.goal=1.0e-5; 误差最大值
[net tr]=train(net,p,t) 对神经网络进行训练
对值进行预测
y=sim(net,p)
1\traingd 表示训练方法 就是用什么方法迭代权值和偏置
2\改善的方法 :有动量的梯度下降法 traingdm
3|可变学习速率的梯度下降法 traingda
4\弹性梯度下降法 trainrp
常用的传递函数是 logsig tansig purelin
BP神经网络 函数的逼近、
k=1;
p=[0:0.05:4];t=sin(k*pi*p);
plot(p,t,'-');
xlabel('时间‘);ylabel('输入信号’);
net=newff(minmax(p),[10 1],{'tansig','purelin'},‘trainlm');
y1=sim(net,p);
plot(p,t,'-','p,y1,'--');
net.trainParam.ir=0.05;
net.trainParam.epochs=300;
net.trainParam.goal=1.0e-5;
[net tr]=train(net,p,t);
回归问题 由于神经网络可以对任意形状的函数曲线进行拟合,所以BP神经网络可以进行回归
可以用于识别
BP神经网络对故障的检测:
P11=[0.64 1.37 0.71 0.78]';
P12=[0.68 1.31 0.64 1.31]';
P21=[1.65 1.66 0.9 4.48]';
P22=[1.35 1.39 0.95 2.89]';
P31=[8.24 2.23 0.99 2]';
P41=[2.01 1.65 0.94 4.39]';
P51=[0.93 1.33 0.73 1.54]';
P=[P11 P12 P21 P22 P31 P41 P51];
t11=[0 0 0 0]';
t12=[0 0 0 0]';
t21=[1 0 0 0]';
t22=[1 0 0 0]';
t31=[0 1 0 0]';
t41=[0 0 1 0]';
t51=[0 0 0 1]';
t=[t11 t12 t21 t22 t31 t41 t51];
net=newff(minmax(P),[8,4],{'logsig','purelin'},'trainlm'),
net.trainParam.show = 100,
net.trainParam.epoch = 2000,
net.trainParam.goal= 1e-3,
[net,tr]=train(net,P,t),
Ptest11=[0.64 1.37 0.71 0.78]';
Ptest12=[0.68 1.31 0.64 1.31]';
Ptest13=[0.91 1.35 0.75 1.59]';
Ptest14=[0.69 1.38 0.68 0.9]';
Ptest21=[3.89 2.01 0.88 20.1]';
Ptest22=[1.65 1.66 0.9 4.48]';
Ptest23=[1.35 1.39 0.95 2.89]';
Ptest31=[8.24 2.23 0.99 2]';
Ptest41=[2.01 1.65 0.94 4.39]';
Ptest51=[0.93 1.33 0.73 1.54]';
Ptest=[Ptest11 Ptest12 Ptest13 Ptest14 Ptest21 Ptest22 Ptest23 Ptest31 Ptest41 Ptest51];
result_test = sim(net, Ptest)'