Tensorflow每n个小批量重置Adam Optimizer内部状态

时间:2018-02-27 14:15:20

标签: tensorflow deep-learning gradients

这是我的问题: 如何每n个小批量重置Tensorflow Adam Optimizer内部状态?

通过内部状态,我指的是m(t),过去的梯度和v(t),过去的平方梯度,参数。

1 个答案:

答案 0 :(得分:3)

我会这样做:

  • 为Adam Optimizer提供一个独特的名称
  • 获取与此名称相关联的所有变量
  • 重新初始化所有这些变量。

或用代码编写(你可能想要一个比'Adam'更好的名字):

 optimizer = tf.train.AdamOptimizer(learning_rate=0.001, name='Adam').minimize(loss)
 adam_vars = [var for var in tf.all_variables() if 'Adam' in var.name]
 sess.run(tf.variables_initializer(adam_vars))

编辑(25.04.2019):

有一种更简单的方法:

 optimizer = tf.train.AdamOptimizer()
 train_op = optimizer.minimize(loss)
 sess.run(tf.variables_initializer(optimizer.variables()))