文件交换

图像缩略图

深度学习工具箱转换为ONNX模型格式

内MATLAB进出口ONNX™模型与其他深度学习框架的互操作性

54个下载

更新2020年3月18日

进出口ONNX™(开放式神经网络交换)内MATLAB模型与其他深度学习框架的互操作性。ONNX使模型在一个框架中进行培训,转让给他人的推理。

从您的操作系统或开口内MATLAB中onnxconverter.mlpkginstall文件将开始为你释放的安装过程。
这mlpkginstall文件是R2018a及以后的功能。

用法示例:
%%出口到ONNX模型格式
净= squeezenet;%至出口预训练的模型
文件名= 'squeezenet.onnx';
exportONNXNetwork(网,文件名);

%%导入网络导出
NET2 = importONNXNetwork( 'squeezenet.onnx', 'OutputLayerType', '分类');

%比较两个网络的预测的随机输入图像
IMG =兰特(net.Layers(1).InputSize);
Y =预测(净,IMG);
Y2 =预测(NET2,IMG);

最大(ABS(Y-Y2))

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

输出从MATLAB的ONNX网络,请参考:
//www.tatmou.com/help/nnet/ref/exportonnxnetwork.html

评论和评分(53

目前不支持的ShuffleNet模型金宝app

亲爱的MathWorks的深度学习工具箱团队:
嗨立方米

你有一个新的版本,它可以支持“nnet.cnn.layer.Region金宝appProposalLayer”,nnet.cnn.layer.RPNClassificationLayer和nnet.cnn.layer.RPNSoftmaxLayer?

亲爱的MathWorks的深度学习工具箱团队:
嗨,我试图用exportONNXNetwork,我跑这部分代码,但我看到了这个错误,你可以帮我请?
用法示例:
%%出口到ONNX模型格式
净= squeezenet;%至出口预训练的模型
文件名= 'squeezenet.onnx';
exportONNXNetwork(网,文件名);
-------------------------------------
这个错误出现:
使用onnxmex错误
打开文件“squeezenet.onnx失败。

误差在nnet.internal.cnn.onnx.ModelProto /将writeToFile(线55)
onnxmex(INT32(FuncName.EserializeToFile),ModelPtr,文件名);

误差在nnet.internal.cnn.onnx.exportONNXNetwork(线37)
将writeToFile(modelProto,文件名);

误差在exportONNXNetwork(线40)
nnet.internal.cnn.onnx.exportONNXNetwork(网络,文件名,varargin {:});

崔永元

亲爱的MathWorks的深度学习工具箱团队:
当我用另一种简单的三维网络CNN进口试验中,与所述误差的误差???
我的3D网络是在这里:https://drive.google.com/open?id=1vrX44WV1yWIsoNdbW5sTBQHurdMhf0c_
使用assembleNetwork误差(线47)
无效的网络。
误差在nnet.internal.cnn.onnx.importONNXNetwork(第11行)
网络= assembleNetwork(LayersOrGraph);
误差在importONNXNetwork(线52)
网络= nnet.internal.cnn.onnx.importONNXNetwork(modelfile,varargin {:});
致:
层“node_22”:层验证失败。使用错误“预测”在层nnet.onnx.layer.FlattenLayer。该函数抛出一个错误,不能
执行。
使用置换错误
ORDER必须具有用于N d阵列至少N个元素。
层“node_22”:层验证失败。使用错误“预测”在层nnet.onnx.layer.FlattenLayer。该函数抛出一个错误,不能
执行。
使用置换错误
ORDER必须具有用于N d阵列至少N个元素。
层“node_22”:输入大小不匹配。输入到该层的尺寸是从期望的输入尺寸不同。
输入到该层:
从层 'node_21'(1×4×4×512输出)

崔永元

嗨,@Kristina Mikolaichuk
我很遗憾地告诉你,根据预警,目前的版本不支持某些层,“nnet.cnn.layer.RegionProposalLayer”,...等,支撑层的只有重出口。金宝app

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

警告:ONNX不支持层“nnet.cnn.la金宝appyer.RegionProposalLayer”。导出到ONNX操作
'com.MathWorks.Placeholder'。
警告:ONNX不支持层“nnet.cnn.la金宝appyer.RPNSoftmaxLayer”。导出到ONNX操作
'com.MathWorks.Placeholder'。
警告:ONNX不支持层“nnet.cnn.la金宝appyer.RPNClassificationLayer”。导出到ONNX
运营商com.MathWorks.Placeholder“。

将这些层在未来的更新支持?金宝app

崔永元

11月15日的版本,2019依然无法导入和导出yolov2网络!

崔永元

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

还没与biLSTM层,回归outputlayer工作

凉城斤

嗨,当我导入层从Keras网络,会出现一个错误:
“导入‘LSTM’与功能API内置Keras模型层尚不支持”金宝app
所以,我应该做些什么来解决这个问题?

崔永元

亲爱的MathWorks的深度学习工具箱团队:
我希望该功能的版本将支持运营商ONNX更丰富,而不仅仅是目前的28个金宝app运营商。
希望以后版本更丰富的支持ONNX运营商,不仅仅只是目前的28个运算符。
到目前为止,“importCaffeNetwork”功能非常表现不佳。
到目前为止“importCaffeNetwork”这个函数表现的很差!
来吧!
加油!

嗨@cui

我们几乎遵循的例子

https://github.com/microsoft/onnxruntime/blob/master/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests.Capi/CXX_Api_Sample.cpp

和网络似乎工作。我还没有想出如何重置LSTM层的内部状态的一个新的序列。我们只是重新加载模型。

最良好的祝愿

安德烈亚斯

崔永元

亲爱的苏婷,
我可以导入和导出自带的MATLAB非常自由和方便的mobilenetv2模型,但是当我导入保存在pytorch-onnx框架mobilenetv2.onnx,averagePooling的最后一层不能被正确导入。为什么?
https://github.com/tonylins/pytorch-mobilenet-v2,onnx liabray可以导入和导出这种responsibily,MATLAB不能...

警告:无法导入一些ONNX运营商,因为他们尚不支持。金宝app他们已被替换占位符层。为了找到
这些层,调用返回的对象的功能findPlaceholderLayers。
>在nnet.internal.cnn.onnx.importONNXLayers(第13行)
在importONNXLayers(线48)

崔永元

喜@Andreas赫尔佐格:
我能问你如何使用C ++接口功能LSTM onnx模式?还与MATLAB的序列特征,有这样一个例子代码可以参考一下,谢谢!

亲爱的Matlab的团队,

导出和加载LSTM模型现在工作得很好,进球也使用C ++接口的作品。

我注意到一个次要的事情,输出张IST不叫喜欢在网络中但作为层姓和计算机图形操作的组合拉斯特层。

所以,我最后一层被命名为“fc_2”(标准名称从深度学习工具箱),但outputtensor具有在C进行检索++接口使用“fc_2_Add”当你载入一个Netron App中onnx文件,该文件还显示。

这是命名有必要吗?我们保存在我们的模型中描述的序列化onnx文件,并在一定层作为输出张量控制,计算图节点作为输出的名称。由于对于某些类型的这种不necessarly需要是拉斯特层(具有自动编码器例如编码)。

所以会这样设置回previouse行为或者我们可以从层结构看,正确的张量名称应该是什么样子?

最良好的祝愿,并感谢了很多的努力。

安德烈亚斯

亲爱的Matlab的团队,

新版本(8月1日),似乎是解决我们与LSTM出口问题。

测试与在github给定的例子与Python onnxruntime 0.5。

非常感谢!

安德烈亚斯

亲爱的苏婷,

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

对不起,是一个痛苦,但我们需要的一些功能,提供一个模型为我们的客户。

最良好的祝愿

安德烈亚斯

我能够安装地点到有足够空间的一个文件夹来完成这件事。matlabshared.金宝appsupportpkg.setSupportPackageRoot()

谢谢。

我打的安装用于onnx的问题。甚至无法下载文件。我使用RHEL 7.5。在这个问题上的任何想法?

卫庄林

嗨,
我试图导出模型tensorflow使用它。这是基本相同的,因为这
https://de.mathworks.com/help/deeplearning/examples/cocktail-party-source-separation-using-deep-learning-networks.html
我得到的警告:“警告:ONNX不支持层‘BiasedSigmoidLayer’导出到ON金宝appNX运营商com.MathWorks.Placeholder'。”因为该层的一个是定制乙状结肠层。
我没有进口到tensorflow得到错误
ValidationError:没有注册模式占位符与1 domain_version
==>上下文:坏节点规格:输入: “fc_1” 输出: “layer_1” 名: “layer_1” op_type: “占位符” doc_string: “占位符运算符” 域: “com.mathworks”
反正我有可以解决这个问题?
我Onnx型号名称:https://drive.google.com/open?id=1c5ItcPoYU2xkmOZNiUgrIetLsixEewYK

提前致谢

亲爱的苏婷,

优秀的!:d

最良好的祝愿

安德烈亚斯

苏婷

喜安地列斯
新版本将很快被释放。

它是否与yoloV2工作?

亲爱的苏婷,

在新版本中的任何字,可以解决与LSTM的问题(见GitHub的车票)。我们想一些机型部署到与onnxruntime的应用程序。

最良好的祝愿

安德烈亚斯

崔永元

亲爱的苏婷,
通过exportONNXNetwork()导出的onnx模式是不一样的OpenCV和Matlab运行的结果呢?我贴我的问题也在这里:
https://ww2.mathworks.cn/matlabcentral/answers/464550-the-onnx-model-exported-by-exportonnxnetwork-is-not-the-same-as-the-result-of-running-in-opencv-一个

崔永元

嗨挺苏,
我注意到,最近的一个转换器的更新,但LSTMs不似乎仍然正常工作。我贴我的问题也在这里:
https://de.mathworks.com/matlabcentral/answers/457176-onnx-export-yields-error-in-windows-ml?s_tid=prof_contriblnk

崔永元

亲爱的苏婷,
请问目前onnx版本支持目标探测网络,比如Yolov2网络(金宝app出口yolov2.onnx)的出口?

亲爱的苏婷,

是的,这就是开在Github上的问题我。

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

最良好的祝愿

安德烈亚斯

苏婷

喜安地列斯
我们注意到,通过MATLAB ONNX转换器输出一些LSTM机型不ONNX运行时很好地工作,虽然可以被加载到其他框架,ONNX运行时严格遵循形状要求ONNX规范。MATLAB ONNX转换器的新版本即将发布,它将与ONNX运行时效果更好。

苏婷

喜安地列斯
谢谢你的问题。这是在下面的链接报道了同样的问题?
https://github.com/microsoft/onnxruntime/issues/1016
我们正在研究这一点,并会尽快回复您。

亲爱的Matlab的团队,

我们出口的LSTM模型(基本上如构建在descripted与涡轮风扇发动机的示例性数据的sequene到序列回归的例子。

(从源代码0.4.0发布版本)在onnxruntime进口时,我们得到一个错误信息:

从temp.onx负载模型失败:节点:fc_2输出:fc_2 [ShapeInferenceError]不匹配的源和目标维度的数目之间。源= 2目标= 3

我们可以在Netron加载onnx文件就好了,并有一个fc_2输出,有些奇怪<1x1x1>尺寸。莫不是在预期的输出尺寸的混乱呢?

难道我们的onnx-文件/ Matlab的NNET发送给你一些帮助。

将不胜感激。

从MATLAB到其他运行时引擎模型导出不从简单的例子分开工作。我见过的奇怪形状翻转输出ONNX网络层对进口Python框架或C#时,这会导致失败。

当我导入模型到C ++,我没有相同的结果MATLAB你可以在C供应例如输出层++ OpenCV的或tensorflow这得到了层是一样的MATLAB
例如CONV层

王红

感谢吉航王,你帮我安装这个工具。

喜吉航,感谢分享这一信息,遗憾的是它并没有解决我的情况的问题。

吉航王

大家好,我发现它为什么不MathWorks的技术支持团队的帮助下工作的原因。金宝app我只是想在这里分享我的经验。基本上有我的路径上的函数,它是阴影的一个内置的MATLAB功能。我用下面的代码重置我MATLAB路径:
>> restoredefaultpath
>>翻版toolboxcache
>> savepath%注:此命令将覆盖我的电流通路的喜好。

在那之后,我下载并重新安装该网页上的转换器应用程序,并重新运行出口代号。问题解决了:)希望这有助于。

嗨安德烈亚斯,我只是用一个自定义的CNN与WinMLRunner检查的话,我没有尝试任何预先训练模式虽然。

嗨加布里埃尔
你能告诉我你使用的CNN?
正如之前提到的我tryed基本googlenet,我不能与微软ML使用它。
这将是非常有益的,如果我可以使用onnx文件交换。
提前致谢

喜亭,感谢很多的opset所更新。不过,现在我得到了相同的错误安德烈亚斯为LSTM网:“首先输入没有等级2”。如果我在网络中具有一个以上LSTM层的错误信息以某种方式更改为:“首先输入张量必须有等级3”,细胞神经网络似乎虽然工作。

苏婷

喜安德烈亚斯和吉航,就可以达到我们的技术支持和发送模式给我们吗?金宝app

喜亭,我遇到了与C#同样的问题。我可以在不同版本的出口网络。如果我尝试模型加载到windows.ml我得到一个“ShapeInferenceError”第一个输入没有军衔2. opset所V6,可以加载该文件,但它不能被使用。我测试googlenet,并试图将onnx型号名为“Netron”方案进行比较。我发现不同的是,第一层“亚健康”从[3x244x244]更改为[1x3x244x244],但我不知道这是否是问题。第二件事是,与onnx V6 Visual Studio可以与V7或更高自动但是不产生模型类。它似乎不被识别为一个onnx模型。你能给一个建议如何使用Matlab的训练模型在C#?

吉航王

喜亭,我有同样的问题装在C#中ONNX模型时。我试图模型保存到不同的opset所版本,但他们没有工作。请指教。

苏婷

嗨加布里埃尔,
我们最近增加了对ONNX opset金宝app所7,8和9。人们可以通过一个可选的输入参数“OpsetVersion”导出过程中指定opset所使用。你应该可以,如果你有一个R2018b MATLAB下载。

苏婷

嗨Kennth,
我们看到了类似的问题和修复程序将很快发布。这将是巨大的,如果你能向我们提供您MATLAB模型,让我们来测试它。

如果出口能够更新到版本7或8,允许与Windows毫升利用这将是巨大的。

exportONNXNetwork不能正常使用CNTK和Python工作。该转换产生一个ValueError:GEMM:形状无效,输入A和B被预期为秩= 2点矩阵。

惠尹肋锇

嗨,要导出的代码或可用于更快的R-CNN模型工具箱?由于我的错误提的模型不是DAGnetwork。希望能得到一些反馈意见或帮助在这里

难道你们知道什么时候为恒运营商的支持将得到补金宝app充?

使用importONNXNetwork误差(线39)
节点“node_20”:恒运营商目前还不支持。金宝app

我从事这个代码:)这是非常好的。谢谢。

苏婷

嗨Trihn,
我们想听听你对importONNXNetwork的问题的详细信息()。你以前安装的旧版本转换器?

郑氏范

该功能importONNXNetwork()当我使用上面的例子不工作!

MATLAB版本兼容性
创建了R2018a
与R2018a到R2020a兼容
平台兼容性
视窗 苹果系统 Linux的