traingdx
带动量和自适应学习率的梯度下降反向传播
说明
net.trainFcn = 'traingdx' 设置网络 trainFcn 属性。
[ 使用 trainedNet,tr] = train(net,...)traingdx 训练网络。
traingdx 是根据带动量和自适应学习率的梯度下降更新权重和偏置值的网络训练函数。
系统根据 traingdx 训练参数进行训练,下表显示了这些参数的默认值:
net.trainParam.epochs- 要训练的最大轮数。默认值为 1000。net.trainParam.goal- 性能目标。默认值为 0。net.trainParam.lr- 学习率。默认值为 0.01。net.trainParam.lr_inc- 增加学习率的比率。默认值为 1.05。net.trainParam.lr_dec- 降低学习率的比率。默认值为 0.7。net.trainParam.max_fail- 最大验证失败次数。默认值为6。net.trainParam.max_perf_inc- 最大性能提升。默认值为1.04。net.trainParam.mc- 动量常量。默认值为0.9。net.trainParam.min_grad- 最小性能梯度。默认值为1e-5。net.trainParam.show- 各次显示之间的训练轮数(无显示时为NaN)。默认值为 25。net.trainParam.showCommandLine- 生成命令行输出。默认值为false。net.trainParam.showWindow- 显示训练 GUI。默认值为true。net.trainParam.time- 以秒为单位的最大训练时间。默认值为inf。
输入参数
输出参量
详细信息
算法
函数 traingdx 将自适应学习率与动量训练相结合。它的调用方式与 traingda 相同,不同之处在于它将动量系数 mc 作为附加训练参数。
traingdx 可以训练任何网络,只要其权重、净输入和传递函数具有导函数。
反向传播用于计算性能 perf 关于权重和偏置变量 X 的导数。每个变量根据带动量的梯度下降进行调整,
dX = mc*dXprev + lr*mc*dperf/dX
其中 dXprev 是权重或偏置的先前更改。
对于每轮训练,如果性能朝着目标下降,则学习率将按因子 lr_inc 增加。如果性能提升的幅度超过因子 max_perf_inc,则学习率将由因子 lr_dec 调整,并且不会进行提升性能的更改。
出现以下任一情况时,训练停止:
达到
epochs(重复)的最大数量。超出
time的最大数量。性能最小化到
goal。性能梯度低于
min_grad。自上次验证性能(使用验证时)下降以来,验证性能(验证误差)上升的次数超过了
max_fail次。
版本历史记录
在 R2006a 之前推出