pymc.momentum#

pymc.momentum(loss_or_grads=None, params=None, learning_rate=0.001, momentum=0.9)[源代码]#

带有动量的随机梯度下降(SGD)更新

生成以下形式的更新表达式:

  • velocity := momentum * velocity - learning_rate * gradient

  • param := param + velocity

参数:
loss_or_grads: 符号表达式或表达式列表

一个标量损失表达式,或一个梯度表达式列表

参数: 共享变量的列表

用于生成更新表达式的变量

learning_rate: float 或符号标量

学习率控制更新步骤的大小

momentum: float 或符号标量, 可选

要应用的动量大小。较高的动量会导致在更多的更新步骤中进行平滑处理。默认为0.9。

返回:
OrderedDict

一个字典,将每个参数映射到其更新表达式

参见

apply_momentum

通用函数,应用于更新的动量

nesterov_momentum

带有动量的SGD的Nesterov变体

注释

更高的动量也会导致更大的更新步长。为了抵消这一点,你可以选择性地将你的学习率按 1 - 动量 进行缩放。

优化器可以在不传入 loss_or_grads 和 params 的情况下调用,在这种情况下会返回一个偏函数。

示例

>>> a = pytensor.shared(1.)
>>> b = a*2
>>> updates = momentum(b, [a], learning_rate=.01)
>>> isinstance(updates, dict)
True
>>> optimizer = momentum(learning_rate=.01)
>>> callable(optimizer)
True
>>> updates = optimizer(b, [a])
>>> isinstance(updates, dict)
True