我需要保存并恢复图,以便从上次检查点继续训练,但不知为何不起作用。
我使用 saver = tf.train.Saver()
来保存模型。并且:
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess: # 初始化保存器 sess.run(tf.global_variables_initializer()) save_path = saver.save(sess,model_path+"/%s.ckpt"%model_name) if flag == "initial_train": training_loop(num_epochs) flag = None else: new_saver = tf.train.import_meta_graph(model_path+"/%s.ckpt.meta"%model_name) new_saver.restore(sess, save_path) print("模型已加载") training_loop(num_epochs)
我真的不知道为什么它无法导入权重
回答:
在后续运行中,您执行了以下操作:
- 使用
sess.run(tf.global_variables_initializer())
初始化所有变量(因此它们将具有初始的随机/常量值) - 将这些初始化的值保存到某个文件中(
saver.save(sess,model_path+"/%s.ckpt"%model_name)
) - 从该文件中加载这些随机初始化的值
所以您只是加载了第3和第4行初始化的和保存的值。
另外,我不知道您如何传递信息,但 training_loop 没有获得 saver
的引用,并且您在训练循环后没有保存模型,所以看起来您实际上并没有在任何地方保存您的模型。