我使用 Keras/TF2.5 训练了一个简单的模型并将其保存为已保存模型。
tf.saved_model.save(my_model,'/path/to/model')
如果我通过检查它
saved_model_cli show --dir /path/to/model --tag_set serve --signature_def serving_default
我得到这些输出/名称:
inputs['conv2d_input'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 32, 32, 1)
name: serving_default_conv2d_input:0
outputs['dense'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 2)
name: StatefulPartitionedCall:0
名字serving_default_conv2d_input
and StatefulPartitionedCall
其实可以用来推理。
我想使用 python API 提取它们。如果我通过加载模型来查询它:
>>> m=tf.saved_model.load('/path/to/model')
>>> m.signatures['serving_default'].inputs[0].name
'conv2d_input:0'
>>> m.signatures['serving_default'].outputs[0].name
'Identity:0'
我得到完全不同的名字。
问题:
- 我怎样才能提取这些名字
serving_default_conv2d_input
and StatefulPartitionedCall
来自Python API?
- 或者,当我打电话时如何定义/修复名称
tf.saved_model.save
?
- 什么是
:0
mean?
还有附带问题:
如何通过 SavedModel 将 TF 模型部署到生产环境?