【问题标题】:Using saved model for prediction in tensorflow在张量流中使用保存的模型进行预测
【发布时间】:2018-09-28 20:30:48
【问题描述】:

我使用这段代码来恢复我的模型,但我不知道恢复后如何预测,我可以使用哪个函数?我是 tensorflow 的初学者,不知道要保存到哪个参数或函数。

在元模型中:

sess = tf.Session()
saver = tf.train.import_meta_graph("/home/MachineLearning/model.ckpt.meta")
saver.restore(sess,tf.train.latest_checkpoint('./'))
print("Model restored with success ")
x_predict,y_predict= load_svmlight_file('/MachineLearning/to_predict.csv')
x_predict = x_valid.toarray()
sess.run([] ,feed_dict ) #i don't know how to use predict function

这些是结果:

$python predict.py
Model restored with success 
Traceback (most recent call last):
  File "predict.py", line 23, in <module>
    sess.run([] ,feed_dict )
NameError: name 'feed_dict' is not defined

【问题讨论】:

标签: tensorflow


【解决方案1】:

你快到了。 Tensorflow 只是一个数学库。您的图是具有相关依赖关系的数学运算的集合(例如,图,特别是 DAG)。

当您加载图表和相关变量(权重)时,您加载了所有定义。现在你需要让 tensorflow 在图中计算一些值。它可以计算很多值,你想要的通常被命名为logits(神经网络输出层的典型名称)。但请注意,它可以命名为任何名称(特别是如果这不是神经网络模型),您需要了解该模型。您可能还想计算一个名为 accuracy 的操作,该操作被定义为计算特定批次输入的准确度(同样取决于您的模型)。

请注意,您需要为 TensorFlow 提供执行这些计算所需的一切。通常有一个placeholder,您可以在其中传递您的数据(在训练期间,您不需要预测标签的placeholder,因为您将要求 tensorflow 计算的任何操作都不依赖于它)。

但是您需要获取对这些不同操作(logitsaccuracy)和占位符(x 是一个典型名称)的引用。由于您从磁盘加载图表,因此您没有参考(请注意,加载模型的另一种方法是重新运行构建模型的代码,这样您就可以轻松访问所需的参考)。

为了获得正确的参考资料,您可以按名称查找它们。以下是获取所有操作列表的方法:

List of tensor names in graph in Tensorflow

然后通过名称获取特定的OP(操作):

How to get a tensorflow op by name?

所以你会有这样的东西:

logits = tf.get_default_graph().get_operation_by_name("logits:0")
x = tf.get_default_graph().get_operation_by_name("x:0")
accuracy = tf.get_default_graph().get_operation_by_name("accuracy:0")

注意:0是一个添加到tensorflow中所有名字的索引,以避免重复名字。现在您拥有了所有需要的参考资料,您可以使用sess.run 执行特定的计算,提供输入数据和您想要计算的 OP:

sess.run([logits, accuracy], feed_dict={x:your_input_data_in_numpy_format})

这些元素的名称在您的实现中会有所不同,我使用了最常用的名称。如果没有给它们起漂亮的名字,就很难识别它们,您需要查看生成图表的原始代码。事实上,如果它们没有被正确命名,那么通过名称查找它们会非常痛苦,因此最好重新运行生成原始图的代码而不是导入元图。请注意,saver.restore 仅恢复实际数据,import_meta_graph 是可选部分,可以通过简单地以编程方式重新构建图形来替换。

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2020-04-14
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多