使用tf.estimator.train_and_evaluate()时,如何在训练之前恢复相关模型(ckpt文件)?

时间:2019-05-17 23:44:19

标签: python tensorflow deep-learning conv-neural-network pre-trained-model

我有一个这样的CNN:~/.local/bin/superset。 同时,我有一个从其他网络获得的预训练模型(ckpt文件),该模型也具有“ layer1”。

我要实现的目标:使用预先训练的ckpt文件仅还原CNN的“ layer1”。然后,我将冻结“ layer1”,并仅在培训期间更新“ layer2”。

但是我不知道如何使用/usr/local/bin函数来实现这一目标。

我知道如何使用基本的/etc/profile之类的input-> layer1 -> layer->2->outputtf.esimator.train_and_evaluate()例程来实现相同的目的。

如下所示,我可以通过旧方式恢复ckpt:

Tensorflow

但是这次,我需要修改以下代码以还原ckpt:

session.run(), initializer()

我想restore()希望通过##### 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) 之类的包装例程来简化实现。但这使执行各种更灵活的操作变得更加困难。

任何人都可以提供一些指导,以便在我使用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) 时进行修改,使其仅恢复“ layer1”吗?

0 个答案:

没有答案