使用张量流服务预测图像-“错误”:“重塑的输入是具有 10000 个值的张量

Posted

技术标签:

【中文标题】使用张量流服务预测图像-“错误”:“重塑的输入是具有 10000 个值的张量【英文标题】:predicting images using tensorflow serving - "error": "Input to reshape is a tensor with 10000 values 【发布时间】:2021-11-19 15:04:16 【问题描述】:
# server URL
url = 'http://localhost:8501/v1/models/img_classifier:predict'


def make_prediction(instances):
    data = json.dumps("signature_name": "serving_default", "instances": instances.tolist())
    headers = "content-type": "application/json"
    json_response = requests.post(url, data=data, headers=headers)
    print(json_response.text)
    predictions = json.loads(json_response.text)['predictions']
    return predictions

reshaped_array = tf.expand_dims(temp_image, 0)

prediction = make_prediction(reshaped_array)

打印(json_response.text)时出现错误,

"error": "reshape 的输入是一个有 10000 个值的张量,但是 请求的形状需要 784 的倍数\n\t [[node sequence_2/flatten_2/Reshape]]"

我正在尝试对图像中的边界框进行分类。 问题从这部分开始instances.tolist() 如果我删除.tolist(),我会得到

TypeError: Object of type EagerTensor is not JSON serializable

如果我保留它,那么它会破坏图像尺寸。 我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

找到问题了!

我不得不重新训练模型,并使用以下代码保存它:

MODEL_DIR = 'imageClassifier2021'
version = 1
export_path = os.path.join(MODEL_DIR, str(version))
tf.keras.models.save_model(
    model,
    export_path,
    overwrite=True,
    include_optimizer=True,
    save_format=None,
    signatures=None,
    options=Non

e )

【讨论】:

以上是关于使用张量流服务预测图像-“错误”:“重塑的输入是具有 10000 个值的张量的主要内容,如果未能解决你的问题,请参考以下文章

未腌制的张量流模型无法做出预测

张量流的第一个密集层中的 input_shape 错误

如何在张量流中随机旋转不同角度的图像

有没有办法从张量流中的图像中获取 IUV 图?

如何在张量流中为非分类对象创建一个类?

如何在张量流中加载本地图像?