我已经在Sagemaker上构建了TensorFlow模型,并且可以与实时推断很好地工作,但是我想使用批处理转换功能,因此我开始寻找输入数据的方法。我开始使用save_model_cli在本地调试模型:
saved_model_cli show \
--dir . \
--tag_set serve \
--signature_def serving_default
The given SavedModel SignatureDef contains the following input(s):
inputs['inputs'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 50, 11)
name: lstm_input:0
The given SavedModel SignatureDef contains the following output(s):
outputs['dense/BiasAdd:0'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 1)
name: dense/BiasAdd:0
Method name is: tensorflow/serving/predict
我假设,根据上面的输出,我的输入数据称为inputs
,但是,当我运行以下代码时,会出现错误
saved_model_cli run \
--dir . \
--tag_set serve \
--signature_def predict \
--input_examples 'inputs=[{"":[1.2]}]'
ValueError:“输入”不是有效的输入键。请从“”中选择,或使用--show选项。
我试图提供一个npy文件(--inputs inputs=batch_transform.npy
),它使用不同的数据表示形式,但是总是出现相同的错误。
用以下代码保存我的模型:
tf.saved_model.simple_save(
tf.keras.backend.get_session(),
os.path.join(model_dir, 'model/1'),
inputs={'inputs': model.input},
outputs={t.name: t for t in model.outputs})
我尝试了TF 1.12和1.14版本,但结果是相同的。
有什么建议吗?
答案 0 :(得分:1)
我遇到了同样的问题,解决方法很简单。您可以从您的订单中看到 "--signature_def serving_default"
,这意味着您的 signature_def_default
是 "serving_default"
。
但是,当您运行它时,您使用的是 "--signature_def predict"
,这与 "serving_default"
明显不同。