基于Matlab的BP神经网络编程过程

(1)对样本集进行归一化
确定输入样本和输出样本,并对它们进行归一化,将输入和输出样本变换到(0.1,0.9)区间,由于Matlab的归一化函数premnmx把数据变换到(-1,1)之间,所以可使用自编premnmx2归一化函数。
(2)创建BP神经网络
在样本集确定之后,即可进行网络的结构设计,在Matlab中一般使用newff创建函数,它不但创建了网络对象,还自动初始化网络的权重和阈值。如果需要重新初始化网络权重和阈值,可以使用Init函数。
关键语句如下:
net=newff(输入样本的取值范围,[网络各层的神经元数目],{网络各层神经元的激活函数},‘训练函数',‘学习函数’,‘性能函数’)
一般选用三层BP网络,输入层、输出层的神经元个数根据具体情况确定,而隐层神经元个数目前多采用经验的方法确定。
(3)设置网络的训练参数
net.trainParam.epochs―最大收敛次数;
net.trainParam.goal―收敛误差;
net.trainParam.show―显示间隔;
以上在一般的神经网络训练中都有使用,如果使用Levenberg-Marquart优化算法进行训练,还需设置的参数有:
net.trainParam.mu―Levenberg-Marquart优化算法中的 
net.trainParam.mu_dec― 的缩减因子;
net.trainParam.mu_inc― 的增大因子;
net.trainParam.mu_max― 的最大值;
net.trainParam.min_grad―性能函数的最小梯度;
(4)训练BP网络
关键语句为:net=train(net,p,t)
(6)训练成功,相关结果输出。

[b]编程过程[/b]
下面是一个以 [i]LM优化算法[/i]为训练函数的BP神经网络:

[S0,Q]=size(P);      % P的行数必须为6
S1=7;       % 7个隐含层神经元个数
S2=2;       % 2个输出经元个数

%   BP神经网络训练参数设置
net=newff(minmax(P),[S1,S2],{'logsig','logsig'},'trainlm');
net.trainParam.epochs=200000;
net.trainParam.goal=1e-30;
net.trainParam.min_grad=1e-15;
net.trainParam.mu=10;
net.trainParam.mu_dec=0.2;
net.trainParam.mu_inc=1.2;
net.trainParam.mu_max=1e15;
net.trainParam.show=100;

%   训练神经网络
[net,tr]=train(net,P,T);

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值