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

Min*_*hoi 3 python neural-network tensorflow

我正在用 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)
Run Code Online (Sandbox Code Playgroud)

一旦调用该函数,我将这段代码保存两次。因为我想通过使用 '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)
Run Code Online (Sandbox Code Playgroud)

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

P-G*_*-Gn 5

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

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

saver = tf.train.Saver(max_to_keep=None)
Run Code Online (Sandbox Code Playgroud)