Matlab训练BP神经网络的一般步骤

article/2025/10/8 16:09:47

目录

  • 1 网络创建、训练与仿真函数
    • 1.1 网络创建:newff
    • 1.2 网络训练:train
    • 1.3 仿真预测:sim
    • 1.4 网络保存及加载:save、load
  • 2 其他函数
    • 2.1 数据归一化:mapminmax
      • 2.1.1 归一化
      • 2.1.2 “应用”归一化
      • 2.1.3 “反”归一化
    • 2.2 网络训练算法
    • 2.3 提高网络的泛化能力
      • 2.3.1 贝叶斯归一化法:trainbr
      • 2.3.2 提前终止法
  • 3 一个完整例子
  • 4 参考文献

  BP神经网络的算法原理可参考各种书籍(如《西瓜书》、《神经网络模型及其MATLAB仿真程序设计》等)或者博客(如 《零基础入门深度学习(3) - 神经网络和反向传播算法》等),本文不再赘述—— 本文力求使用Matlab工具箱函数快速搭建BP神经网络模型并用于实战!

1 网络创建、训练与仿真函数

1.1 网络创建:newff

  Matlab中使用 net=newff(PR,[S1,S2,...],{TF1,TF2,...},BTF,BLF,PF); 创建BP神经网络,各参数的含义如下:

  1. net:创建的BP网络(结构体)。
  2. PR:输入样本范围(R,2),R为特征数。通常以minmax获取;
  3. [S1,S2,...]:隐层、输出层神经元数;
  4. [TF1,TF2,...]:激活(传输)函数(如tansig(logsig),purelin,poslin(ReLU));
  5. BTF:网络训练函数(default=traingdx);
  6. BLF:网络学习函数(default=learngdm);
  7. PF:网络性能函数(default=mse)。

1.2 网络训练:train

  Matlab中使用 [net,tr,Y,E,Pf,Af]=train(net,P,T,Pi,Ai,VV,TV); 训练网络,各参数的含义如下:
  1. net:训练后的BP网络;
  2. tr:训练记录,如训练次数net.epoch、训练误差性能net.perf等;
  3. Y:网络输出(S*Q神经元数*样本数);
  4. E:网络误差;
  5. Pf:最终输入延迟;
  6. Af:最终层延迟。
  7. net :BP网络模型;
  8. P:输入(R*Q特征数*样本数);
  9. T:期望(或输出。S*Q,即神经元数*样本数);
  10. Pi:初始输入延迟;
  11. Ai:初始层延迟;
  12. VV:验证集(结构体);
  13. TV:测试集(结构体)。

1.3 仿真预测:sim

  Matlab中使用 [Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T); 仿真预测,各参数含义如下:
  1. Y:拟合或预测值(S*Q);
  2. Pf:最终输入延迟;
  3. Af:最终层延迟;
  4. E:网络误差(S*Q);
  5. perf:网络性能。
  6. net:BP网络模型;
  7. P:拟合或预测输入;
  8. Pi:初始输入延迟;
  9. Ai:初始层延迟;
  10. T:拟合或预测期望。

1.4 网络保存及加载:save、load

  Matlab中使用 save 'E:\Matlab Codes\netName' net; 保存网络模型(网络训练完毕之后);使用 load 'E:\Matlab Codes\netName' net; 加载网络模型(加载训练好的模型进行仿真预测)。

2 其他函数

2.1 数据归一化:mapminmax

2.1.1 归一化

  将X每行数据归一化至YMIN,YMAX之间:[Y,PS] = mapminmax(X,YMIN,YMAX)。其中,Y为归一化结果,PS为归一化信息(结构体);YMIN,YMAX为每行的范围。也可将YMIN,YMAX构造为结构体FP(即FP.YMIN,FP.YMAX)。示例如下:

在这里插入图片描述

2.1.2 “应用”归一化

  将X按归一化信息PS(结构体)进行归一化:Y = mapminmax('apply',X,PS)。其中,Y为归一化结果;PS为归一化信息。此用法一般用来 按归一化训练数据方式归一化测试数据 。示例如下:

在这里插入图片描述

2.1.3 “反”归一化

  将Y按归一化信息PS(结构体)进行 反归一化X = mapminmax(‘reverse’,Y,PS)。其中,X为反归一化结果;PS为归一化信息。此用法一般用来 反归一化网络拟合或预测结果 。示例如下:

在这里插入图片描述

