进口层ONNX网络
进口的层和权重pretrained ONNX™(打开神经网络交换)网络从文件lgraph
= importONNXLayers (modelfile
)modelfile
。函数返回lgraph
作为一个LayerGraph
对象兼容DAGNetwork
或dlnetwork
对象。
importONNXLayers
要求深度学习工具箱™ONNX模型格式转换器金宝app支持包。如果这种支持包没金宝app有安装importONNXLayers
提供一个下载链接。
请注意
默认情况下,importONNXLayers
试图生成一个自定义层当软件不能ONNX经营者转化为一个等价的内置MATLAB®层。的运营商的软件支持转换,明白了金宝appONNX运营商支持转换成内置M金宝appATLAB层。
importONNXLayers
保存生成的自定义层的包+
。modelfile
importONNXLayers
并不会自动生成一个自定义层的每个ONNX运营商不支持转换成一个内置的MATLAB层。金宝app如何处理不支持层的更多信息,见金宝app提示。
下载并安装深度学习工具箱转换器ONNX模型格式支持包。金宝app
类型importONNXLayers
在命令行中。
importONNXLayers
如果深度学习工具箱转换器ONNX模型格式没有安装,那么函数提供了一个链接到需要在插件浏览器支持包。金宝app安装支持包,单击该链接,然后单金宝app击安装。检查安装成功导入网络的模型文件“simplenet.onnx”
在命令行中。如果支持包安装金宝app,那么函数返回LayerGraph
对象。
modelfile =“simplenet.onnx”;lgraph = importONNXLayers (modelfile)
lgraph = LayerGraph属性:层:[9×1 nnet.cnn.layer.Layer]连接:[8×2表]InputNames: {“imageinput”} OutputNames: {“ClassificationLayer_softmax1002”}
绘制网络体系结构。
情节(lgraph)
DAGNetwork
导入一个pretrained ONNX网络作为一个LayerGraph
对象。然后,将进口层组装成一个DAGNetwork
对象,并使用组装网络分类图像。
生成一个ONNX模型squeezenet
卷积神经网络。
squeezeNet = squeezeNet;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);
指定模型文件和类名。
modelfile =“squeezenet.onnx”;一会= squeezeNet.Layers . class(结束);
导入ONNX网络层和权重。默认情况下,importONNXLayers
网络作为一个进口LayerGraph
对象兼容DAGNetwork
对象。
lgraph = importONNXLayers (modelfile)
lgraph = LayerGraph属性:层:[70×1 nnet.cnn.layer.Layer]连接:[77×2表]InputNames:{“数据”}OutputNames: {“ClassificationLayer_prob”}
分析了进口网络体系结构。
analyzeNetwork (lgraph)
显示的最后一层进口网络。有一个输出显示层图ClassificationOutputLayer
的网络体系结构。
lgraph.Layers(结束)
ans = ClassificationOutputLayer属性:名称:“ClassificationLayer_prob”类:“汽车”ClassWeights:“没有一个”OutputSize:‘汽车’Hyperparameters LossFunction:“crossentropyex”
分类层不包含的类,因此您必须指定这些之前装配网络。如果你不指定的类,然后软件自动设置类1
,2
、……N
,在那里N
类的数量。
分类层的名字“ClassificationLayer_prob”
。设置类一会
,然后用新的代替进口分类层。
粘土= lgraph.Layers(结束);粘土。Classes = ClassNames; lgraph = replaceLayer(lgraph,“ClassificationLayer_prob”、粘土);
组装层图使用assembleNetwork
返回一个DAGNetwork
对象。
净= assembleNetwork (lgraph)
网= DAGNetwork属性:层:[70×1 nnet.cnn.layer.Layer]连接:[77×2表]InputNames:{“数据”}OutputNames: {“ClassificationLayer_prob”}
读你想要的图像分类和显示图像的大小。384————512像素图像和有三个颜色通道(RGB)。
我= imread (“peppers.png”);大小(我)
ans =1×3384 512 3
调整图像的输入规模网络。显示图像。
I = imresize(我,(227 227));imshow(我)
使用进口网络分类的图像。
标签=分类(净,我)
标签=分类甜椒
dlnetwork
导入一个pretrained ONNX网络作为一个LayerGraph
对象兼容dlnetwork
对象。然后,转换层图dlnetwork
对图像进行分类。
生成一个ONNX模型squeezenet
卷积神经网络。
squeezeNet = squeezeNet;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);
指定模型文件和类名。
modelfile =“squeezenet.onnx”;一会= squeezeNet.Layers . class(结束);
导入ONNX网络层和权重。指定导入网络LayerGraph
对象兼容dlnetwork
对象。
lgraph = importONNXLayers (modelfile TargetNetwork =“dlnetwork”)
lgraph = LayerGraph属性:层:[70×1 nnet.cnn.layer.Layer]连接:[77×2表]InputNames:{“数据”}OutputNames:{1×0细胞}
读你想要的图像分类和显示图像的大小。384————512像素图像和有三个颜色通道(RGB)。
我= imread (“peppers.png”);大小(我)
ans =1×3384 512 3
调整图像的输入规模网络。显示图像。
I = imresize(我,(227 227));imshow(我)
进口层图转换为一个dlnetwork
对象。
dlnet = dlnetwork (lgraph);
将图像转换为一个dlarray
。格式的图像尺寸“SSCB”
(空间、空间、通道、批)。在这种情况下,批量大小是1,你可以忽略它(“SSC”
)。
I_dlarray = dlarray(单(我),“SSCB”);
样本图像进行分类,找到预测的标签。
概率=预测(dlnet I_dlarray);[~,标签]= max(概率);
显示分类的结果。
类名(标签)
ans =分类甜椒
导入一个pretrained ONNX网络作为一个LayerGraph
成一个对象,然后组装进口层DAGNetwork
对象。然后,使用DAGNetwork
对图像进行分类。进口网络包含ONNX运营商不支持转换成内置MATLAB层。金宝app软件自动生成自定义层当你进口这些操作符。
下面的例子使用了辅助函数findCustomLayers
。查看这个函数的代码,看看Helper函数。
指定文件导入shufflenet
从ONNX模型与经营者设置9动物园。shufflenet
是一个卷积神经网络,训练图像从ImageNet数据库超过一百万。因此,网络学习丰富广泛的图像特征表示。网络可以分类图像到1000年对象类别,如键盘,鼠标,铅笔,和许多动物。
modelfile =“shufflenet - 9. onnx”;
进口的层和权重shufflenet
。默认情况下,importONNXLayers
网络作为一个进口LayerGraph
对象兼容DAGNetwork
对象。如果进口网络包含ONNX运营商不支持转换成内置MATLAB层,金宝appimportONNXLayers
可以自动生成自定义层代替这些层。importONNXLayers
保存每个生成自定义一个单独的层。m
文件包+ shufflenet_9
在当前文件夹。通过使用名称-值参数指定包名PackageName
。
lgraph = importONNXLayers (modelfile PackageName =“shufflenet_9”)
lgraph = LayerGraph属性:层:[173×1 nnet.cnn.layer.Layer]连接:[188×2表]InputNames: {“gpu_0_data_0”} OutputNames: {“ClassificationLayer_gpu_0_softmax_1”}
找到自动生成自定义的指标层使用helper函数findCustomLayers
,并显示自定义层。
印第安纳州= findCustomLayers (lgraph.Layers,' + shufflenet_9 ');lgraph.Layers(印第安纳州)
ans = 16×1层与层:数组1 Reshape_To_ReshapeLayer1004 shufflenet_9。Reshape_To_ReshapeLayer1004 shufflenet_9。重塑_To_ReshapeLayer1004 2 'Reshape_To_ReshapeLayer1009' shufflenet_9.Reshape_To_ReshapeLayer1009 shufflenet_9.Reshape_To_ReshapeLayer1009 3 'Reshape_To_ReshapeLayer1014' shufflenet_9.Reshape_To_ReshapeLayer1014 shufflenet_9.Reshape_To_ReshapeLayer1014 4 'Reshape_To_ReshapeLayer1019' shufflenet_9.Reshape_To_ReshapeLayer1019 shufflenet_9.Reshape_To_ReshapeLayer1019 5 'Reshape_To_ReshapeLayer1024' shufflenet_9.Reshape_To_ReshapeLayer1024 shufflenet_9.Reshape_To_ReshapeLayer1024 6 'Reshape_To_ReshapeLayer1029' shufflenet_9.Reshape_To_ReshapeLayer1029 shufflenet_9.Reshape_To_ReshapeLayer1029 7 'Reshape_To_ReshapeLayer1034' shufflenet_9.Reshape_To_ReshapeLayer1034 shufflenet_9.Reshape_To_ReshapeLayer1034 8 'Reshape_To_ReshapeLayer1039' shufflenet_9.Reshape_To_ReshapeLayer1039 shufflenet_9.Reshape_To_ReshapeLayer1039 9 'Reshape_To_ReshapeLayer1044' shufflenet_9.Reshape_To_ReshapeLayer1044 shufflenet_9.Reshape_To_ReshapeLayer1044 10 'Reshape_To_ReshapeLayer1049' shufflenet_9.Reshape_To_ReshapeLayer1049 shufflenet_9.Reshape_To_ReshapeLayer1049 11 'Reshape_To_ReshapeLayer1054' shufflenet_9.Reshape_To_ReshapeLayer1054 shufflenet_9.Reshape_To_ReshapeLayer1054 12 'Reshape_To_ReshapeLayer1059' shufflenet_9.Reshape_To_ReshapeLayer1059 shufflenet_9.Reshape_To_ReshapeLayer1059 13 'Reshape_To_ReshapeLayer1064' shufflenet_9.Reshape_To_ReshapeLayer1064 shufflenet_9.Reshape_To_ReshapeLayer1064 14 'Reshape_To_ReshapeLayer1069' shufflenet_9.Reshape_To_ReshapeLayer1069 shufflenet_9.Reshape_To_ReshapeLayer1069 15 'Reshape_To_ReshapeLayer1074' shufflenet_9.Reshape_To_ReshapeLayer1074 shufflenet_9.Reshape_To_ReshapeLayer1074 16 'Reshape_To_ReshapeLayer1079' shufflenet_9.Reshape_To_ReshapeLayer1079 shufflenet_9.Reshape_To_ReshapeLayer1079
分类层不包含的类,因此您必须指定这些之前装配网络。如果你不指定的类,然后软件自动设置类1
,2
、……N
,在那里N
类的数量。
导入的类名squeezenet
,这也是训练图像从ImageNet数据库。
SqueezeNet = SqueezeNet;一会= SqueezeNet.Layers .ClassNames(结束);
分类层粘土
最后一层的吗lgraph
。设置类一会
然后导入分类层替换为新的。
粘土= lgraph.Layers(结束)
粘土= ClassificationOutputLayer属性:名称:“ClassificationLayer_gpu_0_softmax_1”类:“汽车”ClassWeights:“没有一个”OutputSize:‘汽车’Hyperparameters LossFunction:“crossentropyex”
粘土。Classes = classNames; lgraph = replaceLayer(lgraph,lgraph.Layers(end).Name,cLayer);
组装层图使用assembleNetwork
。函数返回一个DAGNetwork
为预测对象,已经可以使用了。
净= assembleNetwork (lgraph)
网= DAGNetwork属性:层:[173×1 nnet.cnn.layer.Layer]连接:[188×2表]InputNames: {“gpu_0_data_0”} OutputNames: {“ClassificationLayer_gpu_0_softmax_1”}
读你想要的图像分类和显示图像的大小。792————1056像素图像和有三个颜色通道(RGB)。
我= imread (“peacock.jpg”);大小(我)
ans =1×3792 1056 3
调整图像的输入规模网络。显示图像。
I = imresize(我,(224 224));imshow(我)
的输入shufflenet
需要进一步的预处理(详情,请参阅ShuffleNet ONNX模型动物园)。重新调节图像。标准化图像减去训练图像的均值和除以标准差的训练图像。
I =重新调节(0,1);meanIm = (0.485 0.456 0.406);stdIm = (0.229 0.224 0.225);我= (I -重塑(meanIm [1 1 3]))。/重塑(stdIm [1 1 3]);
使用进口网络分类的图像。
标签=分类(净,我)
标签=分类孔雀
Helper函数
本节提供的代码辅助功能findCustomLayers
在这个例子中使用。findCustomLayers
返回指数
自定义层importONNXLayers
自动生成。
函数指数= findCustomLayers(层,PackageName) s = ([‘。’PackageName]);指数= 0(1、长度(小);为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s.m {j} (1: end-2)])指数(j) =我;结束结束结束结束
导入一个ONNX长期短期记忆(LSTM)网络层图,然后查找和替换placholder层。LSTM网络允许您输入序列数据转换成一个网络,并根据个人做出预测时间序列数据的步骤。
lstmNet
也有类似的架构LSTM网络中创建使用深度学习序列分类。lstmNet
是训练识别说话者给定时间序列数据代表连续两艘日本口语元音。
指定lstmNet
模型文件。
modelfile =“lstmNet.onnx”;
导入ONNX网络层和权重。默认情况下,importONNXLayers
网络作为一个进口LayerGraph
对象兼容DAGNetwork
对象。
lgraph = importONNXLayers (“lstmNet.onnx”)
警告:无法导入一些ONNX运营商,因为不支持他们。金宝app他们已经被占位符层。为了找到这些层,调用这个函数findPlaceholderLayers返回的对象。1运营商(s):无法创建一个ONNX网络输出层输出“softmax1001”,因为它的数据格式是未知的或不支持的MATLAB输出层。金宝app如果你知道它的格式,通过使用“OutputDataFormats”的论点。导入ONNX网络作为一个函数,使用importONNXFunction。
lgraph = LayerGraph属性:层:[6×1 nnet.cnn.layer.Layer]连接:[5×2表]InputNames: {“sequenceinput”} OutputNames:{1×0细胞}
importONNXLayers
显示一个警告,插入一个占位符层为输出层。
你可以通过查看检查占位符层层
的属性lgraph
或通过使用findPlaceholderLayers
函数。
lgraph.Layers
ans = 6×1层与层:数组1 sequenceinput的序列输入序列输入12维度2的lstm1000 LSTM LSTM 100隐藏单位3“fc_MatMul”完全连接9完全连接层4的fc_Add Elementwise仿射实行Elementwise扩展除了输入紧随其后。5 Flatten_To_SoftmaxLayer1005 lstmNet。Flatten_To_SoftmaxLayer1005 lstmNet。平_To_SoftmaxLayer1005 6 'OutputLayer_softmax1001' PLACEHOLDER LAYER Placeholder for 'added_outputLayer' ONNX operator
placeholderLayers = findPlaceholderLayers (lgraph)
placeholderLayers = PlaceholderLayer属性:名称:“OutputLayer_softmax1001”ONNXNode: [1×1 struct]权重:[]可学的参数没有属性。状态参数没有属性。显示所有属性
创建一个输出层替换占位符层。首先,创建一个分类层的名字OutputLayer_softmax1001
。如果你不指定的类,然后软件自动设置1
,2
、……N
,在那里N
类的数量。在这种情况下,类数据是一个分类向量的标签“1”,“2”,…”9”,对应于九个扬声器。
outputLayer = classificationLayer (“名字”,“OutputLayer_softmax1001”);
替换占位符的层outputLayer
通过使用replaceLayer
函数。
lgraph = replaceLayer (lgraph,“OutputLayer_softmax1001”,outputLayer);
显示层
层的属性图确认更换。
lgraph.Layers
ans = 6×1层与层:数组1 sequenceinput的序列输入序列输入12维度2的lstm1000 LSTM LSTM 100隐藏单位3“fc_MatMul”完全连接9完全连接层4的fc_Add Elementwise仿射实行Elementwise扩展除了输入紧随其后。5 Flatten_To_SoftmaxLayer1005 lstmNet。Flatten_To_SoftmaxLayer1005 lstmNet。平_To_SoftmaxLayer1005 6 'OutputLayer_softmax1001' Classification Output crossentropyex
另外,定义输出层当你导入层图使用OutputLayerType
或OutputDataFormats
选择。检查导入的层图有占位符层使用findPlaceholderLayers
。
lgraph1 = importONNXLayers (“lstmNet.onnx”OutputLayerType =“分类”);findPlaceholderLayers (lgraph1)
ans = 0×1层数组的属性:
lgraph2 = importONNXLayers (“lstmNet.onnx”OutputDataFormats =“公元前”);findPlaceholderLayers (lgraph2)
ans = 0×1层数组的属性:
进口层图lgraph1
和lgraph2
没有占位符层。
导入一个ONNX多重输出的网络使用importONNXLayers
进口,然后组装成层图DAGNetwork
对象。
指定的网络文件导入层和权重。
modelfile =“digitsMIMO.onnx”;
导入层和权重modelfile
。网络在digitsMIMO.onnx
有两个输出层:一个分类层(ClassificationLayer_sm_1
)对数字进行分类和回归层(RegressionLayer_fc_1_Flatten
)计算均方误差的角度预测数字。
lgraph = importONNXLayers (modelfile)
lgraph = LayerGraph属性:层:[19×1 nnet.cnn.layer.Layer]连接:[19×2表]InputNames:{“输入”}OutputNames: {“ClassificationLayer_sm_1”“RegressionLayer_fc_1_Flatten”}
绘制层图使用情节
,显示层lgraph
。
情节(lgraph)
lgraph.Layers
ans = 19×1层与层:数组1的输入图像输入28××28日1图片2的conv_1卷积16 5×5×1的隆起与步幅[1]和填充(2 2 2 2)3的BN_1批量标准化批量标准化与16通道4的relu_1 ReLU ReLU 5‘conv_2卷积32 1×1×16旋转步(2 - 2)和填充[0 0 0 0]6‘conv_3卷积32 3×3×16旋转步(2 - 2)和填充[1 1 1 1]7“BN_2”批量标准化批量标准化32通道8 ' relu_2 ReLU ReLU 9 conv_4的卷积32 3×3×32步[1]和填充的卷积[1 1 1 1]10“BN_3”批量标准化批量标准化32频道11的relu_3 ReLU ReLU 12“plus_1”除了Element-wise添加2输入13 fc_1的卷积1 14×14×32步[1]和填充的卷积[0 0 0 0]14 fc_2的卷积10 14×14×32步[1]和填充的卷积[0 0 0 0]15 ' sm_1_Flatten ONNX平压平激活成一维假设c风格的(行)订单16的sm_1 Softmax Softmax 17‘fc_1_Flatten ONNX平压平激活成一维假设c风格的(行)订单18“ClassificationLayer_sm_1”分类输出crossentropyex 19 RegressionLayer_fc_1_Flatten回归输出均方误差
分类层不包含的类,因此您必须指定这些之前装配网络。如果你不指定的类,然后软件自动设置类1
,2
、……N
,在那里N
类的数量。指定的类粘土
作为0
,1
、……9。
然后,取代进口分类与新一层。
一会=字符串(0:9);粘土= lgraph.Layers (18);粘土。Classes = ClassNames; lgraph = replaceLayer(lgraph,“ClassificationLayer_sm_1”、粘土);
组装层图使用assembleNetwork
。函数返回一个DAGNetwork
为预测对象,已经可以使用了。
assembledNet = assembleNetwork (lgraph)
assembledNet = DAGNetwork属性:层:[19×1 nnet.cnn.layer.Layer]连接:[19×2表]InputNames:{“输入”}OutputNames: {“ClassificationLayer_sm_1”“RegressionLayer_fc_1_Flatten”}
modelfile
- - - - - -ONNX模型文件的名称包含网络ONNX模型文件的名称,指定为一个特征向量或字符串标量。在当前文件夹或文件必须在MATLAB上一个文件夹路径,或者你必须包括一个完整或相对路径文件。
例子:“cifarResNet.onnx”
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
importONNXLayers (modelfile TargetNetwork =“dagnetwork GenerateCustomLayers = true, PackageName =“CustomLayers”)
进口的网络层modelfile
作为一个兼容层图DAGNetwork
对象和保存自动生成自定义层的包+ CustomLayers
在当前文件夹。
GenerateCustomLayers
- - - - - -选择自定义层的一代真正的
或1
(默认)|假
或0
选择自定义层生成、指定为一个数字或逻辑1
(真正的
)或0
(假
)。如果你设置GenerateCustomLayers
来真正的
,importONNXLayers
试图生成一个自定义层当软件不能ONNX经营者转化为一个等价的内置MATLAB层。importONNXLayers
保存每个生成自定义一个单独的层。m
文件中+
。查看或编辑自定义图层,打开相关PackageName
。m
文件。自定义层的更多信息,见深度学习自定义层。
例子:GenerateCustomLayers = false
TargetNetwork
- - - - - -深度学习工具箱网络的目标类型“dagnetwork”
(默认)|“dlnetwork”
目标类型的深度学习工具箱网络对进口网络架构,指定为“dagnetwork”
或“dlnetwork”
。这个函数importONNXLayers
网络体系结构作为进口LayerGraph
对象兼容DAGNetwork
或dlnetwork
对象。
如果您指定TargetNetwork
作为“dagnetwork”
,进口lgraph
必须包括输入和输出层ONNX指定的模型或您指定使用名称-值的参数InputDataFormats
,OutputDataFormats
,或OutputLayerType
。
如果您指定TargetNetwork
作为“dlnetwork”
,importONNXLayers
附加一个CustomOutputLayer
在每个输出的分支lgraph
,可能会附加一个CustomInputLayer
在一个输入分支的开始。函数附加一个CustomInputLayer
如果输入的数据格式或输入图像的大小是未知的。网络特殊信息这些层的数据格式,看到的属性CustomInputLayer
和CustomOutputLayer
对象。关于如何解释深度学习工具箱的信息输入和输出数据格式,看看张量ONNX输入和输出转化为内置MATLAB层。
例子:TargetNetwork = " dlnetwork "
进口LayerGraph
对象兼容dlnetwork
对象。
InputDataFormats
- - - - - -网络输入的数据格式指定的网络输入数据格式作为特征向量,标量字符串或字符串数组。importONNXLayers
试图解释从ONNX文件输入数据格式。名称-值参数InputDataFormats
是有用的,当importONNXLayers
不能获得输入数据格式。
集InputDataFomats
的数据格式的订购ONNX输入张量。例如,如果您指定InputDataFormats
作为“BSSC”
导入的网络有一个imageInputLayer
输入。更多的信息importONNXLayers
解释的数据格式ONNX输入张量和如何指定InputDataFormats
对于输入层不同深度学习工具箱,明白了张量ONNX输入和输出转化为内置MATLAB层。
如果你指定一个空的数据格式([]
或”“
),importONNXLayers
自动对输入数据的格式。
例子:InputDataFormats = ' BSSC '
例子:InputDataFormats = " BSSC "
例子:InputDataFormats = [" bcs”、“”、“公元前”)
例子:InputDataFormats = {bcs,[],“公元前”}
数据类型:字符
|字符串
|细胞
OutputDataFormats
- - - - - -网络输出的数据格式网络的数据格式输出,指定为一个特征向量,标量字符串或字符串数组。importONNXLayers
试图解释从ONNX文件数据格式的输出。名称-值参数OutputDataFormats
是有用的,当importONNXLayers
不能得到输出数据格式。
集OutputDataFormats
的数据格式的订购ONNX张量的输出。例如,如果您指定OutputDataFormats
作为“公元前”
导入的网络有一个classificationLayer
输出。更多的信息importONNXLayers
张量解释ONNX输出的数据格式以及如何指定OutputDataFormats
对不同深度学习工具箱输出层,明白了张量ONNX输入和输出转化为内置MATLAB层。
如果你指定一个空的数据格式([]
或”“
),importONNXLayers
自动解释输出数据格式。
例子:公元前OutputDataFormats = ' '
例子:OutputDataFormats =“公元前”
例子:OutputDataFormats = [" bcs”、“”、“公元前”)
例子:OutputDataFormats = {bcs,[],“公元前”}
数据类型:字符
|字符串
|细胞
ImageInputSize
- - - - - -输入图像的大小为第一网络的输入输入图像的大小第一网络输入指定为一个向量的三个或四个数值对应(高度、宽度、渠道)
对二维图像和(高度、宽度、深度、渠道)
3 d图像。网络使用这些信息只有当ONNX模型modelfile
没有指定输入的大小。
例子:ImageInputSize = [28 28 1]
二维灰度输入图像
例子:ImageInputSize = [224 224 3]
对于一个二维彩色输入图像
例子:ImageInputSize = [28 28 36 3]
三维彩色输入图像
OutputLayerType
- - - - - -为第一网络输出层类型“分类”
|“回归”
|“pixelclassification”
第一网络输出层类型,指定为“分类”
,“回归”
,或“pixelclassification”
。这个函数importONNXLayers
附加一个ClassificationOutputLayer
,RegressionOutputLayer
,或pixelClassificationLayer
(计算机视觉工具箱)对象的导入的网络体系结构的第一个输出分支。附加一个pixelClassificationLayer
(计算机视觉工具箱)计算机视觉对象需要工具箱™。如果ONNX模型modelfile
指定输出层类型或您指定TargetNetwork
作为“dlnetwork”
,importONNXLayers
忽略了名称-值参数OutputLayerType
。
例子:OutputLayerType = "回归"
FoldConstants
- - - - - -常数合并优化“深度”
(默认)|“浅”
|“没有”
常数合并优化,指定为“深度”
,“浅”
,或“没有”
。常数合并优化导入网络体系结构通过计算操作ONNX初始化(最初的常量值)在转换ONNX运营商当量内置MATLAB层。
如果ONNX网络包含运营商的软件不能转换为等价的内置MATLAB层(见ONNX运营商支持转换成内置M金宝appATLAB层),然后importONNXLayers
插入一个占位符层代替每一个不支持的层。金宝app有关更多信息,请参见提示。
常数合并优化可以减少数量的占位符层。当您设置FoldConstants
来“深度”
,进口层包括相同或更少的占位符的层,而当你设定的参数“浅”
。然而,进口时间可能会增加。集FoldConstants
来“没有”
禁用网络体系结构的优化。
例子:FoldConstants = "浅"
lgraph
——网络体系结构pretrained ONNX模型LayerGraph
对象网络体系结构的pretrained ONNX模型,作为一个返回LayerGraph
对象。
使用进口层预测图,你必须转换LayerGraph
对象一个DAGNetwork
或dlnetwork
对象。指定名称的参数TargetNetwork
作为“dagnetwork”
或“dlnetwork”
根据预定的工作流程。
importONNXLayers
金宝app支持ONNX版本如下:
函数支持ONNX版本6的中金宝app间表示。
函数支持ONNX算子集6 金宝app- 13所示。
请注意
如果你导入一个出口网络,湾区(网络层可能不同于原来的网络和可能不支持。金宝app
importONNXLayers
金宝app支持以下ONNX运营商转换成内置MATLAB层,有一些局限性。
ONNX运营商 | 深度学习工具箱层 |
---|---|
|
additionLayer 或nnet.onnx.layer.ElementwiseAffineLayer |
|
averagePooling2dLayer |
|
batchNormalizationLayer |
|
concatenationLayer |
|
没有一个权重(进口) |
|
convolution2dLayer |
|
transposedConv2dLayer |
|
dropoutLayer |
|
eluLayer |
|
fullyConnectedLayer 如果ONNX网络是周期性的,否则nnet.onnx.layer.FlattenLayer 紧随其后的是convolution2dLayer |
|
globalAveragePooling2dLayer |
|
globalMaxPooling2dLayer |
|
gruLayer |
|
groupNormalizationLayer 与numGroups 指定为“channel-wise” |
|
leakyReluLayer |
|
CrossChannelNormalizationLayer |
|
lstmLayer 或bilstmLayer |
|
fullyConnectedLayer 如果ONNX网络是周期性的,否则convolution2dLayer |
|
maxPooling2dLayer |
|
multiplicationLayer |
|
reluLayer 或clippedReluLayer |
|
sigmoidLayer |
|
|
|
additionLayer |
|
tanhLayer |
*如果垫
的属性Conv
操作符是一个矢量,只有两个元素(p1, p2)
,importONNXLayers
进口Conv
作为一个convolution2dLayer
名称-值的参数“填充”
指定为(p1, p2, p1, p2)
。
ONNX运营商 | 自定义层ONNX进口国 |
---|---|
|
nnet.onnx.layer.ClipLayer |
|
nnet.onnx.layer.ElementwiseAffineLayer |
|
nnet.onnx.layer.FlattenLayer 或nnet.onnx.layer.Flatten3dLayer |
|
nnet.onnx.layer.IdentityLayer |
|
nnet.onnx.layer.ElementwiseAffineLayer |
|
nnet.onnx.layer.PReluLayer |
|
nnet.onnx.layer.FlattenLayer |
|
nnet.onnx.layer.ElementwiseAffineLayer |
ONNX运营商 | 图像处理工具箱™ |
---|---|
DepthToSpace |
depthToSpace2dLayer (图像处理工具箱) |
调整 |
resize2dLayer (图像处理工具箱)或resize3dLayer (图像处理工具箱) |
SpaceToDepth |
spaceToDepthLayer (图像处理工具箱) |
Upsample |
resize2dLayer (图像处理工具箱)或resize3dLayer (图像处理工具箱) |
importONNXLayers
试图解释ONNX网络的输入和输出的数据格式张量,然后将其转换为内置MATLAB输入和输出层。详细的解释,请参见表张量ONNX输入转化为深度学习工具箱层和张量ONNX输出转化为MATLAB层。
在深度学习工具箱中,每个数据格式字符必须这些标签之一:
年代
——空间
C
——频道
B
——批观测
T
——时间和顺序
U
——未指明的
转换ONNX张量输入深度学习工具箱层
数据格式 | 资料解释 | 深度学习工具箱层 | ||
---|---|---|---|---|
ONNX输入张量 | MATLAB输入格式 | 形状 | 类型 | |
公元前 |
CB |
c——- - - - - -n数组,c的特性和数量吗n是观测的数量吗 | 特性 | featureInputLayer |
bcs ,BSSC ,CSS ,SSC |
SSCB |
h——- - - - - -w——- - - - - -c——- - - - - -n数字数组,h,w,c和n的高度、宽度、通道的图像,和数量的观测,分别吗 |
二维图像 | imageInputLayer |
BCSSS ,BSSSC ,包括 ,SSSC |
SSSCB |
h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c和n高度、宽度、深度、数量的通道的图像,和数字图像的观察,分别吗 |
三维图像 | image3dInputLayer |
时间待定 |
认知行为治疗 |
c——- - - - - -年代——- - - - - -n矩阵,c的数量的特征序列,年代是序列长度,n观测序列的数量吗 |
向量序列 | sequenceInputLayer |
涂层 |
SSCBT |
h——- - - - - -w——- - - - - -c——- - - - - -年代——- - - - - -n数组,h,w,c和n对应的高度、宽度和通道图像的数量,分别年代是序列长度,n是图像序列观测的数量吗 |
二维图像序列 | sequenceInputLayer |
TBCSSS |
SSSCBT |
h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代——- - - - - -n数组,h,w,d,c对应的高度、宽度、深度和通道图像的数量,分别年代是序列长度,n是图像序列观测的数量吗 |
三维图像序列 | sequenceInputLayer |
转换ONNX张量输出到MATLAB层
数据格式 | MATLAB层 | |
---|---|---|
ONNX输出张量 | MATLAB输出格式 | |
公元前 ,时间待定 |
CB ,认知行为治疗 |
classificationLayer |
bcs ,BSSC ,CSS ,SSC ,BCSSS ,BSSSC ,包括 ,SSSC |
SSCB ,SSSCB |
pixelClassificationLayer (计算机视觉工具箱) |
涂层 ,TBCSSS |
SSCBT ,SSSCBT |
regressionLayer |
importONNXLayers
不执行GPU。然而,importONNXLayers
进口的层pretrained深度学习的神经网络LayerGraph
对象,您可以使用GPU。
将导入的LayerGraph
对象一个DAGNetwork
对象的使用assembleNetwork
。在DAGNetwork
对象,然后可以预测类标签上使用的CPU或GPU分类
。使用名称-值参数指定的硬件需求ExecutionEnvironment
。对于多个输出的网络,使用预测
功能和指定名称的论点ReturnCategorical
作为真正的
。
将导入的LayerGraph
对象一个dlnetwork
对象的使用dlnetwork
。在dlnetwork
对象,然后可以预测类标签上使用的CPU或GPU预测
。这个函数预测
在GPU上执行如果输入数据或网络参数存储在GPU上。
如果你使用minibatchqueue
输入数据的处理和管理mini-batches,minibatchqueue
对象将输出转换为GPU数组默认情况下如果GPU可用。
使用dlupdate
转换的可学的参数dlnetwork
GPU数组对象。
dlnet = dlupdate (@gpuarray dlnet)
你可以训练进口LayerGraph
对象在一个CPU或GPU通过使用trainNetwork
。指定训练选项,包括选项执行环境,使用trainingOptions
函数。使用名称-值参数指定的硬件需求ExecutionEnvironment
。如何加快培训更多的信息,请参阅并行扩展深度学习,在gpu上,在云端。
使用GPU需要并行计算工具箱™和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。
如果导入网络包含一个ONNX运营商不支持转换成一个内置的MATLAB层(见金宝appONNX运营商支持转换成内置M金宝appATLAB层),importONNXLayers
不生成一个自定义层呢importONNXLayers
插入一个占位符一层一层的不支持的。金宝app找到支持的名称和指标层网络中,使用金宝appfindPlaceholderLayers
函数。你可以换一个占位符层定义的一个新图层。替换一个层,使用replaceLayer
。例如,看到的导入和组装ONNX网络与多个输出。
使用pretrained网络预测或转让学习新的图片,你必须进行预处理图像以同样的方式用于火车导入模型的图像预处理。最常见的预处理步骤调整图片大小,图像减去平均值,并从BGR图像RGB图像转换。
更多信息预处理图像进行训练和预测,明白了预处理图像深度学习。
深度学习工具箱ONNX模型格式转换器提供了三个函数导入pretrained ONNX网络:importONNXNetwork
,importONNXLayers
,importONNXFunction
。更多信息的导入功能最适合不同的场景,看到的选择要导入的函数ONNX Pretrained网络。
ImportWeights
选择已被删除警告从R2021b
ImportWeights
被移除。从R2021b, ONNX模型权重自动导入。在大多数情况下,您不需要对代码进行任何更改。
如果ImportWeights
在代码中没有设置,importONNXLayers
现在进口的权重。
如果ImportWeights
被设置为真正的
在你的代码的行为importONNXLayers
是相同的。
如果ImportWeights
被设置为假
在你的代码中,importONNXLayers
现在忽略了名称参数ImportWeights
和进口的权重。
importONNXLayers
不能创建输入和输出层ONNX文件信息行为改变R2021b
如果你导入一个ONNX作为一个模型LayerGraph
对象兼容DAGNetwork
对象,进口层图必须包括输入和输出层。importONNXLayers
试图将输入和输出ONNX张量转换成内置MATLAB层。当进口一些网络importONNXLayers
可能以前进口的输入和输出内置MATLAB层,importONNXLayers
现在可能插入占位符层。在这种情况下,下列更新你的代码:
指定名称的参数TargetNetwork
作为“dlnetwork”
导入网络LayerGraph
对象兼容dlnetwork
对象。
使用名称的参数InputDataFormats
,OutputDataFormats
,OutputLayerType
指定导入的网络的输入和输出。
使用importONNXFunction
导入函数和一个网络模型ONNXParameters
对象。
importCaffeNetwork
|importCaffeLayers
|importKerasNetwork
|importKerasLayers
|importONNXNetwork
|exportONNXNetwork
|findPlaceholderLayers
|replaceLayer
|assembleNetwork
|importONNXFunction
|importTensorFlowNetwork
|importTensorFlowLayers
你们possedez一个版本modifiee de cet(中央东部东京)为例。Souhaitez-vous打开cet(中央东部东京)为例用vos修改吗?
你们有派对在联合国留置权,对应这个对MATLAB:
倒实行la对saisissez-la在fenetre德对MATLAB。Les navigateurs web不sup金宝appportent Les MATLAB命令。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。