当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.optimizers.Adamax用法及代码示例


实现 Adamax 算法的优化器。

继承自:Optimizer

用法

tf.keras.optimizers.Adamax(
    learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07,
    name='Adamax', **kwargs
)

参数

  • learning_rate Tensor 、浮点值或作为 tf.keras.optimizers.schedules.LearningRateSchedule 的计划。学习率。
  • beta_1 浮点值或常量浮点张量。一阶矩估计的 index 衰减率。
  • beta_2 浮点值或常量浮点张量。 index 加权无穷范数的 index 衰减率。
  • epsilon 用于数值稳定性的小常数。
  • name 应用渐变时创建的操作的可选名称。默认为 "Adamax"
  • **kwargs 关键字参数。允许是 "clipnorm""clipvalue" 之一。 "clipnorm" (float) 按标准裁剪渐变; "clipvalue" (float) 按值裁剪渐变。

抛出

  • ValueError 在任何无效论点的情况下。

它是基于无穷范数的亚当的变体。默认参数遵循论文中提供的参数。 Adamax 有时优于 adam,特别是在具有嵌入的模型中。

初始化:

m = 0  # Initialize initial 1st moment vector
v = 0  # Initialize the exponentially weighted infinity norm
t = 0  # Initialize timestep

带梯度g的参数w的更新规则在论文第7.1节末尾说明:

t += 1
m = beta1 * m + (1 - beta) * g
v = max(beta2 * v, abs(g))
current_lr = learning_rate / (1 - beta1 ** t)
w = w - current_lr * m / (v + epsilon)

Adam 类似,添加 epsilon 是为了数值稳定性(尤其是在 v_t == 0 时摆脱除以零)。

Adam 相比,此算法的稀疏实现(当梯度是 IndexedSlices 对象时使用,通常是因为 tf.gather 或前向传递中的嵌入查找)仅在以下情况下更新可变切片和相应的 m_t , v_t 项部分变量用于前向传递。这意味着稀疏行为与密集行为形成对比(类似于某些动量实现,除非实际使用变量切片,否则忽略动量)。

参考:

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.optimizers.Adamax。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。