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

来源:互联网 发布:mac怎么安装搜狗 编辑:程序博客网 时间:2024/05/21 17:34

(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);

0 0
原创粉丝点击