Matlab代码实践——BP神经网络

发布时间:2024-11-12 23:14

                                                       1、什么是BP神经网络

BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

                                                            2、BP网络构建

这里写图片描述

                                                      3、BP网络的训练函数

这里写图片描述

                                                 4、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工具箱结果解释

这里写图片描述

                                                        7、[Matlab]例2

利用三层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
论网络时代的大学生心理健康教育
武汉网络安全知识,保护个人信息安全,共建网络文明
经络是什么 经脉+络脉=经络 经脉和络脉的区别

随便看看