2.2 网络训练算法

  Matlab工具箱中的BP网络训练算法可按如下原则选取:
  ①中等网络(数百权值)、函数逼近、最大存储空间:LM算法(trainlm)
  ②模式识别、(最小)存储空间较小:弹性BP算法(trainrp)
  ③问题普适(拟合或分类)、大型网络、较小存储空间:变梯度SCG算法(trainscg)
  ④某些问题有效、速度较慢、最小存储空间:变学习率算法(traingdx、traingda)
  详情可参考:周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M].北京:清华大学出版社,2005.

2.3 提高网络的泛化能力

2.3.1 贝叶斯归一化法:trainbr

  使用贝叶斯归一化法可 自动修正网络误差性能函数(自适应误差性能调整率) ,使网络获得较小的权值(W)和阈值(b),从而迫使网络响应趋于平滑,减小 “过适配”
  贝叶斯归一化法使用方式为:net=newff(PR,[S1,S2,...],{TF1,TF2,...},trainbr,BLF,PF);,其收敛停机条件为:Maximum MU reached或者SSE(平方和误差)和SSW(平方和权值)基本不再变化。示例如下:

clc;clear;
% 样本数据
p_train=-pi:0.1:pi;
sinCurve=sin(p_train);
t_train=sin(p_train)+0.1*rand(size(p_train));
% 网络创建
net=newff(minmax(p_train),[15,1],{'tansig','purelin'},'traingd'); %最速下降BP算法
net.trainParam.show=50; %显示训练过程
net.trainParam.lr=0.01; %学习率
net.trainParam.epochs=1000; %最大迭代次数
net.trainParam.goal=1.0e-5; %性能目标
% 网络训练
[net,tr]=train(net,p_train,t_train);
% 网络仿真
t_sim=sim(net,p_train);
% 结果展示
plot(p_train,t_train,'b*',p_train,t_sim,'r-',p_train,sinCurve,'k:');
legend('实际值','拟合值','sin曲线');

  拟合结果如下:

在这里插入图片描述

  使用 贝叶斯归一化法 训练网络,其拟合结果为:

在这里插入图片描述

  由图可知,后者的泛化能力更强,网络未出现过拟合现象。

2.3.2 提前终止法

  提前终止法的本质是 交叉验证 。将原始样本数据分成 训练集验证集(或测试集),在训练初始阶段,验证集误差正常地减小,也即训练集的误差;而在网络开始出现“过适配”时,验证集误差开始增加,当其连续增加的次数达到指定的迭代次数时,训练便被终止。此时,网络返回具有最小验证集误差的权值和阈值(偏置)。
  提前终止法示例如下:

clc;clear;
% 样本数据
p_train=-1:0.05:1; %训练集
t_train=sin(2*pi*p_train)+0.1*rand(size(p_train));
sinCurve=sin(2*pi*p_train);
val.P=-0.975:0.05:0.975; %验证集
val.T=sin(2*pi*val.P)+0.1*rand(size(val.P));
% 网络创建
net=newff(minmax(p_train),[20,1],{'tansig','purelin'},'traingdx'); %学习率可变的动量BP算法
net.trainParam.show=25; %显示训练过程
net.trainParam.epochs=300; %最大迭代次数
% 网络训练
net=init(net);
[net,tr]=train(net,p_train,t_train,[],[],val);
% 网络仿真
t_sim=sim(net,p_train);
% 结果展示
plot(p_train,t_train,'b*',p_train,t_sim,'r-',p_train,sinCurve,'k:');
xlabel('x');ylabel('y')
legend('实际值','拟合值','sin曲线');

  结果如下:
在这里插入图片描述

  由图可知,网络可有效地避免“过适配”现象。

3 一个完整例子

