Python 使用特定类型的输入运行TensorFlow 2中的SavedModel

Python 使用特定类型的输入运行TensorFlow 2中的SavedModel,python,tensorflow,python-3.6,tensorflow2.0,Python,Tensorflow,Python 3.6,Tensorflow2.0,我正在尝试运行我在TensorFlow 2中以SavedModel格式准备的对象检测模型 该模型将字节编码的JPEG、PNG或GIF格式的输入作为编码的图像字符串张量:0,并输出典型的检测分数:0,检测框:0,等等 在TensorFlow 1.15中,我可以执行以下操作: 将tf.Session(graph=tf.graph())作为sess的: tf.saved_model.loader.load(sess,[“service”],路径到_model) cap=cv2.视频捕获(摄像机id)

我正在尝试运行我在TensorFlow 2中以SavedModel格式准备的对象检测模型

该模型将字节编码的JPEG、PNG或GIF格式的输入作为编码的图像字符串张量:0,并输出典型的检测分数:0检测框:0,等等

在TensorFlow 1.15中,我可以执行以下操作:

将tf.Session(graph=tf.graph())作为sess的
:
tf.saved_model.loader.load(sess,[“service”],路径到_model)
cap=cv2.视频捕获(摄像机id)
ret,frame=cap.read()
ret,encoded=cv2.imencode(“.jpg”,帧)
推断=sess.run([“检测分数:0”,“检测框:0”],feed\u dict={
“编码的\u图像\u字符串\u张量:0:[encoded.tobytes(),]
})
#使用此处的输出
我一直试图将这段代码转换为使用TensorFlow 2的新API,而不是兼容性库,但我一直遇到障碍。以下是我一直试图在TensorFlow 2中使用的代码:

load=tf.saved\u model.load(路径\u到\u model)
推断=已加载。签名[“提供默认值”]
#`encoded`与前面的示例相同,
#TF2始终请求“图像_字节”和“键”作为输入
预测=推断(image_bytes=encoded.tobytes(),key=”“)
"""
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“venv/lib/python3.6/site packages/tensorflow_core/python/eager/function.py”,第1551行,在调用中__
返回self.\u调用\u impl(args,kwargs)
文件“venv/lib/python3.6/site packages/tensorflow\u core/python/eager/function.py”,第1591行,在调用impl中
返回self.\u调用平面(参数、self.captured\u输入、取消\u管理器)
文件“venv/lib/python3.6/site packages/tensorflow\u core/python/eager/function.py”,第1684行,位于调用平面中
“张量”。%(self.\u func\u graph.name,i,str(arg)))
ValueError:'ConcreteFunction'的所有输入必须是张量;调用pruned时,第0个输入(b'…')不是张量。
"""
是否有一个功能相当于TensorFlow 1.x代码的TensorFlow 2.x不使用兼容性库,或者我的方法完全错误


我一直在引用TensorFlow的SavedModel文档,可在此处找到:。

当前的问题似乎是:

All inputs to `ConcreteFunction`s must be Tensors...
因此,与其传入
encoded.tobytes()
,不如尝试传入
tf.convert\u to_tensor(encoded.tobytes())

或者,查看的文档,它似乎提供了特定于图像的张量转换