我已经在tensorflow python中运行了一个大模型。但我还没把它保存在会话中。现在训练结束了,我想保存变量。我正在做以下事情:
saver=tf.train.Saver()
with tf.Session(graph=graph) as sess:
save_path = saver.save(sess, "86_model.ckpt")
print("Model saved in file: %s" % save_path)
返回:ValueError:没有要保存的变量。根据他们的网站,缺少的是initialize_all_variables()。该文档几乎没有说明究竟是什么。 “初始化”这个词吓到了我,我不想重置我训练过的所有值。有没有办法保存我的模型而不重新运行它?
答案 0 :(得分:1)
似乎从tensorflow文档中,“会话”是保存来自训练模型的信息的东西。所以大概是你用sess.run()
来训练模型的地方 - 你要做的就是使用THAT会话调用sess.save()
,而不是用你的这个保护对象创建的新会话。
答案 1 :(得分:1)
我相信它,因为你没有在保护程序中初始化所有变量。这应该工作
with tf.Session() as sess:
tf.initialize_all_variables().run()
saver = tf.train.Saver(tf.all_variables())
-------everything your session does -------------
checkpoint_path = os.path.join(save_dir, 'model.ckpt')
saver.save(sess, checkpoint_path, global_step = your_global_step)
答案 2 :(得分:0)
使用skflow怎么样?使用skflow(现在skflow集成在tensorflow中),您可以在构造函数中指定参数model_dir,并在训练时自动保存模型(它将节省检查点,因此如果在训练期间出现问题,您可以从上一个检查点重新启动)。 / p>