实现 Adam 算法的优化器。
继承自:Optimizer
用法
tf.keras.optimizers.Adam(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,
name='Adam', **kwargs
)
参数
-
learning_rate
一个Tensor
,浮点值,或者是一个tf.keras.optimizers.schedules.LearningRateSchedule
的计划,或者一个不带参数并返回要使用的实际值的可调用对象,即学习率。默认为 0.001。 -
beta_1
浮点值或常量浮点张量,或不带参数并返回要使用的实际值的可调用对象。一阶矩估计的 index 衰减率。默认为 0.9。 -
beta_2
浮点值或常量浮点张量,或不带参数并返回要使用的实际值的可调用函数,二阶矩估计的 index 衰减率。默认为 0.999。 -
epsilon
用于数值稳定性的小常数。这个 epsilon 是 Kingma 和 Ba 论文中的 "epsilon hat"(在 2.1 节之前的公式中),而不是论文算法 1 中的 epsilon。默认为 1e-7。 -
amsgrad
布尔值。是否应用来自论文“On the Convergence of Adam and beyond”的该算法的 AMSGrad 变体。默认为False
。 -
name
应用渐变时创建的操作的可选名称。默认为"Adam"
。 -
**kwargs
关键字参数。允许是"clipnorm"
或"clipvalue"
之一。"clipnorm"
(float) 按标准裁剪渐变;"clipvalue"
(float) 按值裁剪渐变。
抛出
-
ValueError
在任何无效论点的情况下。
Adam 优化是一种基于first-order 和second-order 矩的自适应估计的随机梯度下降方法。
根据 Kingma 等人,2014 年的说法,该方法“计算效率高,内存需求少,对梯度的对角线重新缩放不变,并且非常适合数据/参数方面的大问题”。
用法:
opt = tf.keras.optimizers.Adam(learning_rate=0.1)
var1 = tf.Variable(10.0)
loss = lambda:(var1 ** 2)/2.0 # d(loss)/d(var1) == var1
step_count = opt.minimize(loss, [var1]).numpy()
# The first step is `-learning_rate*sign(grad)`
var1.numpy()
9.9
参考:
- 金马等人,2014
- Reddi 等人,2018 年为了
amsgrad
.
注意:
epsilon 的默认值 1e-7 通常可能不是一个好的默认值。例如,在 ImageNet 上训练 Inception 网络时,当前较好的选择是 1.0 或 0.1。请注意,由于 Adam 使用的是 Kingma 和 Ba 论文第 2.1 节之前的公式,而不是算法 1 中的公式,因此这里提到的"epsilon" 在论文中是"epsilon hat"。
该算法的稀疏实现(当梯度是 IndexedSlices 对象时使用,通常是因为tf.gather
或前向传递中的嵌入查找)确实将动量应用于可变切片,即使它们未在前向传递中使用(意味着它们梯度为零)。动量衰减 (beta1) 也适用于整个动量累加器。这意味着稀疏行为等同于密集行为(与某些动量实现相反,除非实际使用变量切片,否则它们会忽略动量)。
相关用法
- Python tf.keras.optimizers.Adamax用法及代码示例
- Python tf.keras.optimizers.Optimizer.set_weights用法及代码示例
- Python tf.keras.optimizers.schedules.serialize用法及代码示例
- Python tf.keras.optimizers.SGD用法及代码示例
- Python tf.keras.optimizers.Optimizer用法及代码示例
- Python tf.keras.optimizers.schedules.ExponentialDecay用法及代码示例
- Python tf.keras.optimizers.schedules.PiecewiseConstantDecay用法及代码示例
- Python tf.keras.optimizers.Nadam用法及代码示例
- Python tf.keras.optimizers.RMSprop用法及代码示例
- Python tf.keras.optimizers.schedules.deserialize用法及代码示例
- Python tf.keras.optimizers.schedules.CosineDecay用法及代码示例
- Python tf.keras.optimizers.schedules.CosineDecayRestarts用法及代码示例
- Python tf.keras.optimizers.Optimizer.apply_gradients用法及代码示例
- Python tf.keras.optimizers.Ftrl用法及代码示例
- Python tf.keras.optimizers.Optimizer.get_weights用法及代码示例
- Python tf.keras.optimizers.schedules.PolynomialDecay用法及代码示例
- Python tf.keras.optimizers.serialize用法及代码示例
- Python tf.keras.optimizers.schedules.InverseTimeDecay用法及代码示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.optimizers.Adam。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。