clc;clear;%%1)训练测试数据(特征数R*样本数Q)
P_train=[-1,-1,2,2,4;0,5,0,5,7]; %R*Q
[PN_train,ps_input]=mapminmax(P_train,-1,1); %训练输入归一化
T_train=[-1,-1,1,1,-1]; %S*Q
[TN_train,ps_output]=mapminmax(T_train,-1,1);
P_test=[-1,-1,2,2,4;0,5,0,5,7];
PN_test=mapminmax('apply',P_test,ps_input); %测试输入归一化
T_test=[-1,-1,1,1,-1];%%2)构建网络并设置训练参数
%net=newff(PR,[S1,S2,...],{TF1,TF2,...},BTF,BLF,PF); %输入样本范围(R,2);隐层、输出层神经元数;激活(传输)函数;网络训练函数(traingdx);网络学习函数(learngdm);性能函数(mse)
%1)TF:tansig(logsig),purelin,poslin(ReLU)2)BTF:trainlm(中等网络函数逼近/存储空间大),traingdx、traingda(某些问题有效/速度慢),trainscg(大型网络通用),trainrp(模式识别),trainbr(贝叶斯归一化法提高泛化能力)
net=newff(minmax(PN_train),[5,1],{'tansig','purelin'},'traingdx');
net.trainParam.show=50; %显示训练过程
net.trainParam.lr=0.05; %学习率
net.trainParam.epochs=300; %最大迭代次数
net.trainParam.goal=1.0e-5; %性能目标%%3)网络训练
%[net,tr,Y,E,Pf,Af]=train(net,P,T,Pi,Ai,VV,TV); %1)网络,训练记录(epoch,perf),网络输出,网络误差,最终输入延迟,最终层延迟;2)网络,输入,期望,初始输入延迟,初始层延迟,确认样本结构([]),测试样本结构([][net,tr]=train(net,PN_train,TN_train);
%save 'E:\Matlab Codes\netName' net; %保存网络%%4)训练结果:T=TF2(W2*TF1(W1*P+B1)+B2)
W1=net.IW{1,1}; %输入层到隐层权值
B1=net.b{1,1}; %隐层神经元偏置(阈值)
W2=net.LW{2,1}; %隐层到输出层权值
B2=net.b{2,1}; %输出层神经元偏置%%5)网络仿真预测
%[Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T); %1)网络拟合/预测值,最终输入延迟,最终层延迟,网络误差,网络性能;2)网络,预测输入,初始输入延迟,初始层延迟,预测期望
%load 'E:\Matlab Codes\netName' net; %加载网络
TN_sim=sim(net,PN_test);
T_sim=mapminmax('reverse',TN_sim,ps_output); %测试结果反归一化%%6)结果展示
plotperform(tr); %训练性能
testNumber=length(T_test);
plot(1:testNumber,T_sim,'ro',1:testNumber,T_test,'b-');

4 参考文献

  1. 周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M].北京:清华大学出版社,2005.
  2.丛爽.面向MATLAB工具箱的神经网络理论与应用[M].合肥:中国科学技术大学出版社,2009.


http://chatgpt.dhexx.cn/article/khjcTMQA.shtml

相关文章

Matlab 坐标轴中的希腊字母

MATLAB中可以使用的一些命令,在坐标轴中可以显示希腊字母。 但是有些字母可能找不到,或者MATLAB已经不支持,如\varepsilon,所以就需要使用字符编码来实现 一些特殊字符的编码如下: >> char([900:1000]) ans …

【Matlab】在Matlab中输入希腊字母

分为两种情况: 1、画图时在图中输出希腊字母 希腊字母等特殊字符用 ‘ \加拼音’ 表示,拼音首字母大小写表示希腊字母的大小写 示例代码: figure(1); clf; title(\alpha); xlabel(\beta); ylabel(\Gamma); 绘制图像如下: 2、…

matlab中特殊字符/希腊字母的输出

来源:具体可参考MATLAB的帮助文档,搜索关键词:Text Properties 参考链接 手动搬运了一些特殊字符的表达式,留着自己看的,大家可以看个热闹。。。 字符表 Character SequenceSymbolCharacter SequenceSymbolCharacter…

MATLAB 常见希腊字母表示

MATLAB 常见希腊字母表示

Matlab绘图中下标、斜体及希腊字母的使用方法

转载▼ 转自:http://blog.sina.com.cn/s/blog_636a8b120100i7dk.html 下面是Matlab官方列出来的Tex代码列表,包含了绝大部分的希腊字母和数学符号。 Character Sequence Symbol Character Sequence Symbol Character Sequence Symbol \alpha…

matlab如何在坐标轴上显示希腊字母pi呢?

matlab如何在坐标轴上显示希腊字母pi呢? 第一,将这些位置指定为一个由递增值组成的向量。这些值无需等距。 第二,还要更改关联的标签。并用一个字符向量元胞数组来指定刻度标签。要在标签中包含特殊字符或希腊字母 , 可使用 TeX …

Latex希腊字母、特殊符号汇总表

Latex中希腊字母、特殊符号汇总表 Latex中希腊字母、特殊符号汇总表 Latex中希腊字母、特殊符号汇总表一、小写希腊字母、特殊符号二、大写希腊字母三、希腊字母斜体 原创不易,路过的各位大佬请点个赞 一、小写希腊字母、特殊符号 二、大写希腊字母 三、希腊字母斜…

