TensorFlow Hub 上的北美地标分类模型输出不匹配

问题描述

我正在尝试从 tensorflow 中心加载预训练模型(链接在这里https://tfhub.dev/google/on_device_vision/classifier/landmarks_classifier_north_america_V1/1)。当我对单个图像运行推理时,我得到长度为 99424 的输出,但相应的标签图长度为 99676。这对我来说没有任何意义,因为两者的长度应该相同。由于此错误,该模型无法准确分类。有没有其他人有同样的错误。如果没有,将不胜感激任何指导。

import tensorflow.compat.v2 as tf
import tensorflow_hub as hub

model = hub.KerasLayer(model_url,output_key='predictions:logits')
landmarks = pd.read_csv(landmark_file)
image = load_image(im_path) # (321,321,3) scaled between [0,1]
output = model(image)
prediction = landmarks['name'][int(tf.math.argmax(output,1))]

此外,我在加载模型时出现此错误

INFO:tensorflow:Saver not created because there are no variables in the graph to restore

感觉是tensorflow hub的模型有问题,但不完全确定

解决方法

截至 2021-03-18,标签图中的不一致问题已得到修复。您只需要重新下载标签映射文件,这些文件是从 tfhub.dev 上的模型页面引用的。希望能帮到您,给您带来的不便敬请谅解!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...