Matlab代码实践——BP神经网络
1、什么是BP神经网络
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
2、BP网络构建1.训练参数 2.参数介绍 3.训练函数
net.trainParam.epochs 最大训练次数(缺省为10) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.goal 训练要求精度(缺省为0) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.lr 学习率(缺省为0.01) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.max_fail 最大失败次数(缺省为5) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.min_grad 最小梯度要求(缺省为1e-10) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.show 显示训练迭代过程(NaN表示不显示,缺省为25) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm
net.trainParam.time 最大训练时间(缺省为inf) traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、 trainbfg、trainoss、trainlm
net.trainParam.mc 动量因子(缺省0.9) traingdm、traingdx
net.trainParam.lr_inc 学习率lr增长比(缺省为1.05) traingda、traingdx
net.trainParam.lr_dec 学习率lr下降比(缺省为0.7) traingda、traingdx
net.trainParam.max_perf_inc 表现函数增加最大比(缺省为1.04) traingda、traingdx
net.trainParam.delt_inc 权值变化增加量(缺省为1.2) trainrp
net.trainParam.delt_dec 权值变化减小量(缺省为0.5) trainrp
net.trainParam.delt0 初始权值变化(缺省为0.07) trainrp
net.trainParam.deltamax 权值变化最大值(缺省为50.0) trainrp
net.trainParam.searchFcn 一维线性搜索方法(缺省为srchcha) traincgf、traincgp、traincgb、trainbfg、trainoss
net.trainParam.sigma 因为二次求导对权值调整的影响参数(缺省值5.0e-5) trainscg
net.trainParam.lambda Hessian矩阵不确定性调节参数(缺省为5.0e-7) trainscg
net.trainParam.men_reduc 控制计算机内存/速度的参量,内存较大设为1,否则设为2(缺省为1) trainlm
net.trainParam.mu 的初始值(缺省为0.001)
trainlm
net.trainParam.mu_dec 的减小率(缺省为0.1)
trainlm
net.trainParam.mu_inc 的增长率(缺省为10)
trainlm
net.trainParam.mu_max 的最大值(缺省为1e10)
trainlm
5、[Matlab]例1输入:P=[-1 -1 2 2 4;0 5 0 5 7];
输出:T=[-1 -1 1 1 -1];
代码
clear;
clc;
P=[-1 -1 2 2 4;0 5 0 5 7];
T=[-1 -1 1 1 -1];
%利用minmax函数求输入样本范围
net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');
net.trainParam.show=50; %显示训练迭代过程
net.trainParam.lr=0.05; %学习率
net.trainParam.epochs=300; %最大训练次数
net.trainParam.goal=1e-5; %训练要求精度
[net,tr]=train(net,P,T); %网络训练
W1= net.iw{1, 1} %输入层到中间层的权值
B1 = net.b{1} %中间各层神经元阈值
W2 = net.lw{2, 1} %中间层到输出层的权值
B2 = net.b{2} %输出层各神经元阈值
sim(net,P) %利用得到的神经网络仿真
6、matlab工具箱结果解释利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
样本数据:
代码
看到期望输出的范围是[-1, 1] ,所以利用双极性Sigmoid函数作为转移函数。
clear;
clc;
X=-1:0.1:1;
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
figure;
plot(X,D,'*'); %绘制原始数据分布图(附录:1-1)
net = newff([-1 1],[5 1],{'tansig','tansig'});
net.trainParam.epochs = 100; %训练的最大次数
net.trainParam.goal = 0.005; %全局最小误差
net = train(net,X,D);
O = sim(net,X);
figure;
plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:1-2、1-3)
V = net.iw{1,1}%输入层到中间层权值
theta1 = net.b{1}%中间层各神经元阈值
W = net.lw{2,1}%中间层到输出层权值
theta2 = net.b{2}%输出层各神经元阈值
输出图像
另外本人还开设了个人公众号:JiandaoStudio ,会在公众号内定期发布行业信息,以及各类免费代码、书籍、大师课程资源。
扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!
例如:想获得Python入门至精通学习资料,请回复关键词Python即可。
网址:Matlab代码实践——BP神经网络 https://www.yuejiaxmz.com/news/view/61413
相关内容
【Matlab学习手记】BP神经网络数据预测Matlab 透视变换原理 代码实现
matlab编程实现美图秀秀,图像配准技术及其MATLAB编程实现源码及自己测试M文件...
MATLAB图像处理(包括图像类型转换)
基于java的网吧管理系统答辩PPT.pptx资源
对matlab中的sparse()深刻理解
PCA (主成分分析)详解 (写给初学者) 结合matlab
论网络时代的大学生心理健康教育
武汉网络安全知识,保护个人信息安全,共建网络文明
经络是什么 经脉+络脉=经络 经脉和络脉的区别