文件交换

图像缩略图

深度学习工具箱转换器,用于ONNX模型格式

MATLAB中的导入和导出ONNX™模型,用于与其他深度学习框架互操作性

60下载

更新5月20日12月12日

MATLAB内的进出口onnx™(开放式神经网络交换)模型与其他深度学习框架的互操作性。ONNX使模型能够在一个框架中接受培训并转移到另一个框架以进行推断。

从操作系统中打开OnnxConverter.mlPkginStall文件或Matlab中的文件将启动您拥有的发布的安装过程。
此MLPKGINStall文件对于R2018A及更大的功能是功能的。

用法示例:
%%导出到ONNX模型格式
net =挤压;%备用模型要出口
filename ='screezenet.onnx';
exportonnxnetwork(net,f​​ilename);

%%导入导出的网络
net2 = importonnxnetwork('scriezenet.onnx','outputlayertype','分类');

%比较随机输入图像上的两个网络的预测
img = rand(net.layers(1).Inputsize);
y =预测(网,IMG);
Y2 =预测(Net2,IMG);

Max(ABS(Y-Y2))

要在MATLAB中导入ONNX网络,请参阅:
//www.tatmou.com/help/deeplearning/ref/importonnxnetwork.html.

要从MATLAB导出ONNX网络,请参阅:
//www.tatmou.com/help/nnet/ref/exportonnxnetwork.html.

