Converting from onnx generated by matlab is not working with other frameworks
1 view (last 30 days)
Show older comments
umit kacar
on 19 Sep 2018
Answered: michael scheinfeild
on 16 Apr 2019
I am trying to use my pretrained model in c++ application. I tried to convert from onnx to mxnet, pytorch and directly to caffe. All of them fails. Downloaded pretrained models work without any problems while importing into mxnet. https://mxnet.incubator.apache.org/tutorials/onnx/super_resolution.html This is the guide i followed. And .onnx file is added. Also error message is added with image.png. I am waiting your reply as soon as possible. Thank you in advance.
0 Comments
Accepted Answer
Don Mathis
on 21 Sep 2018
Hi Umit, That is a bug in whatever ONNX importer you are trying to use. It is failing because the ONNX file contains a 'Sub' operator that does not specify the 'axis' attribute. According to the ONNX specification, 'axis' is an optional attribute that has a default value. Yet the importer you are using incorrectly requires it.
According to the ONNX spec (https://github.com/onnx/onnx/blob/master/docs/Changelog.md#Sub-6):
"The starting of the mutually equal shape is specified by the argument "axis", and if it is not set, suffix matching is assumed."
The ONNX file you have attached can be imported into Tensorflow, and in that case the predictions made by the model match those of the original MATLAB network.
I suggest you file a bug report with whoever wrote the ONNX importer you are using.
1 Comment
Don Mathis
on 28 Sep 2018
I also recommend making sure you always have the latest monthly update of the ONNX converter.
More Answers (1)
michael scheinfeild
on 16 Apr 2019
after exported to onnx you can use cntk framework in python and then in c++
python code:
import cntk as C
import os
import numpy as np
from PIL import Image,ImageOps
#check cntk
print("imported cntk")
print(C.minus([1, 2, 3], [4, 5, 6]).eval())
#check onnx exist
print(np.DataSource().exists("net.onnx"))
#load onnx
z = C.Function.load("net.onnx", format=C.ModelFormat.ONNX)
# then you can save it to dnn format
z.save(os.path.join("foo", "Alexnet" + ".dnn"))
0 Comments
See Also
Categories
Find more on Image Data Workflows in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!