我已经将savedModel格式转换为onnx模型,但是当通过onnx加载它时
import onnxruntime as rt
sess = rt.InferenceSession('model.onnx')它抛出了下面的错误:
onnxruntime.capi.onnxruntime_pybind11_state.InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : Load model from /mnt/model/io_files/convert/1606801475/model.onnx failed:This is an invalid model. Type Error: Type 'tensor(float)' of input parameter (const_fold_opt__342) of operator (Slice) in node (StatefulPartitionedCall/mobilenet_1.00_224/reshape_1/strided_slice) is invalid.我使用的savedModel是来自tensorflow网站https://www.tensorflow.org/guide/saved_model的Keras预训练MobileNet。
我看到netron中的参数是浮动的,但我无法解决和理解这个问题。
以下是netron的片段:

发布于 2020-12-02 03:36:32
看起来像是Keras->ONNX转换器中的错误。
切片的starts输入必须为int32或int64:https://github.com/onnx/onnx/blob/master/docs/Operators.md#Slice
您可以尝试使用onnx Python接口来修补模型:加载模型、查找节点、更改输入类型。但是如果模型有这个问题,Keras->ONNX转换器可能没有经过很好的测试,可能还有其他问题。
你能找到一个等价的PyTorch模型吗?PyTorch->ONNX转换器应该更好。
https://stackoverflow.com/questions/65085722
复制相似问题