【问题标题】:Tensorflow saver seems to overwrite existing saved variable filesTensorflow 保护程序似乎覆盖了现有保存的变量文件
【发布时间】:2017-04-13 07:25:04
【问题描述】:

我正在用 tensorflow 编写神经网络代码。我做到了每 1000 个 epoch 保存一次变量。所以,我希望为不同的文件保存第 1001 个纪元、第 2001 个纪元、第 3001 个纪元……的变量。 下面的代码是我做的保存功能。

def save(self, epoch):
    model_name = "MODEL_save"
    checkpoint_dir = os.path.join(model_name)

    if not os.path.exists(checkpoint_dir):
        os.makedirs(checkpoint_dir)
    self.saver.save(self.sess, checkpoint_dir + '/model', global_step=epoch)
    self.saver.save(self.sess, checkpoint_dir + '/model')
    print("path for saved %s" % checkpoint_dir)

一旦调用该函数,我将这段代码保存两次。因为我想通过使用“global_step=epoch”来保存每 1000 个 epoch 的变量历史记录。并且想在没有指定纪元的情况下将最新的变量保存在文件中。 每当满足纪元条件时,我都会调用此函数,如下所示。

for epoch in xrange(self.m_total_epoch):

    .... CODE FOR NEURAL NETWORK ....

    if epoch%1000 == 1 and epoch != 1:
        self.save(epoch)

假设当前纪元是 29326,我希望目录中所有保存的文件从 1001、2001、3001 ... 29001。但是,只有部分文件来自 26001、27001、28001、29001。我检查了它是否发生在其他电脑。这与我的预期不同。为什么会发生?

【问题讨论】:

    标签: python tensorflow neural-network


    【解决方案1】:

    tf.train.Saver 在其构造函数中有一个 max_to_keep 参数,它只保存最新的模型。而这个 max_to_keep 参数,有点令人惊讶的是,它的默认值为 5。所以默认情况下,您将只有最新的 5 个模型。

    要保留所有模型,请将此变量设置为None

    saver = tf.train.Saver(max_to_keep=None)
    

    【讨论】:

    • max_to_keep为5时如何只加载最后保存的变量?
    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 2018-08-22
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多