首页 > 解决方案 > 重用 AdamOptimizer 并避免奇怪的行为/内存不足

问题描述

我试图在不创建 10000 个会话和优化器的情况下运行 100 x 100 个不同的短期最小化。

如果我为每个最小化创建一个新的 AdamOptimizer,我就会出现内存不足错误。但是每个优化器都有效。损失几乎总是减少。

我尝试以下方法:

optimizer = tf.train.AdamOptimizer(0.1)
for i in range(100):
    self.session.run(tf.global_variables_initializer(), feed_dict=...)
    tf.variables_initializer(optimizer.variables())
    # run 100 minimizations with the optimizer

但是优化器的行为很奇怪。损失会数次减少和增加。当损失很小时,它会突然增加很多,就像在Tensorflow中使用Adam Optimizer的损失突然增加一样

AdamOptimizer 在内部跟踪它在不使用变量的情况下被调用的次数:如何在 Tensorflow 中仅初始化优化器变量?

这意味着tf.global_variables_initializer()无法重置此计数。这可能会导致奇怪的行为。

如何重用 AdamOptimizer?

标签: pythontensorflow

解决方案


推荐阅读