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


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


实现 RMSprop 算法的优化器。

继承自:Optimizer

用法

tf.keras.optimizers.RMSprop(
    learning_rate=0.001, rho=0.9, momentum=0.0, epsilon=1e-07, centered=False,
    name='RMSprop', **kwargs
)

参数

  • learning_rate Tensor ,浮点值,或作为 tf.keras.optimizers.schedules.LearningRateSchedule 的计划,或不带参数并返回要使用的实际值的可调用对象。学习率。默认为 0.001。
  • rho 历史/即将到来的梯度的折扣因子。默认为 0.9。
  • momentum 标量或标量 Tensor 。默认为 0.0。
  • epsilon 用于数值稳定性的小常数。这个 epsilon 是 Kingma 和 Ba 论文中的 "epsilon hat"(在 2.1 节之前的公式中),而不是论文算法 1 中的 epsilon。默认为 1e-7。
  • centered 布尔值。如果 True ,则通过梯度的估计方差对梯度进行归一化;如果为 False,则通过非居中的第二时刻。将此设置为 True 可能有助于训练,但在计算和内存方面稍微贵一些。默认为 False
  • name 应用渐变时创建的操作的可选名称前缀。默认为 "RMSprop"
  • **kwargs 关键字参数。允许是 "clipnorm""clipvalue" 之一。 "clipnorm" (float) 按标准裁剪渐变; "clipvalue" (float) 按值裁剪渐变。

RMSprop 的要点是:

  • 保持梯度平方的移动(折现)平均值
  • 将梯度除以该平均值的根

RMSprop 的这种实现使用的是普通动量,而不是 Nesterov 动量。

居中的版本还保留了梯度的移动平均值,并使用该平均值来估计方差。

请注意,在该算法的密集实现中,即使梯度为零(即累加器将衰减,将应用动量),变量及其对应的累加器(动量、梯度移动平均、平方梯度移动平均)也会更新。稀疏实现(当梯度是 IndexedSlices 对象时使用,通常是因为 tf.gather 或前向传递中的嵌入查找)不会更新变量切片或其累加器,除非这些切片在前向传递中使用(也不是有一个"eventual" 更正来解释这些省略的更新)。这导致对大型嵌入查找表的更有效更新(其中大多数切片在特定的图形执行中不被访问),但与已发布的算法不同。

用法:

opt = tf.keras.optimizers.RMSprop(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()
var1.numpy()
9.683772

参考:

相关用法


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