Tensorflow保护程序似乎覆盖了现有的已保存变量文件

时间:2017-04-13 07:25:04

标签: python tensorflow neural-network

我在tensorflow中编写神经网络代码。我是为了在每1000个时代保存变量。因此,我希望为不同的文件保存第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个历元的变量历史记录。并且希望在没有指定纪元的情况下将最新变量保存在文件中。 每当满足纪元条件时我都会调用此函数,如下所示。

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。我检查过它发生了在其他电脑。它与我的预期不同。为什么会这样?

1 个答案:

答案 0 :(得分:4)

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

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

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