【问题标题】:Restore to keep training not working with tensorflow恢复以保持训练不适用于 tensorflow
【发布时间】:2017-03-14 22:16:07
【问题描述】:

我需要保存和恢复图表以继续从最后一个检查点开始训练,但不知何故无法正常工作。

我使用saver = tf.train.Saver() 来保存模型。并且:

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    # Initializing saver
    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("Model loaded")
        training_loop(num_epochs)

我真的不知道为什么它不导入权重

【问题讨论】:

  • 您在加载前无条件保存,您确定要这样做吗?
  • 好吧,如果我想从检查点开始训练,我需要所有权重和优化器。但它似乎没有加载任何东西

标签: machine-learning tensorflow


【解决方案1】:

你是,在随后的运行中

  1. 使用sess.run(tf.global_variables_initializer() 初始化所有变量(因此它们将具有初始随机/常数值)
  2. 将初始化值保存到某个文件 (saver.save(sess,model_path+"/%s.ckpt"%model_name))
  3. 从该文件加载那些随机初始化的值

所以您只是在加载您在第 3 行和第 4 行初始化和保存的内容。

另外,我不知道你是如何传递信息的,但是 training_loop 没有得到对 saver 的引用,而且你没有在训练循环之后保存模型,所以看起来你实际上并没有在任何地方保存你的模型.

【讨论】:

  • 对不起,我没有写完整的代码,但在函数 training_loop 我做了 saver.save(sess, save_path, global_step=epoch)
  • @florpi 那么你仍然有第一个问题(你只是恢复你在 sn-p 的第 4 行保存的随机初始化值)。
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
相关资源
最近更新 更多