pymc.adam#

pymc.adam(loss_or_grads=None, params=None, learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08)[源代码]#

亚当更新

Adam 更新实现如 [1] 所示。

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

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

参数: 共享变量的列表

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

learning_rate: float

学习率

beta1: float

指数衰减率用于第一次矩估计。

beta2: float

第二矩估计的指数衰减率。

epsilon: float

用于数值稳定的常数。

返回:
OrderedDict

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

注释

论文 [1] 包含一个额外的超参数 lambda。这仅用于证明算法的收敛性,并无实际用途(与作者的个人交流),因此在此省略。

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

参考文献

[1] (1,2)

Kingma, Diederik, 和 Jimmy Ba (2014): Adam: 一种随机优化方法。arXiv 预印本 arXiv:1412.6980。

示例

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