BP神经网络(检测故障的实例)



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神经网络  函数的逼近、

<span style="font-size:18px;"><span style="font-size:18px;">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,'--');
</span></span>

如果效果不好  可以对神经网络进行训练、


net.trainParam.ir=0.05;

net.trainParam.epochs=300;

net.trainParam.goal=1.0e-5;

[net tr]=train(net,p,t);



回归问题       由于神经网络可以对任意形状的函数曲线进行拟合,所以BP神经网络可以进行回归


可以用于识别   

BP神经网络对故障的检测:

<span style="font-size:18px;">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)'
</span>


  • 12
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
现有训练集数据,1000 × 7,如下: xxxxxxxxxxxxxxxxxxxx 有测试集数据,100 × 7,如下: xxxxxxxxxxxxxxxxxxxx 以上数据分别是从某系统采集的数据,  训练数据集中,分别是采集的数据和标注结果,其中1、2分别表示该系统有无故障;  测试数据集中,分别是采集的数据和真实结果,其中1、2分别表示该系统有无故障; 现在需要使用训练数据集训练BP神经网络,然后用训练好的神经网络对测试数据集进行测试,并与真实结果进行对比,最终分析出神经网络的性能。 % --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global output_test inputn_train outputn_train inputn_test ... outputps BPoutput_test xunlian_num Error input_train output_train %创建网络 %获得gui_set中值 num_yinhan=str2num(get(findobj('tag','edit_yinhan'),'string')); TF=get(findobj('tag','transfer'),'string'); %传递函数 valueTF=get(findobj('tag','transfer'),'value'); TF=TF{valueTF}; BTF=get(findobj('tag','train'),'string'); %训练函数 valueBTF=get(findobj('tag','train'),'value'); BTF=BTF{valueBTF}; BLF=get(findobj('tag','learn'),'string'); %学习函数 valueBLF=get(findobj('tag','learn'),'value'); BLF=BLF{valueBLF}; tic;%启动一个定时器 net=newff(inputn_train,outputn_train,num_yinhan,{TF},BTF,BLF); net.trainParam.epochs=str2num(get(findobj('tag','cishu'),'string')); net.trainParam.goal=str2num(get(findobj('tag','goal'),'string')); net.trainParam.lr=str2num(get(findobj('tag','rate'),'string')); net=train(net,inputn_train,outputn_train); an=sim(net,inputn_test); t=toc;%关闭定时器,获取程序运行时间 %网络输出反归一化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值