Tensorflow金丹似乎覆盖现有保存的变量文件

问题描述:

我写的神经网络代码tensorflow。我让它在每1000个纪元中保存变量。所以,我期望为不同的文件保存第1001个时代,第2001个时代,第3001个时代的变量。 下面的代码是我所做的保存功能。Tensorflow金丹似乎覆盖现有保存的变量文件

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

tf.train.Saver在其构造一个max_to_keep论点,即只保留最新型号保存。这个max_to_keep参数有点令人惊讶,默认值是5.所以默认情况下,你只有最新的5个模型。

要将所有车型,将此变量设置为None

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

当'max_to_keep'是5如何加载只有最后保存的变量? –