traingdm
带动量的梯度下降反向传播
语法
net.trainFcn = 'traingdm'
[net,tr] = train(net,...)
说明
traingdm
是根据带动量的梯度下降更新权重和偏置值的网络训练函数。
net.trainFcn = 'traingdm'
设置网络 trainFcn
属性。
[net,tr] = train(net,...)
使用 traingdm
训练网络。
系统根据 traingdm
训练参数进行训练,下表显示了这些参数的默认值:
net.trainParam.epochs | 1000 | 要训练的最大轮数 |
net.trainParam.goal | 0 | 性能目标 |
net.trainParam.lr | 0.01 | 学习率 |
net.trainParam.max_fail | 6 | 最大验证失败次数 |
net.trainParam.mc | 0.9 | 动量常量 |
net.trainParam.min_grad | 1e-5 | 最小性能梯度 |
net.trainParam.show | 25 | 显示进度之间的轮数 |
net.trainParam.showCommandLine | false | 生成命令行输出 |
net.trainParam.showWindow | true | 显示训练 GUI |
net.trainParam.time | inf | 以秒为单位的最大训练时间 |
网络使用
您可以创建一个将 traingdm
与 feedforwardnet
或 cascadeforwardnet
搭配使用的标准网络。要准备使用 traingdm
训练的自定义网络,请执行以下操作:
将
net.trainFcn
设置为'traingdm'
。这会将net.trainParam
设置为traingdm
的默认参数。将
net.trainParam
属性设置为期望的值。
在任一情况下,用生成的网络调用 train
都会用 traingdm
训练网络。
有关示例,请参阅 help feedforwardnet
和 help cascadeforwardnet
。
详细信息
算法
traingdm
可以训练任何网络,只要其权重、净输入和传递函数具有导函数。
反向传播用于计算性能 perf
关于权重和偏置变量 X
的导数。每个变量根据带动量的梯度下降进行调整,
dX = mc*dXprev + lr*(1-mc)*dperf/dX
其中 dXprev
是权重或偏置的先前更改。
出现以下任一情况时,训练停止:
达到
epochs
(重复)的最大数量。超出
time
的最大数量。性能最小化到
goal
。性能梯度低于
min_grad
。自上次验证性能(使用验证时)下降以来,验证性能(验证误差)上升的次数超过了
max_fail
次。
版本历史记录
在 R2006a 之前推出