tensorflow - 如何重置 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 的工作细节,希望有人能分享他/她的想法。谢谢。
解决方案
您可以Optimizer
通过其variables
成员函数访问其状态。如果将所有初始化程序分组,则最终会得到优化器的重置操作。
opt = tf.train.AdamOptimizer()
...
opt_reset = tf.group([v.initializer for v in opt.variables()])
推荐阅读
- asp.net-core - WebAssembly 的 IAuthenticationTokenProvider 在请求令牌时崩溃
- html - 对齐 div 元素(css、html)
- reactjs - 错误拉菜单wordpress typescript react nextjs
- uwp - 无法使用 ms-appinstaller 部署 UWP 应用
- aws-appsync - 编码和解码 base64.in aws appsync 解析器
- gitlab - 为什么带有@nuxt/pwa 模块的`nuxt generate` 在Gitlab-CI 中总是生成默认图标?
- php - 处理 POST 表单数据时,CodeIgniter 正在打印未指定的货币(¤)
- regex - 需要帮助在括号处停止
- ios - 生日联系人的 CNContactFetchRequest 过滤器
- r - 如何用R标记正态曲线上的平均值和三个标准差