BP神经网络的基本应用
BP神经网络工具箱使用说明
【详解】matlab-BP神经网络工具箱-训练参数详解
作者 : 老饼 日期 : 2022-06-09 05:17:53 更新 : 2022-10-28 02:38:32
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


   背景说明   


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);               % 预测
可以看到,在调用newff初始化网络之后,
通过net.xxx.xxx可以设置一些训练参数
本文介绍以下两组参数的详细说明
 
👉 trainparam     :   训练算法的相关参数         
👉 divideParam   :  数据分割方式的相关参数     





    01. BP神经网络参数详解   



    trainParam参数详解     


trainParam里存放的是面向训练算法的一系列参数,
以下是所有的可设参数
参数名称解释适用方法
net.trainParam.epochs最大训练次数(缺省为10)全部
net.trainParam.goal训练要求精度(缺省为0)全部
net.trainParam.lr学习率(缺省为0.01)全部
net.trainParam.max_fail最大失败次数(缺省为5)全部
net.trainParam.min_grad最小梯度要求(缺省为1e-10)全部
net.trainParam.show显示训练迭代过程(NaN表示不显示,缺省为25)全部
net.trainParam.time最大训练时间(缺省为inf)全部
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.lambdaHessian矩阵不确定性调节参数(缺省为5.0e-7)trainscg
net.trainParam.men_reduc控制计算机内存/速度的参量,
内存较大设为1,否则设为2(缺省为1)
trainlm
net.trainParam.muu的初始值(缺省为0.001)trainlm
net.trainParam.mu_decu的减小率(缺省为0.1)trainlm
net.trainParam.mu_incu的增长率(缺省为10)trainlm
net.trainParam.mu_maxu的最大值(缺省为1e10)trainlm
 ✍️PASS:trainParam参数是相对训练算法而言的,因此有些参数只针对部分训练算法哦




    divideParam参数介绍     


                       

divideParam里存放的是数据分割的相关参数,只有三个
参数名称解释默认值
net.divideParam.trainRatio用于训练的数据比例0.7
net.divideParam.valRatio用于验证过拟合的数据比例0.15
net.divideParam.testRatio用于测试的数据比例 0.15
✍️说明
 trainRatio、valRatio和testRatio三者之和应该为1,
如果不为1,matlab会自动按占比归一,
例如trainRatio、valRatio和testRatio都设为2,则实际会归一为[0.333,0.333,0.333]





  02. 常用训练参数  


下面是常用的训练参数


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;           % 过拟合验证失败次数





 End 








联系老饼