本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
背景说明
matlab2018a一个最简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构建BP神经网络后,可以对net设置一些相关的训练参数
训练参数为可选项,可设可不设,属于个性化配置
本文介绍以下两组参数的详细说明
1. trainparam : 训练算法的相关参数
2. divideParam : 数据分割方式的相关参数
本节讲解matlab中BP神经网络trainparam与divideParam参数的设置
BP神经网络的trainParam与divideParam参数详解
trainParam参数详解
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.lambda | Hessian矩阵不确定性调节参数(缺省为5.0e-7) | trainscg |
net.trainParam.men_reduc | 控制计算机内存/速度的参量, 内存较大设为1,否则设为2(缺省为1) | trainlm |
net.trainParam.mu | u的初始值(缺省为0.001) | trainlm |
net.trainParam.mu_dec | u的减小率(缺省为0.1) | trainlm |
net.trainParam.mu_inc | u的增长率(缺省为10) | trainlm |
net.trainParam.mu_max | u的最大值(缺省为1e10) | trainlm |
PASS:trainParam参数是相对训练算法而言的,因此有些参数只针对部分训练算法哦
divideParam参数介绍
divideParam里存放的是数据分割的相关参数,只有三个,具体如下:
trainRatio、valRatio和testRatio三者之和应该为1,如果不为1,matlab会自动按占比归一
例如trainRatio、valRatio和testRatio都设为2,则实际会归一为[0.333,0.333,0.333]
BP神经网络-常用训练参数
下面是BP神经网络中的常用训练参数
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神经网络的相关训练参数的讲解了~
End