Tensorflow:恢复模型后,权重似乎是随机的

时间:2017-12-21 20:37:55

标签: python tensorflow machine-learning

我无法正确保存然后恢复张量流模型。具体来说,我有一个脚本(脚本#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())在加载模型后意外运行,从而覆盖了权重,但我没有在这里完成。)

再次感谢您的帮助,如果您需要更多信息,请告诉我们!

1 个答案:

答案 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结尾的已保存文件的名称。