目录
老饼讲解:一步一步上手学习

【说明】matlab-BP训练参数-说明

作者 : 老饼 发表日期 : 2025-11-25 00:08:43 更新日期 : 2026-05-14 22:28:19
老饼讲解-简单易懂,干货满满,爽过嗦螺!


在训练BP神经网络之前,我们都会设置相关的训练参数,那么matlab一共提供了哪些训练参数来供我们设置呢?这里我们来展示一下可以设置的参数分别有哪些,以及它们的默认值。

前言

在matlab中,用newff构建BP神经网络后,我们可以对net设置一些训练参数,再对模型进行训练。如下:

X = linspace(-3,3,100);                               % 用于训练的X
y = 10*sin(X);                                        % 用于训练的Y
net = newff(X,y,3,{'tansig','purelin'},'trainlm');    % 初始化BP神经网络
net.trainparam.goal   = 0.00001;                      % 设置训练误差目标
net.trainparam.epochs = 15000;                        % 设置最大训练次数.
[net,tr,net_y] = train(net,X,y);                      % 训练

可以看到,用train训练前会设置相关的训练参数。

那么,可以设置哪些训练参数呢?一般来说,有以下两组参数:

1. trainparam:训练算法的相关参数

2. divideParam:数据分割方式的相关参数

下面我们来介绍一下trainparam和divideParam两组训练参数都有哪些。

一、trainParam参数详解

好了,我们先来说说net.trainparam的参数,它存放的是面向训练算法的一系列参数。

下面是trainParam的所有可设参数:

参数名称解释适用方法
net.trainParam.epochs最大训练次数(缺省为10)全部
net.trainParam.goal训练要求精度(缺省为0)全部
net.trainParam.lr学习率(缺省为0.01)全部(lm除外)
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

大家应该会留意到,trainParam的部分参数是相对训练算法而言的,有一些是某些训练算法的专属参数,例如trainlm中,就不支持设置学习率,这是因为lm算法中是没有学习率的,有些同学用lm算法,也在不断尝试调整lr参数,那就白忙活啦,所以大家设置时,需要根据自己选择的训练算法而设置哦。

二、divideParam参数详解

好了,下面我们再来说说net.divideParam参数,它存放的是数据分割的相关参数,它相对比较简单,只有三个属性,具体如下:

divideParam参数说明

一般来说, trainRatiovalRatiotestRatio三者之和应该为1,如果不为1,matlab会自动按占比归一。

 例如trainRatio、valRatio和testRatio都设为2,则实际会归一为[0.333,0.333,0.333]

结束语

BP神经网络常设的就只有trainparam和divideParam两组训练参数,一个用于设置训练算法的参数,另一个用于设置数据分割。而trainparam里的参数并不是通用的,根据选择的训练算法设它相关的参数就可以了。



图标 评论
添加评论