2017-04-13 66 views
2

我寫的神經網絡代碼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。我檢查了它發生在其他電腦上。這與我所期望的不同。爲什麼會發生?

回答

2

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如何加載只有最後保存的變量? –