Интервал между контрольными точками в тензорном потоке

Как я могу указать интервал между двумя последовательными контрольными точками в тензорном потоке? Там нет вариантов в 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 = заставка)

Другие вопросы по тегам