如何在 slim.learning.train 中加载 init_fn 中的两个检查点
How to load two checkpoints in init_fn in slim.learning.train
我想在使用 slim.learning.train
时加载两个检查点。例如,
init_fn = assign_from_checkpoint_fn(model_path, variables_to_restore)
slim.learning.train(train_op, log_dir, init_fn=init_fn)
问题是我在model_path中只能输入一个检查点文件。我想放两个检查站。我认为可以有两种可能的解决方案:
- 修改
tf.contrib.framework.assign_from_checkpoint_fn
中的以下assign_from_checkpoint_fn函数,使model_path可以是检查点文件列表
- 之前合并两个检查点。 (我没有找到任何工具)
有人帮帮我吗?
我找到了一个解决方案:我们可以像这样使用会话定义我们的 init 函数:
flow_init_assign_op, flow_init_feed_dict = slim.assign_from_checkpoint(
flow_ckpt, flow_var_to_restore)
resnet_init_assign_op, resnet_init_feed_dict =
slim.assign_from_checkpoint(
resnet_ckpt, resnet_var_to_restore, ignore_missing_vars=True)
def init_fn(sess):
sess.run(flow_init_assign_op, flow_init_feed_dict)
sess.run(resnet_init_assign_op, resnet_init_feed_dict)
我想在使用 slim.learning.train
时加载两个检查点。例如,
init_fn = assign_from_checkpoint_fn(model_path, variables_to_restore)
slim.learning.train(train_op, log_dir, init_fn=init_fn)
问题是我在model_path中只能输入一个检查点文件。我想放两个检查站。我认为可以有两种可能的解决方案:
- 修改
tf.contrib.framework.assign_from_checkpoint_fn
中的以下assign_from_checkpoint_fn函数,使model_path可以是检查点文件列表 - 之前合并两个检查点。 (我没有找到任何工具)
有人帮帮我吗?
我找到了一个解决方案:我们可以像这样使用会话定义我们的 init 函数:
flow_init_assign_op, flow_init_feed_dict = slim.assign_from_checkpoint(
flow_ckpt, flow_var_to_restore)
resnet_init_assign_op, resnet_init_feed_dict =
slim.assign_from_checkpoint(
resnet_ckpt, resnet_var_to_restore, ignore_missing_vars=True)
def init_fn(sess):
sess.run(flow_init_assign_op, flow_init_feed_dict)
sess.run(resnet_init_assign_op, resnet_init_feed_dict)