【发布时间】:2016-11-15 15:06:41
【问题描述】:
我有一个实时应用程序,我试图在来自提要的图像到达时对其进行分类。分类图像示例有:
image_data = tf.gfile.FastGFile(image, 'rb').read()
#...
with tf.Session() as sess:
predictions = sess.run(softmax_tensor,
{'DecodeJpeg/contents:0': image_data})
其中image 是图像文件的路径。但是,我不是从文件中读取图像,而是将它们作为 numpy 数组接收。在先前获取的图像上运行 Tensorflow 会话的最佳方式是什么?此外,最好的做法是事先创建一个会话和一个图表,并且每当获取新帧时,在新图像上运行现有会话,而不是创建新图表和新会话?
编辑:
我试过了:
images_placeholder = tensorflow.placeholder(tensorflow.int32)
predictions = sess.run(softmax_tensor,
{images_placeholder: image})
它成功了!谢谢sygi!
编辑 2:
这会在没有错误消息的情况下在一段时间后崩溃,并且每一帧都具有相同的预测标签。我什至在每一帧都创建了一个新的 images_place 对象,但我仍然得到相同的标签。
【问题讨论】:
-
顺便说一句,给占位符提供预定义的形状(如果你知道的话)是一个好习惯——这样调试形状会更容易。
-
你的
image是什么?您应该每次提供不同的(一批)图像。 -
这是一个新图像,代码 sn-p 被循环调用,视频源中的每一帧都被放入变量
image -
然后模型接收到不同的图像。如果给出相同的预测,问题似乎出在模型的某个地方。就错误而言,我不知道(尤其是没有堆栈跟踪),但我也怀疑原因不在这两行。
-
我在循环中的每次迭代都使用了
softmax_tensor = sess.graph.get_tensor_by_name('softmax:0'),每次迭代都应该改变吗?
标签: python numpy tensorflow