Как указать интервал между двумя последовательными контрольными точками в тензорном потоке? В tf.train.Saver
нет опций, чтобы указать это. Каждый раз, когда я запускаю модель с другим количеством глобальных шагов, я получаю новый интервал между контрольными точками.
Интервал между контрольными точками в tensorflow
Ответы (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, заставка=заставка)