Как восстановить соответствующую модель (файлы ckpt) перед тренировкой при использовании tf.estimator.train_and_evaluate ()? - PullRequest
0 голосов
/ 18 мая 2019

У меня есть такой CNN: input-> layer1 -> layer->2->output. Между тем, у меня есть предварительно обученная модель (файлы ckpt), полученная из других сетей, которая также имеет «layer1».

Чего я хочу добиться: использовать предварительно обученный файл ckpt для восстановления только «layer1» CNN. Затем я замораживаю «layer1» и обновляю «layer2» только во время тренировки.

Но я не знаю, как этого добиться с помощью функции tf.esimator.train_and_evaluate().

Я знаю, как добиться того же самого с помощью базовых подпрограмм Tensorflow, таких как session.run(), initializer() и restore().

Как показано ниже, я могу восстановить ckpt старым способом:

##### After defining network ########
session.run(tf.variables_initializer(uninitialized_variables))
variables_to_restore = slim.get_variables(scope="layer1")
restorer = tf.train.Saver(variables_to_restore)
restorer.restore(session, save_path=checkpoint_path)
session.run(something) 

Но на этот раз мне нужно изменить следующий код для восстановления ckpt:

train_input_fn = get_input_fn(is_training=True)
val_input_fn = get_input_fn(is_training=False)
estimator = tf.estimator.Estimator(model_fn, params=model_params, config=run_config)

train_spec = tf.estimator.TrainSpec(train_input_fn, max_steps=input_params['num_steps'])
eval_spec = tf.estimator.EvalSpec(val_input_fn, steps=None, start_delay_secs=1800, throttle_secs=1800)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)

Я думаю, Tensorflow надеялся упростить реализацию с помощью процедур-оболочек, таких как tf.estimator.train_and_evaluate(). Но это усложняет выполнение различных более гибких операций.

Может ли кто-нибудь дать какое-нибудь руководство, где я должен изменить, чтобы он восстанавливал «layer1» только при использовании tf.estimator.train_and_evaluate?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...