pymc.应用_涅斯捷罗夫_动量#
- pymc.apply_nesterov_momentum(updates, params=None, momentum=0.9)[源代码]#
返回一个包含Nesterov动量的修改更新字典
生成以下形式的更新表达式:
velocity := momentum * velocity + updates[param] - param
param := param + momentum * velocity + updates[param] - param
- 参数:
- 更新: OrderedDict
一个将参数映射到更新表达式的字典
- 参数: 共享变量的可迭代对象, 可选
要应用动量的变量。如果省略,将对所有 updates.keys() 应用动量。
- momentum: float 或符号标量, 可选
要应用的动量大小。较高的动量会导致在更多的更新步骤中进行平滑处理。默认为0.9。
- 返回:
OrderedDict
包含所有 params 动量更新的 updates 副本。
参见
nesterov_momentum
快捷方式将 Nesterov 动量应用于 SGD 更新
注释
更高的动量也会导致更大的更新步长。为了抵消这一点,你可以选择性地将你的学习率按 1 - 动量 进行缩放。
Nesterov 动量(或 Nesterov 加速梯度)的经典公式要求在参数空间的预测下一个位置评估梯度。在这里,我们使用在 lisa-lab/pylearn2#136 中描述的公式,该公式允许在当前参数处评估梯度。