我无法正确保存然后恢复张量流模型。具体来说,我有一个脚本(脚本#1),它使用一些数据训练模型,然后在相同的数据上测试它。 (我知道你在现实生活中永远不会这样做,但就我的问题而言,这并不重要)。脚本#2应该加载已保存的模型,然后预测模型所训练的相同数据。问题是我在脚本#1和脚本#2中进行推理时会得到不同的预测。
在脚本#1中:
application/xml
这里,变量“p”中的值是有意义的,一切都很好。
内部train_model是用于保存模型的代码:
sess, softmax_probabilities = train_model(data, labels, full_model_filename) # train model
p = [x[1] for x in softmax_probabilities.eval({data_placeholder: data, label_placeholder: labels, dropout_keep_proportion_placeholder: 1.0}, session=sess)] # test model on same data
在脚本#2中,我有以下内容:
saver = tf.train.Saver()
saver.save(sess, model_filename)
这次,变量“p”中的值几乎都非常接近0.5。因此,就像加载的模型具有随机权重一样。在加载模型方面肯定有一些我做错了,但我无法弄清楚它是什么。任何帮助将不胜感激。 (我在Stack Overflow上读了几个其他线程,其中sess.run(tf.global_variables_initializer())在加载模型后意外运行,从而覆盖了权重,但我没有在这里完成。)
再次感谢您的帮助,如果您需要更多信息,请告诉我们!
答案 0 :(得分:0)
我能够通过更改代码行来解决问题:
new_saver.restore(sess, tf.train.latest_checkpoint('./'))
使用:
new_saver.restore(sess, args.model_meta_filename.replace(".meta", ""))
为了澄清,args.model_meta_filename
是以.meta结尾的已保存文件的名称。