【问题标题】:Error while trying to predict on SavedModel using tensorflow 2尝试使用 tensorflow 2 在 SavedModel 上进行预测时出错
【发布时间】:2020-03-20 12:40:35
【问题描述】:

我正在尝试使用以下代码预测保存的模型

 features = np.ones((20, 40, 3), dtype=np.float32)
 features = tf.convert_to_tensor(value, dtype=tf.float32)
 imported_model = tf.saved_model.load(export_dir=os.path.join(os.path.join(model_path, directory)))
 import_fn = imported_model.signatures["serving_default"]
 import_fn(features)

使用 Tensorflow 2 运行时出现以下错误。使用 saved_model_cli 时模型预测工作正常。

tensorflow.python.framework.errors_impl.InvalidArgumentError:  In[0] is not a matrix. Instead it has shape [20,40,3]
     [[node dense/BiasAdd (defined at model_manager.py:54) ]] [Op:__inference_pruned_318590]

保存的cli命令如下

saved_model_cli run --dir ./model_dir --tag_set serve --signature_def serving_default --input_exprs 'input=np.ones((20, 40, 3), dtype=np.float32)'

【问题讨论】:

    标签: python tensorflow tensorflow2.0


    【解决方案1】:

    InvalidArgumentError 通常是由输入中的Data Type mismatch 引起的。

    根据您的错误“In[0] 不是矩阵。相反,它的形状为 [20,40,3]”。
    您可以尝试操作输入数据以正确匹配模型最初训练的输入类型和形状。当您使用 saved_model_cliPython IDE 相比时,您还可以检查模型如何处理您的输入。因为您在使用 Python IDE 时可能会遗漏一些预处理步骤,而这些步骤是在使用 saved_model_cli 时完成的。

    您可以在link 中了解更多关于使用 Saved_Model 格式 的用法。

    【讨论】:

    • 我编辑了问题以包含 saved_model_cli 命令。我实际上在相同形状和类型的 numpy 数组上进行了尝试。我认为这不是类型问题。
    • 嗨@VBK,我想知道如果您在 Python 代码“features = tf.convert_to_tensor(value, dtype=tf.float32)”。谢谢。
    • 我收到错误所有ConcreteFunctions 的输入必须是张量;
    • 您好@VBK,我不知道您是否注意到,但您的代码 sn-p 中有错误,无论是否有意,我都不是这样。 features = np.ones((20, 40, 3), dtype=np.float32) features = tf.convert_to_tensor(value, dtype=tf.float32)..您似乎在传递 value 变量而不是 features 变量。
    • @VBK 另外,我想请您提供“saved_model_cli show --dir /tmp/saved_model_dir --tag_set serve --signature_def serving_default”的结果。让我们更轻松地解决您的问题。
    猜你喜欢
    • 2018-02-04
    • 2018-07-25
    • 2021-08-29
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多