老饼讲解-神经网络 机器学习 神经网络 深度学习
BP神经网络建模
1.BP神经网络-工具箱说明
2.BP神经网络-建模代码
3.BP神经网络-训练技巧
4.BP神经网络-应用案例
5.BP神经网络-问题答疑

【详解】matlab-BP神经网络工具箱-newff、train、sim详解

作者 : 老饼 发表日期 : 2022-06-09 05:12:39 更新日期 : 2024-01-18 21:49:15
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



本文描述使用matlab神经网络工具箱训练BP神经网络的一些最常用的调用方法和参数

本文旨在说明BP神经网络工具箱的常用方法及其参数意义



   背景说明   


matlab2014b一个最简BP神经网络DEMO代码如下:
%用于训练的数据
X = linspace(-3,3,100);   
y = 10*sin(X);   

%网络训练 
net = newff(X,y,3,{'tansig','purelin'},'trainlm');
net.trainparam.goal = 0.00001;    % 设置训练误差目标
net.trainparam.epochs = 15000;    % 设置最大训练次数.
[net,tr,net_y] = train(net,X,y);  % 训练
sim_y = sim(net,X);               % 预测
可以看到,使用BP神经网络最关键的方法有以下三个
 
  👉 newff   :   构建网络          
👉 train     :   训练网络       
👉 sim       :  网络预测       
本文展示newff、train、sim这三个最关键的方法的详细说明





     01. newff方法详述    



newff用于建立一个BP神经网络,它的完整用例、参数说明如下



   newff调用方法   


newff函数的使用方法如下:
● 
完整参数:
    net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

● 完整用例:
    net = newff(X,y,3,{'tansig','purelin'},'trainlm','learngdm','mse',{'fixunknowns','removeconstantrows','mapminmax'}, {'removeconstantrows','mapminmax'},'dividerand');




   newff的出入参说明   


newff函数的出入参说明如下:
● newff
入参说明:
   P:     输入数据X,每列代表一个样本的X。
   T:   target,拟合目标,也即输出数据y,每列代表一个样本的Y。
   S:  行向量,隐节点个数,例如 [3,2]代表两个隐层,第一个隐层3个神经元,第2个隐层2个神经元。
   TF:Transfer function,传递函数(激活函数), {'tansig','purelin'} 代表只有一个隐层,隐层传递函数为tansig,输出层传递函数为purelin.注意,要与S对齐。
   BTF: Backprop network training function,训练函数,默认用'trainlm'
   BLF:   Backprop learning function,反向传播权重/阈值 学习函数,默认learngdm.(adapt时调用,一般不需用到)
   PF:     Performance function,性能函数,即误差函数,默认为均方差'mse',可选:mse,sse,mae,sae(均方差,总方差,均绝对差,总绝对差),trainlm只支持mse,sse
   IPF:    input processing functions,输入处理函数,默认{'fixunknowns','removeconstantrows','mapminmax'}
   OPF:output processing functions,输出处理函数,默认 {'removeconstantrows','mapminmax'}
   DDF:Data division function,数据分割函数,默认值'dividerand',即随机分割。


●  newff出参说明:
   net:训练好的网络 




    关于newff参数的特别说明    


关于newff的训练方法
newff的训练方法只推荐两种:
数据量小,内存够时,用'trainlm',
数据量大,trainlm不能用时,用'trainscg'
trainlm为Levenberg-Marquardt方法,会利用二阶导信息,trainscg则为量化共轭梯度法
关于newff的数据处理函数
mapminmax:将数据按最小最大值线性缩放到[-1,1],即2(x - min(x))/(max(x) - min(x))-1,
removeconstantrows:删除 常数变量
fixunknowns:处理NaN数据





     02. train方法详述    



train函数用于对BP神经网络进行训练,下面讲解train函数的出入参和工作流程



    train的调用方法与出入参说明     


train函数的调用方法如下:
 
train支持多种参数格式,最常用的是: [net,tr,out_T] = train(net,P,T);
train函数的出入参详细说明如下:
 
 👉1. train的入参说明:                                                                  
    net:需要训练的网络                                                       
   P   :用于训练的输入数据                                               
   T   :用于训练的输出数据                                               
 👉2. train的出参说明:                                                                 
   net:训练好的网络                                                        
   tr   :训练过程                                                              
   out_T:网络对训练数据的预测                                       



   train函数的工作流程   


调用train函数,train函数则会执行如下三部分工作:
👉1. 数据处理                                                                               
train函数就会将X进行数据预处理(例如归一化),           
并将数据分割成三分:训练数据,验证数据和测试数据  
 👉2. 模型训练                                                                                
数据分割完成后,train利用训练数据对net进行训练,   
使用的训练方法为net里设置的训练函数(例如trainlm)   
                                                                                           并且在训练的过程,用验证数据不断检验训练是否走向过拟合,如果走向过拟合,就终止训练                                    
 👉3. 返回结果                                                                                
                                        训练完成后,train输出训练好的网络、训练过程和训练好的BP神经网络的预测结果
                                                 其中,哪些样本属于训练数据,哪些属于测试数据,可以在train输出的训练过程中找到,
   例如tr.testInd就是测试数据的索引                   





     03. sim方法详述    



sim用于BP神经网络的预测,下面讲解sim的使用方法



     sim的调用方法与出入参说明    


sim函数的调用方法如下:
sim的使用方法:
sim_y = sim(net,X)
sim函数的入参出参说明如下:
 
👉1. sim函数的入参说明:                                                            
 net  : 用于预测的网络                                                    
       X    : 需要预测的数据(X为矩阵格式 ,每列代表一个样本) 
 👉2. sim函数的 出参说明:                                                           
 
sim_y  : 网络的预测结果                                                





    03. BP的常用训练参数     



本节展示一些BP神经网络常用的训练参数及说明



      BP神经网络的常用训练参数     


在用newff构建BP神经网络后,可以对net设置一些相关的训练参数,
训练参数为可选项,可设可不设,属于个性化配置
 常用的训练参数如下:

net.trainparam.goal       = 0.00001;     % 训练目标:均方误差低于0.0001
net.trainparam.show       = 400;         % 每训练400次展示一次结果
net.trainparam.epochs     = 15000;       % 最大训练次数:15000.
net.divideParam.trainRatio= 0.7;         % 用于训练的数据比例
net.divideParam.valRatio  = 0.15 ;       % 用于验证过拟合的数据比例
net.divideParam.testRatio = 0.15;        % 用于比例
net.trainparam.max_fail   = 6;           % 过拟合验证失败次数






好了,以上就是matlab中BP神经网络的newff、train、sim函数的详细解释了~







 End 








联系老饼