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

                                                       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即可。

  • 7
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: MATLAB中的BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。它能够学习和存储大量的输入-输出模式映射关系,而无需事先揭示描述这种映射关系的数学方程。BP神经网络模型的拓扑结构包括输入层、隐层和输出层。\[1\]在MATLAB中,可以使用相关的函数和工具箱来构建和训练BP神经网络。例如,可以使用newff函数来创建一个BP网络,并使用train函数来训练网络。通过调整网络的权值和阈值,使网络的误差平方和最小化。\[2\]BP神经网络的训练过程中,可以设置一些参数,如学习率、最大训练次数和训练要求的精度。训练完成后,可以使用sim函数来进行网络的仿真。\[2\]BP神经网络的特点是根据误差的反向反馈改善信号传播,类似于最小二乘法的一种思想。\[3\] #### 引用[.reference_title] - *1* *2* [Matlab代码实践——BP神经网络](https://blog.csdn.net/weixin_41213648/article/details/96119482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [BP神经网络理解及其MATLAB实现](https://blog.csdn.net/wmz_Gavin/article/details/128706481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值