Интервал между контрольными точками в тензорном потоке
Как я могу указать интервал между двумя последовательными контрольными точками в тензорном потоке? Там нет вариантов в tf.train.Saver
указать это. Каждый раз, когда я запускаю модель с разным количеством глобальных шагов, я получаю новый интервал между контрольными точками
2 ответа
tf.train.Saver
является "пассивной" утилитой для записи контрольных точек, и она записывает контрольную точку только тогда, когда какой-то другой код вызывает ее .save()
метод. Поэтому скорость написания контрольных точек зависит от того, какую платформу вы используете для обучения вашей модели:
Если вы используете низкоуровневый API TensorFlow (
tf.Session
) и написать свой собственный цикл обучения, вы можете просто вставить вызовыSaver.save()
в вашем собственном коде. Общий подход заключается в том, чтобы сделать это на основе количества итераций:for i in range(NUM_ITERATIONS): sess.run(train_op) # ... if i % 1000 == 0: saver.save(sess, ...) # Write a checkpoint every 1000 steps.
Если вы используете
tf.train.MonitoredTrainingSession
, который записывает контрольные точки для вас, вы можете указать интервал контрольных точек (в секундах) в конструкторе. По умолчанию он сохраняет контрольную точку каждые 10 минут. Чтобы изменить это на каждую минуту, вы должны сделать:with tf.train.MonitoredTrainingSession(..., save_checkpoint_secs=60): # ...
Спасибо! Это решило мою проблему: tf.contrib.slim.learning.train (train_op, checkpoint_dir, log_every_n_steps = args.log_every_n_steps, graph = g,
global_step = model.global_step, number_of_steps = args.number_of_steps, init_fn = model.init_fn, save_summaries_secs = 300, save_interval_secs = 300, saver = заставка)