2016-07-08 3 views
3

Я работаю с тензорным потоком и тренировал некоторые модели и сохранял их после каждой эпохи, используя метод tf.saver(). Я могу сохранить и загрузить модели просто отлично, и я делаю это обычным способом.Tensorflow, отсутствующие файлы контрольных точек. Сохраняет ли только сохранение 5 контрольных точек?

with tf.Graph().as_default(), tf.Session() as session: 
    initialiser = tf.random_normal_initializer(config.mean, config.std) 

    with tf.variable_scope("model",reuse=None, initializer=initialiser): 
     m = a2p(session, config, training=True) 

    saver = tf.train.Saver() 
    ckpt = tf.train.get_checkpoint_state(model_dir) 
    if ckpt and tf.gfile.Exists(ckpt.model_checkpoint_path) 
     saver.restore(session, ckpt.model_checkpoint_path) 
    ... 
    for i in range(epochs): 
     runepoch() 
     save_path = saver.save(session, '%s.ckpt'%i) 

Мой код настроен для сохранения модели для каждой эпохи, которая должна быть маркирована соответствующим образом. Однако я заметил, что после пятнадцати эпох обучения у меня есть только файлы контрольных точек за последние пять эпох (10, 11, 12, 13, 14). В документации ничего не говорится об этом, поэтому я не понимаю, почему это происходит.

Сохраняется ли только сохранение пяти контрольно-пропускных пунктов или я сделал что-то неправильно?

Есть ли способ убедиться, что все контрольно-пропускные пункты сохранены?

+0

5 по умолчанию, вы можете настроить его в Saver конструктор –

ответ

7

Вы можете выбрать, сколько контрольных точек, чтобы сохранить, когда вы create your Saver object, установив max_to_keep аргумент, который по умолчанию 5.

saver = tf.train.Saver(max_to_keep=10000) 
+2

Существует также «keep_checkpoint_every_n_hours» аргумент, который я предпочитаю в большинстве случаев. – etarion

+0

Я не понимаю, почему в первую очередь стоит дефолт. Если я использую 'Saver', я делаю это, чтобы что-то сэкономить, почему я хочу выбросить то, что я явно хочу сохранить? –

+0

@gokul_uf Контрольные точки могут быть довольно большими, если ваша модель имеет множество параметров. Я предполагаю, что было выбрано значение по умолчанию, чтобы избежать нехватки места для хранения. Думаю, это компромисс между двумя зол. – Styrke

1

установка max_to_keep=None фактически делает Saver держать все контрольно-пропускные пункты. Для например.,

saver = tf.train.Saver(max_to_keep=None) 
Смежные вопросы