如何使用预训练的张量流模型对图像进行 运行 预测?
How to run predictions on image using a pretrained tensorflow model?
我已将此 retrain.py 脚本改编为与多个预训练模型一起使用,
训练完成后,这会生成一个 'retrained_graph.pb',然后我阅读并尝试使用此代码对图像进行 运行 预测:
def get_top_labels(image_data):
'''
Returns a list of labels and their probabilities
image_data: content of image as string
'''
with tf.compat.v1.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data})
return predictions
这适用于 inception_v3 模型,因为它有一个名为 'DecodeJpeg' 的张量,我正在使用的其他模型,例如 inception_v4、mobilenet 和 inception_resnet_v2 不要t.
我的问题是我可以向图表添加一个操作,就像在 retrain.py 脚本中的 add_jpeg_decoding
中使用的那样,以便我以后可以将其用于预测吗?
是否可以这样做:
predictions = sess.run(softmax_tensor, {image_data_tensor: image_data})
其中 image_data_tensor
是一个取决于我使用的模型的变量?
我查看了 Whosebug,但找不到解决我问题的问题,非常感谢任何帮助,谢谢。
我至少需要知道这是否可能。
抱歉重新发布我的第一个没有意见。
所以经过一番研究,我想出了一个办法,在这里留下答案,以备不时之需。您需要做的是自己解码,使用 t = read_tensor_from_image_file
找到 here 从图像中获取张量,然后您可以 运行 使用这段代码进行预测:
start = time.time()
results = sess.run(output_layer_name,
{input_layer_name: t})
end = time.time()
return results
通常 input_layer_name = input:0
和 output_layer_name = final_result:0
。
我已将此 retrain.py 脚本改编为与多个预训练模型一起使用, 训练完成后,这会生成一个 'retrained_graph.pb',然后我阅读并尝试使用此代码对图像进行 运行 预测:
def get_top_labels(image_data):
'''
Returns a list of labels and their probabilities
image_data: content of image as string
'''
with tf.compat.v1.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data})
return predictions
这适用于 inception_v3 模型,因为它有一个名为 'DecodeJpeg' 的张量,我正在使用的其他模型,例如 inception_v4、mobilenet 和 inception_resnet_v2 不要t.
我的问题是我可以向图表添加一个操作,就像在 retrain.py 脚本中的 add_jpeg_decoding
中使用的那样,以便我以后可以将其用于预测吗?
是否可以这样做:
predictions = sess.run(softmax_tensor, {image_data_tensor: image_data})
其中 image_data_tensor
是一个取决于我使用的模型的变量?
我查看了 Whosebug,但找不到解决我问题的问题,非常感谢任何帮助,谢谢。 我至少需要知道这是否可能。 抱歉重新发布我的第一个没有意见。
所以经过一番研究,我想出了一个办法,在这里留下答案,以备不时之需。您需要做的是自己解码,使用 t = read_tensor_from_image_file
找到 here 从图像中获取张量,然后您可以 运行 使用这段代码进行预测:
start = time.time()
results = sess.run(output_layer_name,
{input_layer_name: t})
end = time.time()
return results
通常 input_layer_name = input:0
和 output_layer_name = final_result:0
。