我在用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= 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。我在其他电脑上查过了。这和我预期的不一样。为什么会发生这种事?
发布于 2017-04-13 08:19:47
tf.train.Saver的构造函数中有一个max_to_keep参数,它只保存最新的模型。这个max_to_keep参数,有点让人吃惊的是,它的默认值是5,所以在默认情况下,您将只拥有最新的5个模型。
若要保留所有模型,请将此变量设置为None
saver = tf.train.Saver(max_to_keep=None)https://stackoverflow.com/questions/43386016
复制相似问题