Восстановление модели тензорного потока для точной настройки с помощью «slim.learning.train»

#tensorflow

#тензорный поток

Вопрос:

В tensorflow с помощью slim.learning.train (TF 0.11) я хотел бы восстановить модель с контрольной точки и продолжить обучение. Модель успешно прошла тренировку, и я хотел бы ее точно настроить. Однако, когда я это делаю, TF вылетает с ошибкой Init operations did not make model ready.

Я провожу обучение с помощью:

 tf.contrib.slim.learning.train(
    train_op,
    train_dir,
    log_every_n_steps=FLAGS.log_every_n_steps,
    graph=g,
    global_step=model.global_step,
    number_of_steps=FLAGS.number_of_steps,
    init_fn=model.init_fn,
    saver=model.saver,
    session_config=session_config)
  

Я попробовал 3 альтернативы:

#1

Следуя этому документу

 model.init_fn = None
  

#2

 with g.as_default():
    model_path = tf.train.latest_checkpoint(train_dir)
    if model_path:
        def restore_fn(sess):
            tf.logging.info(
                "Restoring SAamp;T variables from checkpoint file %s",
                restore_fn.model_path)
            model.saver.restore(sess, restore_fn.model_path)
        restore_fn.model_path = model_path
        model.init_fn = restore_fn
    else:
        model.init_fn = None
  

#3

 with g.as_default():
    model_path = tf.train.latest_checkpoint(train_dir)
    if model_path:
        variables_to_restore = tf.contrib.slim.get_variables_to_restore()
        model.init_fn = tensorflow.contrib.framework.assign_from_checkpoint_fn(
            model_path, variables_to_restore)
    else:
        model.init_fn = None
  

Ответ №1:

Проблема была решена. Это произошло потому, что заставка (tf.train.Saver) был определен непосредственно после сборки модели.

Вместо этого, определив ее в соответствии с определением train op, проблема была решена.

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться своим кодом? У меня все еще возникают проблемы с этим. Большое спасибо!

2. Я определяю saver перед операцией train, и это работает. У вас есть какие-либо доказательства этого утверждения?