首页 > 解决方案 > 如何重置 Adam Optimizer (Tensorflow) 中的所有变量,然后我可以使用新的优化器重新训练模型

问题描述

我正在做与课程学习相关的事情,因此我想为每个培训阶段重置我的优化器。但是在 Adam 中,有一些槽保持一阶矩和二阶矩,还有 beta1 和 beta2 的幂值。我尝试在不查看以下变量的情况下定义 tensorflow 保护程序:

def define_saver(exclude='(r'.*Adam.*', r'.*beta.*')'):
"""Create a saver for the variables we want to checkpoint.

Args:
  exclude: List of regexes to match variable names to exclude.

Returns:
  Saver object.
"""
variables = []
exclude = exclude or []
exclude = [re.compile(regex) for regex in exclude]
for variable in tf.global_variables():
    if any(regex.match(variable.name) for regex in exclude):
        continue
    variables.append(variable)
saver = tf.train.Saver(variables, keep_checkpoint_every_n_hours=5)
return saver

我不确定我做对与否,因为我不太了解 Adam 的工作细节,希望有人能分享他/她的想法。谢谢。

标签: tensorflowdeep-learning

解决方案


您可以Optimizer通过其variables成员函数访问其状态。如果将所有初始化程序分组,则最终会得到优化器的重置操作。

opt = tf.train.AdamOptimizer()
...
opt_reset = tf.group([v.initializer for v in opt.variables()])

推荐阅读