0

I have converted a savedModel format to onnx model but when loading it via onnxruntime

import onnxruntime as rt
sess = rt.InferenceSession('model.onnx')

It throws me the below error:

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.

The savedModel I have used is Keras pretrained MobileNet from the tensorflow website: https://www.tensorflow.org/guide/saved_model.

I saw the parameters in netron is float but I am unable to address and understand this issue.

Below is the snip from netron: enter image description here

Nikhil
  • 65
  • 1
  • 8

1 Answers1

0

Looks like a bug in Keras->ONNX converter.

starts input of Slice must be int32 or int64: https://github.com/onnx/onnx/blob/master/docs/Operators.md#Slice

You can try to patch the model by using onnx Python interface: load the model, find the node, change input type. But if the model has this issue, the Keras->ONNX converter is probably not very well-tested and there are likely other issues.

Can you find an equivalent PyTorch model? PyTorch->ONNX converter should be much better.

Sergii Dymchenko
  • 6,890
  • 1
  • 21
  • 46