评论和评级(80

婷苏

嗨,你使用的是matlab的释放?这可能是我们已经修复的问题。如果您可以与我们分享您的Onnx模型,我们可以看看。

米格里菲

使用nnet.internal.cnn.onnx.translateonnx> getdatafromtydedFieldorRawdata(第252行)错误
找不到初始化程序'const_empty_float_float_ver_522'的数据。

@David请分享导出的.onnx文件,否则我们无法帮助您调试

大卫

这一切都很好,但现在显示它在onnxruntime工作。我一直无法找到或找到其他人可以,在matlab和onnxruntime之间远程相同的答案。我不确定它是否是我的Python代码或导出的.onnx文件,但到目前为止,我还没有看到它在例如它中工作的一个例子。python与onnxruntime。我从MathWorks看到的唯一举例是使用一个随机数组,在这里给出了一个答案https://stackoverflow.com/questions/62372645/run-inference-using-onnx-model-in-python-input-incompatibility-problem.
还有其他人是否能从Matlab将培训的模型导出到Onnx并在另一个环境中使用它?

raar a

婷苏

@jin,您可以使用“importonnxlayers”进口商分层图,添加输出图层并使用“assemblenetwork”将图表图转换为dagnetwork。

Jon Cherrie.

@David - 如果您使用的是Windows,那么您可能会击中此错误://www.tatmou.com/金宝appsupport/bugreports/2465087.。该错误报告中列出了一个解决方法。

大卫

在2020年工作,但在2021A中崩溃。

金路易斯

好的,现在,我的matlab版本2018b,我发现了一个问题:
错误使用NNET.INTERNAL.CNN.NONX.TRANSLATEONNX(第35行)
尚未支持具有多个输出的模型。金宝app

出错nnet.internal.cnn.onnx.importonnxnetwork(第8行)
playersorgraph = nnet.internal.cnn.onnx.translateonnx(ModelProto,OutputLayerType,
UserimageInputSize,True);

出错IXINENCNEXNETWORK(第53行)
network = nnet.internal.cnn.onnx.importonnxnetwork(模块,varargin {:});

出错test_network_01(第4行)
net = importonnxnetwork('best.onnx','outputlayertype','classification','classes',classes)
如何解决它?

亲爱的汀苏:
复制onnxpb.dll后,它现在可以工作,非常感谢!

Hiroyuki Hishida

亲爱的苏,
我还在R2021A(9.10.0.1602886(R2021A))上遇到了这个问题,并尝试过追随它。
COPYFILE C:\ programdata \ matl金宝appab \ supportagepackages \ r2021a \ bin \ win64 \ onnxpb.dll c:\ programdata \ matlab \ supportpackages \ r2021a \ toolbox \ nnet \ supportpackages \ onnx \ + nnet \ +内部\ + cnn \ + onnx \

婷苏

崔,
我们的工程师发现了原因和解决方法。你可以尝试以下命令吗?
mv c:\ programdata \ matl金宝appab \ supportpackages \ r2021a \ bin \ win64 \ onnxpb.dll c:\ programdata \ matlab \ supportpackages \ r2021a \ toolbox \ nnet \ supportpackages \ onnx \ + nnet \ +内部\ + cnn \ + onnx \

亲爱的汀苏:
我正在使用MATLAB2021A,ONNX模型格式的转换器(Version21.1.0)

婷苏

嗨崔,
你能告诉我们你正在使用的matlab发布吗?

2021.3.15更新:运行错误报告
无论导入或导出常见的ONNX模型(RESET50,RESET18等),发生错误
-------------------------------------------------------------------------
使用nnet.internal.cnn.onnx.onnxmex时出错
无效的mex-file'c​​:\ programdata \ matlab \金宝app supportspackages \ r2021a \ toolbox \ nnet \ supportagepackages \ onnx \ + nnet \ +内部\ + cnn \ + onnx \ onnxmex.mexw64':
nnet.internal.cnn.onnx.modelproto(第32行)错误错误
modelptr = onnxmex(int32(funcname.edeserializefromfile),filename);
nnet.internal.cnn.onnx.importonnxfunction(第8行)错误错误
modelproto = nnet.internal.cnn.onnx.monx.modelproto(InputFileName);
importonnxfunction中的错误(第39行)
params = nnet.internal.cnn.onn.onnx.importonnxfunction(模块,OutputFunctionname);
onnxtest(第3行)错误
Params = ImportOnnXFunction(OnnxPath,'Yolov5fcn');
----------------------------------------------------------------------------------
使用nnet.internal.cnn.onnx.onnxmex时出错
无效的mex-file'c​​:\ programdata \ matlab \金宝app supportspackages \ r2021a \ toolbox \ nnet \ supportagepackages \ onnx \ + nnet \ +内部\ + cnn \ + onnx \ onnxmex.mexw64':
nnet.internal.cnn.onnx.modelproto / writeTofile的错误(第52行)
modelptr = onnxmex(int32(funcname.enewmodelproto));
nnet.internal.cnn.onnx.exportonnXnetwork(第38行)错误错误
WriteTofile(ModelProto,filename);
e出名松xnetwork中的错误(第38行)
nnet.internal.cnn.onn.nonn.nonn.exportonnxnetwork(网络,文件名,varargin {:});

在R2020B中引入了“impriorNonNXFunction”功能,这非常好,但导入的功能是可读性差不多的,手动修改不易;此外,MathWorks计划是否介绍“exportOnnxfunction”功能?我个人建议MathWorks应该加强定制层的灵活性,并且可再现的可读性将大大提高!

什么时候支持Opse金宝appt版本10校准量化-onnx进口?如量化resnet50?
链接:https://pan.baidu.com/s/1mcm2w4r5bufu -raqv8aug.
提取码:afba

10月14日更新了2020年?发行说明?

mark

为什么这个功能不支持浅层神经网络?金宝app

我如何使用我的神经网络。作为天蓝色的模型?有什么小贴士吗?

mark

r nawaz.

如何下载深度学习工具箱转换器进行Onnx型号格式并将其脱机(未连接到Internet)

Jean-Nicola Blanchet

该文档表示Tanhlayer支持,但是当我尝试导出它时,我得到了:金宝app
PlaceHolder2占位符运营商:com.mathworks

我做错了什么?

Jan Drgona.

你好,

此代码是否为CNN架构以外的工作?

谢谢,
1月

对于ONNX,它应该是ONNX对运营商的细粒度,而不是粗糙的“层”,例如,我自定义了一个网络层YOLOV3Layer,如何导出到ONNX?

jakob nikolas kather.

目前不支持Shuffleenet模型金宝app

Saad Al-Baddi

亲爱的Mathworks深入学习工具箱团队:

您是否有一个可以支持'nnet.cnn.layer.regionprop金宝apposallayer',nnet.cnn.layer.rpnclassificationlayer和nnet.cnn.layer.rpnsoftmaxlayer的新版本吗?

Hamed Bastami.

亲爱的Mathworks深入学习工具箱团队:
嗨,我试图使用e出dneeonnxnetwork,我跑了这部分代码,但我看到了这个错误,你能帮我吗?!
用法示例:
%%导出到ONNX模型格式
net =挤压;%备用模型要出口
filename ='screezenet.onnx';
exportonnxnetwork(net,f​​ilename);
---------------------------------
出现此错误:
使用onnxmex错误
打开文件'screezenet.onnx'失败。

nnet.internal.cnn.onnx.modelproto / writeTofile的错误(第55行)
onnxmex(int32(funcname.eserializoTofile),modelptr,filename);

nnet.internal.cnn.onnx.exportonnxnetwork(第36行)错误
WriteTofile(ModelProto,filename);

ExportOnnXnetwork中的错误(第40行)
nnet.internal.cnn.onn.nonn.nonn.exportonnxnetwork(网络,文件名,varargin {:});

亲爱的Mathworks Deeplenting Toolbox团队:
当我使用另一个简单的3D CNN Import测试时,错误有一个错误???
我的3D网络是:https://drive.google.com/open?id=1vrx44wv1ywisondbw5stbqhurdmhf0c_
使用Assemblenetwork(第47行)错误
无效的网络。
nnet.internal.cnn.onnx.importonnxnetwork(第11行)错误错误
网络= Assemblenetwork(PlayerSorgraph);
ImportOnnknetwork中的错误(第52行)
network = nnet.internal.cnn.onnx.importonnxnetwork(模块,varargin {:});
由:
图层'node_22':图层验证失败。使用“图层nnet.onnx.layer.flattenlayer”中使用“预测”时出错。该函数抛出错误,不能
执行。
使用erfute时出错
订单必须具有N-D阵列的至少n个元素。
图层'node_22':图层验证失败。使用“图层nnet.onnx.layer.flattenlayer”中使用“预测”时出错。该函数抛出错误,不能
执行。
使用erfute时出错
订单必须具有N-D阵列的至少n个元素。
层'node_22':输入大小不匹配。输入到该层的输入大小不同于预期的输入大小。
输入到此图层:
从层'node_21'(1×4×4×512输出)

嗨,@kristina mikolaichuk
我很遗憾地告诉你,根据警告,当前版本不支持某些图层'nnet.cnn.layer.regionproposallayer',...等,只有支持层的权重。金宝app

Kristina Mikolaichuk.

你好!你可以帮帮我吗?当我尝试导出更快的RCNN网络时,有一些警告:

警告:ONNX不支持“NNET.CNN.Lay金宝apper.regionProposAllayer”图层。导出到ONNX运营商
'com.mathworks.placeholder'。
警告:ONNX不支持“NNET.CNN.Lay金宝apper.rpnsoftmaxlayer”。导出到ONNX运营商
'com.mathworks.placeholder'。
警告:ONNX不支持Layer'NNET.CN金宝appN.Layer.rpnclassificationLayer'。出口到ONNX.
操作员'com.mathworks.placeHolder'。

将来是否可以在将来的更新中得到支持?金宝app

2019年11月15日的版本仍无法导入和导出yolov2网络!

此版本现在支持导入3D卷积神经网络金宝app,但使用导入的3D卷积网络时,“激活”功能将失败?
我的简单3D CNN在这里:https://drive.google.com/file/d/15i0ieinwaqqexairnfv1eittqwma5ryi/view?usp=sharing.

Mathias举行

仍然没有与回归输出层的Bilstm层一起使用

梁成金

嗨,当我从keras网络导入图层时,会发生错误:
“导入在Keras模型中的”导入“LSTM”图层,尚未支持使用功能API构建的模型'金宝app
那么,我该怎么办才能克服这个问题?

亲爱的Mathworks深入学习工具箱团队:
我希望特征版本更加丰富地支持Onnx运算符,而不仅仅是目前的28个运金宝app营商。
希望以后版本更丰富的支持onnx运算符,不依然是目前的28种运营商。
到目前为止,“ImportCEnfenetwork”功能非常糟糕。
到目前为主“ImportCEnfenetwork”这这个数表现的很差!
快点!
加油!

andreas herzog.

@cui

我们几乎跟随了这样的例子

https://github.com/microsoft/onnxruntime/blob/master/csharp/test/microsoft.ml.onnxruntime.endtoendtests.capi/cxx_api_sample.cpp.

并且网络似乎有效。我没有想出如何为新序列重置LSTM层的内部状态。我们只是重新加载模型。

最良好的祝愿

andreas.

亲爱的苏,
我可以非常自由且方便地导入MobileNetv2模型,而是自由方便地使用MATLAB,但是当我在Pytorch-Onnx框架中保存MobileNetv2.onnx时,就无法正确导入普通冰的最后一层。为什么?
https://github.com/tonylins/pytorch-mobilenet-v2.,Onnx Liaybray可以责任地导入和导出,Matlab不能...

警告:无法导入一些ONNX运算符,因为它们不支持。金宝app他们已被占位符层所取代。找到
这些图层,调用返回对象上的函数FindPlaceHolderLayers。
>在nnet.internal.cnn.onn.onnx.importonnxlayers(第13行)
在ImportOnnxLayers(第48行)

嗨@andreas herzog:
请问如何在C ++接口功能中使用LSTM Onnx模型?也是Matlab的序列功能,有这样的示例代码可以指代,谢谢!

andreas herzog.

亲爱的Matlab团队,

导出和加载LSTM模型现在正常工作,也使用C ++接口进行评分。

我注意到的一个次要的东西,输出张量不能像网络中的速度层一样调用,而是作为层名称和最后一个计算机图操作的组合。

因此,我的最后一层名为“fc_2”(来自深度学习工具箱的标准名称),但是必须使用“FC_2_ADD”在C ++接口中检索OutputTensor,当您使用Netron应用程序加载ONNX文件时也会显示。

这是必要的吗?我们在我们的模型中保存说明一个序列化的ONNX文件和某个图层的名称作为输出张量控制哪个计算图形节点充当输出。由于某些类型,这不必是必需的速度层(例如,与AutoEncoder编码)。

所以可以将这可以返回到前面的行为或我们可以从图层结构中读取,正确的张量名称应该是什么样的?

祝福,非常感谢努力。

andreas.

andreas herzog.

亲爱的Matlab团队,

新版本(8月1日)似乎可以解决LSTM导出问题。

使用Python OnnxRuntime 0.5与GitHub上的给定示例进行测试。

非常感谢!

andreas.

andreas herzog.

亲爱的苏,

在新版本上写入LSTM兼容Onnx运行时的任何单词?

抱歉是一种痛苦,但我们需要那些功能为客户提供模型。

最良好的祝愿

andreas.

Saikishore Reddipalli.

我能够将安装位置指向具有足够空间的文件夹以完成此操作。matlabshared.金宝appsupportpkg.setsupportpackageroot()

谢谢。

Saikishore Reddipalli.

我正在击中Onnx的安装。甚至无法下载该文件。我正在使用Rhel 7.5。关于这个问题的任何想法吗?

魏庄林

你好,
我正在尝试导出模型以在Tensorflow中使用它。它基本上与此相同
https://de.mathworks.com/help/deeplearning/examples/cocktail-party-source-eparation-using-deep-learning-networks.html.
我收到警告:“警告:Onnx不支持图层'偏见的声光层'。导出到Onnx Operator金宝app'Com.Mathworks.PlaceHolder'。”因为其中一个图层是自定义S形层。
我未能导入tensorflow获取错误
validationError:没有为占位符注册的模式,其中domain_version为1
==>上下文:坏节点规范:输入:“fc_1”输出:“layer_1”名称:“layer_1”op_type:“占位符”doc_string:“占位符运算符”域:“com.mathworks”
无论如何我可以解决这个问题吗?
我的Onnx Modell:https://drive.google.com/open?id=1c5itcpoyu2xkmozniugrietlsixeewyk.

提前致谢

andreas herzog.

亲爱的苏,

优秀!:D.

最良好的祝愿

andreas.

婷苏

嗨andreas,
新版本将很快发布。

凯文CHNG.

它与yolov2合作吗?

andreas herzog.

亲爱的苏,

在新版本上的任何单词,可以用LSTM解析问题(见GitHub票)。我们希望将某些型号部署到具有onnxruntime的应用程序中。

最良好的祝愿

andreas.

亲爱的苏,
由exportonnxnetwork()导出的ONNX模型与OpenCV和Matlab运行的结果不同?我在这里发布了我的问题:
https://ww2.mathworks.cn/matlabcentral/answers/464550-the-enx-model-exported-by-exportonnxnetwork-is-not-the-same-as-the-ropencv-一个

Gabriel Mittag.

嗨苏,
我注意到最近的转换器更新,但LSTMS似乎似乎没有正常工作。我在这里发布了我的问题:
https://de.mathwands.com/matlabcentral/answers/457176-nonx-export-yields-error-in-windows-ml?s_tid=prof_contriblnk.

亲爱的苏,
当前的ONNX版本是否支持目标检测网络的导出,例如YOLOV金宝app2网络(导出到YOLOV2.ONNX)?

andreas herzog.

亲爱的苏,

是的,那是我在github上打开的问题。

https://github.com/microsoft/onnxruntime/issues/1016

最良好的祝愿

andreas.

婷苏

嗨andreas,
我们注意到,Matlab Onnx Converter导出的一些LSTM模型与ONNX运行时不适用于onnx运行时,尽管它们可以加载到其他框架中,因为ONNX运行时严格遵循ONNX规范的形状要求。MATLAB ONNX转换器的新版本将很快发布,它将更好地使用ONNX运行时。

婷苏

嗨andreas,
谢谢你的问题。这是在以下链接中报告的同一问题吗?
https://github.com/microsoft/onnxruntime/issues/1016
我们正在研究这个,并很快就会回复你。

andreas herzog.

亲爱的Matlab团队,

我们正在导出LSTM模型(基本上构建,如窗扇与序列回归示例中的描述,使用TurboOMAN发动机示例数据。

在onnxruntime中导入时,我们收到错误消息(从源0.4.0版本版本版本):

从Temp.onx的加载模型失败:节点:FC_2输出:FC_2 [ShopeInferiferError]源尺寸和目标尺寸之间的不匹配。source = 2 target = 3

我们可以在网龙中加载ONNX文件,只需使用奇数<1x1x1>维度的FC_2输出。预期的输出尺寸可能会混淆吗?

我们可以为您发送Onnx-file / matlab nnet以获取一些帮助。

很欣赏。

Alessandro Gherardi.

从MATLAB导出到其他运行时引擎的模型与琐碎的例子相比,无法正常工作。我已经看到奇怪的形状翻转ONNX网络层,这导致导致Python Frameworks或C#时的失败。

Michael Scheinfeild.

当我将模型导入C ++时,我在MATLAB中的输出层可以在C ++ OpenCV或TensorFlow中提供相同的结果,从而将图层出入与Matlab相同
模拟图层

洪王

感谢Jihang Wang,与您帮助我设置此工具。

Tommaso Martire.

Gabriel Mittag.

嗨Jihang,感谢分享此信息,不幸的是,它没有解决我的情况。

王王

大家好,我找到了在Mathworks技术支持团队的帮助下它不起作用的原因。金宝app我只是想在这里分享我的经验。基本上我的路径上有一个函数,它是阴影的内置MATLAB函数。我使用下面的代码重置我的MATLAB路径:
>> RestoredeFaultPath.
>> Rehash ToolBoxCache.
>> SavePath%注意:此命令将覆盖我当前的路径首选项。

之后,我从此页面下载并重新安装了转换器应用程序并重新运行了导出代码。问题解决了:)希望这有帮助。

Gabriel Mittag.

嗨Andreas,我只是用了一个自定义CNN并用WinMLRunner检查它,但我没有尝试任何预用的模型。

andreas wirth.

嗨加布里埃尔
你能告诉我你使用哪个CNN?
如前所述,在我尝试基本的googlenet之前,我无法与Microsoft ML一起使用它。
如果我可以使用ONNX文件交换,这将是非常有帮助的。
提前致谢

Gabriel Mittag.

嗨Ting,非常感谢Opset更新。但是,现在我获得与LSTM网络的Andreas相同的错误:“第一个输入没有等级2”。如果在网络中有多个LSTM层,则错误消息以某种方式更改为:“第一个输入张量必须具有等级3”,CNNS似乎工作。

婷苏

嗨Andreas和Jihang,你能达到我们的技术支持并向我们发送模型吗?金宝app

andreas wirth.

嗨Ting,我用C#遇到了同样的问题。我可以在不同的版本中导出网络。如果我尝试将模型加载到Windows.ml中,我得到了一个“shopeIndirederror”,第一个输入没有等级2.使用Opset V6可以加载文件,但无法使用它。我测试了googlenet并尝试将ONNX模型与名为“Netron”的程序进行比较。我发现的差异是,第一层“子”从[3x244x244]到[1x3x244x244],但我不确定这是问题。第二件事是,使用Onnx V6 Visual Studio可以自动生成型号,但不具有V7或更高版本。似乎它没有被识别为ONNX模型。你能提供如何在C#中使用matlab训练模型的建议吗?

王王

在C#中加载ONNX模型时,我有同样的问题。我试图将模型保存到不同的Opset版本,但它们都没有工作。请指教。

婷苏

嗨加布里埃尔,
我们最近添加了对ONNX Opset金宝app 7,8和9的支持。一个可以指定在导出期间通过可选的输入参数'opsetversion'使用哪些foneSet。如果您有R2018B Matlab,您应该能够下载它。

婷苏

kennth,
我们看到了类似的问题,此处将很快发布。如果您可以向我们发送MATLAB模型以允许我们测试它会很棒。

Gabriel Mittag.

如果导出可以更新到版本7或8,则会很好,以允许与Windows ML一起使用。

肯尼斯邮政

exportonnxnetwork不使用cntk和python正常工作。转换产生值:GEMM:无效的形状,输入A和B预期为RANK = 2个矩阵。

惠寅李

嗨,是用于导出更快的R-CNN模型的代码或工具箱吗?当我收到提到的错误时,模型不是Dagnetwork。希望能在这里获得一些反馈或帮助

瑞安穆克烈

你们是否知道何时增加常量运算符?金宝app

使用importonnxnetwork时出错(第39行)
节点'node_20':尚未支持恒定的运算符。金宝app

Umit Kacar.

我工作了这个代码:)这很好。谢谢你。

婷苏

嗨trihn,
我们希望了解有关importonnxnetwork()问题的详细信息。您之前是否安装过旧版本的转换器?

Trinh Pham.

当我使用上面的示例时,函数importonnxnetwork()不起作用!

Matlab释放兼容性
用R2018A创建
兼容R2018A至R2021A
平台兼容性
视窗 苹果系统 Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!