如何使用预训练的张量流模型对图像进行 运行 预测?

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:0output_layer_name = final_result:0