前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BP神经网络续1

BP神经网络续1

作者头像
瓜大三哥
发布2018-02-26 15:55:55
1.1K0
发布2018-02-26 15:55:55
举报
文章被收录于专栏:瓜大三哥瓜大三哥

一、BP网络中的函数

1.创建函数

1) cascadeforwardnet函数

cascadeforwardnet(hiddenSizes,trainFcn)

其中参数hiddenSizes为隐含层神经元节点的个数,如果有多个隐含层,则hiddenSizes是一个行向量,默认值为10;参数trainFcn为训练函数(默认值为trainlm)。

2) feedforwardnet(hiddenSizes,trainFcn)

3) newff函数

4) newcf函数

2.传递函数

1) logsig函数

A = logsig(N,FP):N为SxQ维的网络输入(列)向量,FP为性能参数

dA_dN = logsig(‘dn’,N,A,FP)

返回A关于N的导数dA_dN,如果A或FP没有给出,则FP返回默认参数

2) tansig函数

3) purelin函数

该函数为线性传递函数

3.学习函数

1) learngd函数

2) learngdm函数

4.训练函数

1) trainbfg函数

准牛顿BP算法

2) traingd函数

该函数为负梯度下降BP算法函数

3) traindm函数

该函数为负梯度下降动量BP算法函数

5.性能函数

perf = msereg(E,Y,X,FP)

参数E表示误差矩阵或向量(E=T-Y,T表示网络的目标向量);Y为网络的输出向量;X为所有权值和阈值的向量;FP表示性能参数;返回参数perf为平均绝对误差

6.显示函数

1) plotperf函数

用于绘制一个单独神经元的额误差曲面

plotperf(tr,goal,name,epoch)

其中tr为网络训练记录;参数goal为性能目标,默认值为NaN;参数name为训练函数名称,默认为空;参数epoch为训练步数,默认训练记录的长度。

2) errsurf函数

errsurf(P,T,WV,BV,F)

P为输入行向量,T为目标行向量;WV为权值列向量;BV为阈值列向量;F为函数名字

3) plotes函数

plotes(WV,BV,ES,V)

其中,参数WV为权值的N维列向量;参数BV为M维的阈值行向量;参数ES为误差向量组成的MxN维矩阵;参数V为视角,默认为[-37.5,30]

4) plotep函数

H = plotep(W,B,E)

参数W为当前权值;参数B为当前阈值;参数E为当前神经元的输入误差

二、BP神经网络的应用

1.分类

代码语言:js
复制
p=[1 2;-1 1;-2 1;-4 0]';
t=[0.2 0.8 0.8 0.2];
net=newff([-1 1;-1 1],[5 1],{'logsig','logsig'},'traingd');
net.trainParam.goal = 0.001;
net.trainParam.epochs = 5000;
[net,tr]=train(net,p,t);
iw1=net.iw{1}
ib1=net.b{1}
iw2=net.iw{2}
ib2=net.b{2}
save li3_27 net;
load li3_27 net;
p1=[1 2;-1 1;-2 1;-4 0]';
a2=sim(net,p1)
disp('输出分类结果为:')
a2=a2>0.5

2.BP网络去除噪声

代码语言:js
复制
clear all;
[alphabet,targets]=prprob;
[R,Q]=size(alphabet);
[S2,Q]=size(targets);
S1=10;
P=alphabet;
net=newff(minmax(P),[S1 S2],{'logsig','logsig'},'traingdx');
net.LW{2,1}=net.LW{2,1}*0.01;
net.b{2}=net.b{2}+0.01;
% 无噪声训练
T=targets;
net.performFcn='sse';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.95;
[net,tr]=train(net,P,T);
% 有噪声训练
netn=net;
netn.trainParam.goal=0.6;
netn.trainParam.epochs=300;
T=[targets targets targets targets];
for pass=1:10
    P=[alphabet,alphabet,(alphabet+rand(R,Q)*0.1),(alphabet+randn(R,Q)*0.2)];
        [netn,tr]=train(netn,P,T);
end
% 再次进行无噪声训练,为了使得网络得到理想信号
netn.trainParam.goal=0.1;
netn.trainParam.epochs=5000;
netn.trainParam.show=5;
P=alphabet;
T=targets;
% [net,tr]=train(netn,P,T);
% 系统性能
noise_range=0:0.05:0.5;
max_test=100;
network1=[];
network2=[];
T=targets;
for noiselevel=noise_range
    errors1=0;
    errors2=0;
 for i=1:max_test
        P=alphabet+randn(35,26)*noiselevel;
        A=sim(net,P);
        AA=compet(A);
        errors1=errors1+sum(sum(abs(AA-T)))/2;
        An=sim(netn,P);
        AAn=compet(An);
        errors2=errors2+sum(sum(abs(AA-T)))/2;
 end
    network1=[network1 errors1/26/100];
    network2=[network2 errors2/26/100];
end
plot(noise_range,network1*100,'--',noise_range,network2*100);
xlabel('噪声指标');
ylabel('无噪声训练 -- 有噪声训练 ---');
legend('无噪声训练网络','有噪声训练');
% 对训练的网络进行仿真
noisyA=alphabet(:,1)+randn(35,1)*0.2;
figure;
plotchar(noisyA);
A2=sim(net,noisyA);
A2=compet(A2);
answer=find(compet(A2)==1);
figure;plotchar(alphabet(:,answer));
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、BP网络中的函数
    • 1.创建函数
      • 2.传递函数
        • 3.学习函数
          • 4.训练函数
            • 5.性能函数
              • 6.显示函数
                • 二、BP神经网络的应用
                  • 1.分类
                • 2.BP网络去除噪声
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档