实现 Momentum 算法的优化器。
继承自:Optimizer
用法
tf.compat.v1.train.MomentumOptimizer(
learning_rate, momentum, use_locking=False, name='Momentum',
use_nesterov=False
)
参数
-
learning_rate
Tensor
或浮点值。学习率。 -
momentum
Tensor
或浮点值。势头。 -
use_locking
如果True
使用锁进行更新操作。 -
name
应用渐变时创建的操作的可选名称前缀。默认为"Momentum"。 -
use_nesterov
如果True
使用 Nesterov Momentum。参见(Sutskever 等人,2013 年)。此实现始终以传递给优化器的变量值计算梯度。使用 Nesterov Momentum 使变量跟踪论文中称为theta_t + mu*v_t
的值。此实现是原始公式的近似值,适用于高动量值。它将通过假设新梯度将由当前平均梯度加上动量和平均梯度变化的乘积来估计 NAG 中的"adjusted gradient"。
迁移到 TF2
警告:这个 API 是为 TensorFlow v1 设计的。继续阅读有关如何从该 API 迁移到本机 TensorFlow v2 等效项的详细信息。见TensorFlow v1 到 TensorFlow v2 迁移指南有关如何迁移其余代码的说明。
tf.compat.v1.train.MomentumOptimizer 与 Eager 模式和 tf.function
兼容。当启用即刻执行时,learning_rate
, momentum
可以是一个不带参数并返回要使用的实际值的可调用对象。这对于在优化器函数的不同调用中更改这些值很有用。
要切换到原生 TF2 风格,请直接使用带有momentum
参数的tf.keras.optimizers.SGD
。
到原生 TF2 的结构映射
前:
optimizer = tf.compat.v1.train.MomentumOptimizer(
learning_rate=learning_rate,
momentum=momentum,
use_nesterov=use_nesterov)
后:
optimizer = tf.keras.optimizers.SGD(
learning_rate=learning_rate,
momentum=momentum,
nesterov=use_nesterov)
如何映射参数
TF1 参数名称 | TF2 参数名称 | 注意 |
---|---|---|
learning_rate
|
learning_rate
|
小心设置从全局步骤计算的learning_rate 张量值。在 TF1 中,这通常意味着动态学习率,并且会在每一步中重新计算。在 TF2 (eager + function) 中,它会将其视为仅计算一次的标量值,而不是每次都计算的符号占位符。 |
momentum |
momentum |
- |
use_locking |
- | 不适用于 TF2。 |
use_nesterov |
nesterov |
- |
使用前后示例
前:
x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.compat.v1.train.MomentumOptimizer(
learning_rate=0.001,
momentum=0.9,
use_nesterov=False)
optimizer.apply_gradients(zip([grad], [x]))
后:
x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.keras.optimizers.SGD(
learning_rate=0.001,
momentum=0.9,
nesterov=False)
optimizer.apply_gradients(zip([grad], [x]))
计算(如果 use_nesterov = False
):
accumulation = momentum * accumulation + gradient
variable -= learning_rate * accumulation
请注意,在该算法的密集版本中,accumulation
会更新并应用,而不管梯度的值如何,而稀疏版本(当梯度为 IndexedSlices
时,通常是因为 tf.gather
或嵌入)仅更新变量切片和相应的accumulation
术语,当变量的该部分用于前向传递时。
相关用法
- Python tf.compat.v1.train.MomentumOptimizer.compute_gradients用法及代码示例
- Python tf.compat.v1.train.MonitoredSession.run_step_fn用法及代码示例
- Python tf.compat.v1.train.MonitoredSession用法及代码示例
- Python tf.compat.v1.train.FtrlOptimizer.compute_gradients用法及代码示例
- Python tf.compat.v1.train.get_or_create_global_step用法及代码示例
- Python tf.compat.v1.train.cosine_decay_restarts用法及代码示例
- Python tf.compat.v1.train.Optimizer用法及代码示例
- Python tf.compat.v1.train.AdagradOptimizer.compute_gradients用法及代码示例
- Python tf.compat.v1.train.init_from_checkpoint用法及代码示例
- Python tf.compat.v1.train.Checkpoint用法及代码示例
- Python tf.compat.v1.train.Supervisor.managed_session用法及代码示例
- Python tf.compat.v1.train.Checkpoint.restore用法及代码示例
- Python tf.compat.v1.train.global_step用法及代码示例
- Python tf.compat.v1.train.RMSPropOptimizer.compute_gradients用法及代码示例
- Python tf.compat.v1.train.exponential_decay用法及代码示例
- Python tf.compat.v1.train.natural_exp_decay用法及代码示例
- Python tf.compat.v1.train.RMSPropOptimizer用法及代码示例
- Python tf.compat.v1.train.get_global_step用法及代码示例
- Python tf.compat.v1.train.GradientDescentOptimizer.compute_gradients用法及代码示例
- Python tf.compat.v1.train.linear_cosine_decay用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.train.MomentumOptimizer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。