Matlab中图文本中的希腊字母和特殊字符

目录 包含希腊字母 包含上标和注释 TeX 标记选项 包含 LaTeX 行间数学公式的文本 可以使用 TeX 标记向图中添加包含希腊字母和特殊字符的文本。此外,还可以使用 TeX 标记添加上标、下标以及修改文本类型和颜色。默认情况下,MATLAB 支持一部分 TeX 标…

Matlab中下标,斜体,及希腊字母的使用方法

下面是Matlab官方列出来的Tex代码列表,包含了绝大部分的希腊字母和数学符号。 Character Sequence Symbol Character Sequence Symbol Character Sequence Symbol \alpha α \upsilon υ \sim ~ \beta β \phi Φ \leq ≤ \gamma γ \chi χ …

如何在MATLAB中输入希腊字母

文档中的Text Properties: 下标用 _(下划线) 上标用^ (尖号) 斜体 \it 黑体 \bf; 比如在坐标轴的[0.5 0.5]位置上要显示δ字符,那么可以直接输入text(0.5,0.5,’\delta’) 如果需要显示大写希腊字符的话,那直接将首…

Matlab 颜色、线型、标记符号和希腊字母表

文章目录 1、颜色、线型、标记符号2、希腊字母表3、颜色深究 参考: Matlab画图常用的线条符号、颜色:https://blog.csdn.net/sinat_21026543/article/details/80215281 利用matlab构建自己的colormap(色彩搭配):https:…

【MATLAB】在matlab绘图中如何输入希腊字母

写作时间:2020-10-31 正文: 在matlab绘图中如何输入希腊字母 matlab中用转义符来输入希腊字母的方法: 希腊字母等特殊字符用zhi \加拼音, 如: α \alpha, βdao \beta、 γ \gamma, θ \thet…

LATEX以及宏包的下载和安装(附下载链接)

LATEX以及宏包的下载和安装(附下载链接) TexStudio以及宏包下载和安装 LATEX以及宏包的下载和安装(附下载链接) 1. 环境下载2. 环境安装2.1 MiKTeX安装2.2 TexStudio的安装 3. 配置&写作 1. 环境下载 下载环境我上传到了网盘,点击此处可以直接下载。 2. 环境安…

如何安装LaTeX

参考 https://zhuanlan.zhihu.com/p/56982388 下载安装 官网:https://www.tug.org/texlive/ 好的,现在已经下载完成了,下载下来的是这样的一个文件 选中这个文件,鼠标右键解压 然后会得到解压之后的文件 然后就会出现下面的这…

01 LaTex之安装宏包

问题情况: 缺少:undertlide.sty 包 下载官网(在该官网下载所需安装包即可):CTAN: /tex-archive/macros/latex/contrib 1.下载好宏包后,解压,如果里面有我们缺少的sty文件跳过该步骤&#xff0…

Latex安装与使用

LaTeX概览 摘自维基百科: LaTeX, 是一种基于TEX的排版系统,由美国电脑学家莱斯利兰伯特在20世纪80年代初期开发,利用这种格式,即使用户没有排版和程序设计的知识也可以充分发挥由TEX所提供的强大功能,能在…

LaTeX下载安装-1

下载:https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ 清华大学的镜像。 下载这个就可以;下载完后到dos命令里面检验下安装是否成功 不知道dos命令的到这里dos命令 然后就是编写一个程序试试把, 在dos命令里面mkdir te…

【LaTeX】下载及安装步骤

一、TeX Live下载 进入TeX Live官网(http://tug.org/texlive/),点击on DVD 点击downloading the TeX Live iso image and burning your own DVD 选择最近的镜像网站 选择.iso 文件下载,文件大小3G,选择网络好的进…

LaTex下载安装详解

LaTex下载安装详解 LaTex下载安装详解。 1 下载地址 镜像地址 下载好的网盘链接如下 链接:https://pan.baidu.com/s/11fVS4VtBgCNeHruimeN4cQ?pwd8ays 提取码:8ays 2 安装 2.1 将下载好的文件解压2.2 以管理员身份运行 2.3 安装路径可修改&#xff0…

Latex下载安装配置

LaTeX下载安装配置 1.何为LaTeX?1)百度百科2) 维基百科3) 本质4)推荐阅读材料:来自北京大学李东风老师的LaTeX排版心得 2.LaTeX配置1)LaTeX类型2)选择3)TeXLive的配置安装4)TeXStudio的配置安装 3.LaTeX入门4.几个LaTeX推荐网站5.…