Tensorflow saver parece sobrescribir los archivos de variables guardados existentes

Estoy escribiendo código de neural network en tensorflow. Lo hice para guardar variables en cada 1000 épocas. Por lo tanto, espero guardar las variables de la época 1001, la época 2001, la época 3001 … para diferentes archivos. El siguiente código es la función de guardar que hice.

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) 

Hice este código para guardar dos veces una vez que se llama a la función. Porque quería guardar el historial de variables por cada 1000 épocas usando ‘global_step = epoch’. Y quería guardar las últimas variables en el archivo sin la época especificada. Llamo a esta función cuando la condición de época se cumple como a continuación.

 for epoch in xrange(self.m_total_epoch): .... CODE FOR NEURAL NETWORK .... if epoch%1000 == 1 and epoch != 1: self.save(epoch) 

Suponiendo que la época actual es 29326, espero que todos los archivos guardados en el directorio sean del 1001, 2001, 3001 … 29001. Sin embargo, solo hay una parte de los archivos del 26001, 27001, 28001, 29001. Comprobé que sucedió en otras computadoras . Es diferente de lo que esperaba. ¿Por que sucede?

tf.train.Saver tiene un argumento max_to_keep en su constructor que mantiene solo los últimos modelos guardados. Y este argumento max_to_keep , de forma algo sorprendente, tiene un valor predeterminado de 5. Por lo tanto, de forma predeterminada, solo tendrá los últimos 5 modelos.

Para mantener todos los modelos, establezca esta variable en None :

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