exportONNXNetwork
导出网络到ONNX模型格式
描述
例子
导出网络为ONNX格式
加载预训练的SqueezeNet卷积神经网络。
网=挤压网
net = DAGNetwork with properties: Layers: [68×1 nnet.cnn.layer.Layer] Connections: [75×2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_predictions'}
导出网络网
作为一个ONNX格式的文件称为squeezenet.onnx
.将文件保存到当前文件夹。如果没有安装ONNX模型格式的深度学习工具箱转换器支持包,则金宝appexportONNXNetwork
在外接程序资源管理器中提供到所需支持包的链接。金宝app要安装支持包,请单击链接,然后金宝app单击安装.
文件名=“squeezenet.onnx”;exportONNXNetwork(净、文件名)
现在可以导入squeezenet.onnx
文件导入到任何支持ONNX导入的深度学习框架。金宝app
导出图层图形为ONNX格式
将有或没有输出层的层图导出为ONNX格式exportONNXNetwork
.
加载一个预训练的SqueezeNet卷积神经网络,并将预训练的网络转换为层图。
网=挤压网;lgraph1 = layerGraph(net)
lgraph1 = LayerGraph与属性:图层:[68×1 nnet.cnn.layer.Layer]连接:[75×2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_predictions'}
分析层图。analyzeNetwork
显示网络体系结构的交互式图形和包含有关网络层信息的表。您还可以在层图中检测错误和问题lgraph1
然后导出为ONNX格式。lgraph1
是无错误的。
analyzeNetwork (lgraph1)
导出图层图lgraph1
作为一个ONNX格式的文件在当前文件夹称为squeezeLayers1.onnx
.
exportONNXNetwork (lgraph1“squeezeLayers1.onnx”)
现在,您可以导入squeezeLayers1.onnx
文件导入到任何支持ONNX导入的深度学习框架。金宝app
的输出层lgraph1
.
lgraph2 = removeLayers(lgraph1,lgraph1. layers (end).Name)
lgraph2 = LayerGraph with properties: Layers: [67×1 nnet.cnn.layer.Layer] Connections: [74×2 table] InputNames: {'data'} OutputNames: {1×0 cell}
层图分析lgraph2
通过使用analyzeNetwork
.层图分析检测丢失的输出层和未连接的输出。你仍然可以导出lgraph2
转换为ONNX格式。
analyzeNetwork (lgraph2)
导出图层图lgraph2
作为一个ONNX格式的文件在当前文件夹称为squeezeLayers2.onnx
.
exportONNXNetwork (lgraph2“squeezeLayers2.onnx”)
现在,您可以导入squeezeLayers2.onnx
文件导入到任何支持ONNX导入的深度学习框架。金宝app
输入参数
网
- - - - - -训练过的网络或网络层图
SeriesNetwork
对象|DAGNetwork
对象|dlnetwork
对象|LayerGraph
对象
训练过的网络或网络层的图,指定为aSeriesNetwork
,DAGNetwork
,dlnetwork
,或LayerGraph
对象。
你可以得到一个训练有素的网络(SeriesNetwork
,DAGNetwork
,或dlnetwork
)在这些方面:
导入一个预先训练好的网络。例如,使用
googlenet
函数。培养自己的人脉。使用
trainNetwork
训练一个SeriesNetwork
或DAGNetwork
.使用自定义训练循环来训练dlnetwork
.
一个LayerGraph
对象是网络层的图。该图的一些层参数可能是空的(例如,卷积层的权重和偏置,批归一化层的均值和方差)。在使用层图作为输入参数之前exportONNXNetwork
,通过分配随机值初始化空参数。或者,您可以在导出之前执行以下操作之一:
把一个
LayerGraph
对象的dlnetwork
对象使用层图作为输入参数dlnetwork
.空参数会自动初始化。把一个
LayerGraph
对象的DAGNetwork
对象,使用trainNetwork
.使用图层图作为层
输入参数trainNetwork
.
在导出到ONNX网络之前,您可以在训练网络或网络层图中检测错误和问题analyzeNetwork
.exportONNXNetwork
需要SeriesNetwork
,DAGNetwork
,dlnetwork
对象是无错误的。exportONNXNetwork
允许导出LayerGraph
对象,其输出层缺失或未连接。
文件名
- - - - - -文件名称
特征向量|字符串标量
文件名称,指定为字符向量或字符串标量。
例子:“network.onnx”
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:exportONNXNetwork(网、文件名、NetworkName =“my_net”)
导出网络并指定“my_net”
作为保存的ONNX网络中的网络名。
NetworkName
- - - - - -ONNX网络名称
“网络”
(默认)|特征向量|字符串标量
存储在保存文件中的ONNX网络的名称,指定为字符向量或字符串标量。
例子:NetworkName = " my_squeezenet "
OpsetVersion
- - - - - -ONNX操作符集的版本
8
(默认)|6
|7
|9
|10
|11
|12
|13
导出模型中要使用的ONNX操作符的版本,指定为范围内的正整数13 [6]
.如果默认操作符集不支持要导出的网络,请尝试使用较低版本。金宝app如果您将导出的网络导入到另一个框架,并且在导出过程中使用了导入器不支持的操作符集,则导入可能会失败。金宝app
要确保使用了适当的操作符集版本,请参考ONNX操作符文档[3].例如,OpsetVersion = 9
出口的maxUnpooling2dLayer
到MaxUnpool-9
ONNX算子。
例子:OpsetVersion = 6
BatchSize
- - - - - -ONNX网络的批量大小
[]
(默认)|正整数
ONNX网络的批量大小,指定为[]
或者作为正整数。如果你指定BatchSize
作为[]
, ONNX网络具有动态批处理大小。如果你指定BatchSize
作为正整数k时,ONNX网络有固定的批大小为k.
例子:BatchSize = 10
限制
exportONNXNetwork
金宝app支持以下ONNX版本:该函数支持ONNX中间表示金宝app版本7。
该函数支持ONNX操作符集金宝app6 ~ 14。
exportONNXNetwork
不导出与网络训练相关的设置或属性,如训练选项、学习率因素或正则化因素。如果您导出的网络包含ONNX格式不支持的层(请参阅金宝appONNX导出支金宝app持的层),然后
exportONNXNetwork
保存一个占位符ONNX操作符来代替不支持的层,并返回一个警告。金宝app不能将带有占位符操作符的ONNX网络导入到其他深度学习框架中。因为MATLAB之间的架构差异®和ONNX,导出的网络可能与原始网络有不同的结构。
请注意
如果导入导出的网络,重新导入的网络的层数可能与原始网络不同,可能不受支持。金宝app
更多关于
支持的层数金宝appONNX出口
exportONNXNetwork
可以导出以下内容:
同时具有卷积层和LSTM层的网络,例如用于视频分类应用程序的网络。
所有自定义层(除了
nnet.onnx.layer.Flatten3dLayer
),当你从ONNX或TensorFlow™-Keras导入网络时,就会创建ONNX模型格式的深度学习工具箱转换器或TensorFlow模型的深度学习工具箱转换器.层数如下表所示:
为
groupNormalizationLayer
,指定numGroups
作为“channel-wise”
将导出的层映射到ONNXInstanceNormalization
操作符。GroupNormalization
不是标准的ONNX操作符[3].
提示
您可以将经过训练的MATLAB深度学习网络(包括多个输入和多个输出)导出为ONNX模型格式。要了解多输入多输出深度学习网络,请参见多输入多输出网络.
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。