进口pretrainedONNX网络
从文件中导入预训练的ONNX™(Open Neural Network Exchange)网络净
= importONNXNetwork (modelfile
)modelfile
.函数返回网络净
作为一个DAGNetwork
或dlnetwork
对象。
importONNXNetwork
要求ONNX模型格式的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则importONNXNetwork
提供下载链接。
请注意
默认情况下,importONNXNetwork
当软件不能将ONNX运算符转换为等效的内置MATLAB时,尝试生成一个自定义层®层。有关软件支持转换的操作符列表,请参见金宝app支持转换到内置MATLAB层的金宝appONNX操作符.
importONNXNetwork
在包中保存生成的自定义层+
.modelfile
importONNXNetwork
不为每个不支持转换为内置MATLAB层的ONNX操作符自动生成自定义层。金宝app有关如何处理不受支持的层的更多信息,请参见金宝app选择功能.
下载并安装ONNX模型格式支持包的深度学习工具箱转换器。金宝app
类型importONNXNetwork
在命令行。
importONNXNetwork
如果没有安装ONNX模型格式的深度学习工具箱转换器,那么该函数将提供到Add-On Explorer中所需的支持包的链接。金宝app要安装支持包,请单击链接,然后金宝app单击安装.通过从模型文件导入网络,检查安装是否成功“simplenet.onnx”
在命令行。如果安装了支持金宝app包,则函数返回aDAGNetwork
对象。
modelfile =“simplenet.onnx”;净= importONNXNetwork (modelfile)
net = DAGNetwork with properties: Layers: [9×1 nnet.cnn.layer.Layer] Connections: [8×2 table] InputNames: {'imageinput'} OutputNames: {'ClassificationLayer_softmax1002'}
绘制网络架构图。
情节(净)
DAGNetwork
导入预训练的ONNX网络作为DAGNetwork
对象,并使用导入的网络对图像进行分类。
的ONNX模型squeezenet
卷积神经网络。
squeezeNet = squeezeNet;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);
指定类名。
一会= squeezeNet.Layers . class(结束);
导入pretrainedsqueezeNet.onnx
模型,并指定类。默认情况下,importONNXNetwork
将网络导入为DAGNetwork
对象。
网= importONNXNetwork (“squeezeNet.onnx”、类=一会)
net = DAGNetwork with properties: Layers: [70×1 nnet.cnn.layer.Layer] Connections: [77×2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_prob'}
分析导入的网络。
analyzeNetwork(净)
阅读你想分类的图像,并显示图像的大小。图像是384 × 512像素,有三个颜色通道(RGB)。
我= imread (“peppers.png”);大小(我)
ans =1×3384 512 3
将图像调整为网络的输入大小。显示图像。
I = imresize(I,[227 227]);imshow(我)
使用导入的网络对图像进行分类。
标签=分类(净,我)
标签=分类甜椒
dlnetwork
导入预训练的ONNX网络作为dlnetwork
对象,并使用导入的网络对图像进行分类。
的ONNX模型squeezenet
卷积神经网络。
squeezeNet = squeezeNet;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);
指定类名。
一会= squeezeNet.Layers . class(结束);
导入pretrainedsqueezeNet.onnx
模型作为dlnetwork
对象。
网= importONNXNetwork (“squeezeNet.onnx”TargetNetwork =“dlnetwork”)
net = dlnetwork with properties: Layers: [70×1 nnet.cnn.layer.Layer] Connections: [77×2 table] Learnables: [52×3 table] State: [0×3 table] InputNames: {'data'} OutputNames: {'probOutput'} Initialized: 1
阅读你想分类的图像,并显示图像的大小。图像是384 × 512像素,有三个颜色通道(RGB)。
我= imread (“peppers.png”);大小(我)
ans =1×3384 512 3
将图像调整为网络的输入大小。显示图像。
I = imresize(I,[227 227]);imshow(我)
将图像转换为dlarray
.用尺寸格式化图像“SSCB”
(spatial, spatial, channel, batch)。在本例中,批大小为1,您可以省略它(“SSC”
).
I_dlarray = dlarray(单(我),“SSCB”);
对样本图像进行分类,找到预测的标签。
概率=预测(净,I_dlarray);[~,标签]= max(概率);
显示分类结果。
类名(标签)
ans =分类甜椒
导入预训练的ONNX网络作为DAGNetwork
对象,并使用导入的网络对图像进行分类。导入的网络包含不支持转换为内置MATLAB层的ONNX运算符。金宝app当您导入这些操作符时,软件会自动生成自定义层。
这个例子使用了helper函数findCustomLayers
.要查看此函数的代码,请参见Helper函数.
指定要导入的模型文件为shufflenet
使用ONNX模型动物园中的操作符设置9。shufflenet
是一个卷积神经网络,训练了来自ImageNet数据库的100多万张图像。因此,该网络学习了丰富的特征表示范围广泛的图像。该网络可以将图像分为1000个对象类别,如键盘、鼠标、铅笔和许多动物。
modelfile =“shufflenet - 9. onnx”;
从其中导入类名squeezenet
,它也使用来自ImageNet数据库的图像进行训练。
squeezeNet = squeezeNet;一会= squeezeNet.Layers .ClassNames(结束);
进口shufflenet
.默认情况下,importONNXNetwork
将网络导入为DAGNetwork
对象。如果导入的网络包含不支持转换为内置MATLAB层的ONNX操作符,则金宝appimportONNXNetwork
可以自动生成自定义层来代替这些操作符。importONNXNetwork
将每个生成的自定义层保存为单独的.m
包中的文件+ shufflenet_9
在当前文件夹中。使用name-value参数指定包名PackageName
.
网= importONNXNetwork (modelfile,...类=一会PackageName =“shufflenet_9”)
net = DAGNetwork with properties: Layers: [173×1 nnet.cnn.layer.Layer] Connections: [188×2 table] InputNames: {'gpu_0_data_0'} OutputNames: {'ClassificationLayer_gpu_0_softmax_1'}
使用helper函数查找自动生成的自定义层的索引findCustomLayers
,并显示自定义层。
印第安纳州= findCustomLayers(净。层,' + shufflenet_9 ');net.Layers(印第安纳州)
ans = 16×1 Layer array with layers: 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
阅读你想分类的图像,并显示图像的大小。图像是792 × 1056像素,有三个颜色通道(RGB)。
我= imread (“peacock.jpg”);大小(我)
ans =1×3792 1056 3
将图像调整为网络的输入大小。显示图像。
I = imresize(I,[224 224]);imshow(我)
的输入shufflenet
需要进一步的预处理(详情请参阅shuffle lenet在ONNX模型动物园).重新调节图像。对图像进行归一化,方法是减去训练图像的均值并除以训练图像的标准差。
I =重新调节(0,1);meanIm = [0.485 0.456 0.406];stdIm = [0.229 0.224 0.225];I = (I -重塑(meanIm,[1 1 3]))。/重塑(stdIm [1 1 3]);imshow(我)
使用导入的网络对图像进行分类。
标签=分类(净,我)
标签=分类孔雀
Helper函数
本节提供helper函数的代码findCustomLayers
在这个例子中使用。findCustomLayers
返回指数
自定义层的importONNXNetwork
自动生成。
函数index = findCustomLayers(layers,PackageName) s = what([‘。’PackageName]);指数= 0(1、长度(小);为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”S.m {j}(1:end-2)]) indices(j) = i;结束结束结束结束
导入一个具有多个输出的ONNX网络DAGNetwork
对象。
指定ONNX模型文件并导入预训练的ONNX模型。默认情况下,importONNXNetwork
将网络导入为DAGNetwork
对象。
modelfile =“digitsMIMO.onnx”;净= importONNXNetwork (modelfile)
net = DAGNetwork with properties: Layers: [19×1 nnet.cnn.layer.Layer] Connections: [19×2 table] InputNames: {'input'} OutputNames: {'ClassificationLayer_sm_1' 'RegressionLayer_fc_1_Flatten'}
网络有两个输出层:一个分类层(ClassificationLayer_sm_1
)来分类数字和一个回归层(RegressionLayer_fc_1_Flatten
)来计算这些数字的预测角度的均方误差。绘制网络架构图。
情节(净)标题(“digitsMIMO网络体系结构”)
要使用导入的网络进行预测,请使用预测
函数,并设置ReturnCategorical
选项真正的
.
modelfile
- - - - - -ONNX模型文件的名称包含网络的ONNX模型文件的名称,指定为字符向量或字符串标量。该文件必须在当前文件夹中或在MATLAB路径上的一个文件夹中,或者必须包含文件的完整或相对路径。
例子:“cifarResNet.onnx”
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名和价值
为对应值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
importONNXNetwork (modelfile TargetNetwork =“dagnetwork GenerateCustomLayers = true, PackageName =“CustomLayers”)
导入网络modelfile
作为一个DAGNetwork
对象,并将自动生成的自定义层保存在包中+ CustomLayers
在当前文件夹中。
GenerateCustomLayers
- - - - - -自定义层生成的选项真正的
或1
(默认)|假
或0
用于自定义层生成的选项,指定为数字或逻辑1
(真正的
)或0
(假
).如果你设置GenerateCustomLayers
来真正的
,importONNXNetwork
当软件不能将ONNX运算符转换为等效的内置MATLAB层时,尝试生成一个自定义层。importONNXNetwork
将每个生成的自定义层保存为单独的.m
文件中+
.要查看或编辑自定义层,请打开关联的PackageName
.m
文件。有关自定义层的更多信息,请参见深度学习自定义图层.
例子:GenerateCustomLayers = false
TargetNetwork
- - - - - -深度学习工具箱网络的目标类型“dagnetwork”
(默认)|“dlnetwork”
深度学习工具箱网络的目标类型,具体为“dagnetwork”
或“dlnetwork”
.这个函数importONNXNetwork
进口网络净
作为一个DAGNetwork
或dlnetwork
对象。
如果您将网络导入为DAGNetwork
对象,净
必须包括ONNX模型指定的输入和输出层,或者使用name-value参数指定的输入和输出层InputDataFormats
,OutputDataFormats
,或OutputLayerType
.
如果您将网络导入为dlnetwork
对象,importONNXNetwork
附加一个CustomOutputLayer
的每个输出分支的末尾净
,并可能附加aCustomInputLayer
在输入分支的开头。函数附加一个CustomInputLayer
如果输入数据格式或输入图像大小未知。有关这些层的数据格式的网络特定信息,请参阅CustomInputLayer
和CustomOutputLayer
对象。有关如何解释深度学习工具箱输入和输出数据格式的信息,请参见转换ONNX输入和输出张量到内置MATLAB层.
例子:TargetNetwork = " dlnetwork "
InputDataFormats
- - - - - -网络输入的数据格式网络输入的数据格式,指定为字符向量、字符串标量或字符串数组。importONNXNetwork
尝试解释来自ONNX文件的输入数据格式。名称-值参数InputDataFormats
是有用的,当importONNXNetwork
无法导出输入数据格式。
集InputDataFomats
转换为按ONNX输入张量顺序排列的数据格式。例如,如果指定InputDataFormats
作为“BSSC”
,则导入网络有一个imageInputLayer
输入。了解更多信息importONNXNetwork
解释ONNX输入张量的数据格式以及如何指定InputDataFormats
有关不同的深度学习工具箱输入层,请参见转换ONNX输入和输出张量到内置MATLAB层.
如果指定空数据格式([]
或""
),importONNXNetwork
自动解释输入数据格式。
例子:InputDataFormats = ' BSSC '
例子:InputDataFormats = " BSSC "
例子:InputDataFormats = [" bcs”、“”、“公元前”)
例子:InputDataFormats = {bcs,[],“公元前”}
数据类型:字符
|字符串
|细胞
OutputDataFormats
- - - - - -网络输出的数据格式网络输出的数据格式,指定为字符向量、字符串标量或字符串数组。importONNXNetwork
尝试解释ONNX文件的输出数据格式。名称-值参数OutputDataFormats
是有用的,当importONNXNetwork
无法导出输出数据格式。
集OutputDataFormats
以ONNX输出张量的顺序转换为数据格式。例如,如果指定OutputDataFormats
作为“公元前”
,则导入网络有一个classificationLayer
输出。了解更多信息importONNXNetwork
解释ONNX输出张量的数据格式以及如何指定OutputDataFormats
有关不同的深度学习工具箱输出层,请参见转换ONNX输入和输出张量到内置MATLAB层.
如果指定空数据格式([]
或""
),importONNXNetwork
自动解释输出数据格式。
例子:公元前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”
.这个函数importONNXNetwork
附加一个ClassificationOutputLayer
,RegressionOutputLayer
,或pixelClassificationLayer
(计算机视觉工具箱)对象到导入的网络体系结构的第一个输出分支的末端。附加一个pixelClassificationLayer
(计算机视觉工具箱)对象需要计算机视觉工具箱™。如果ONNX模型modelfile
指定输出层类型或您指定的TargetNetwork
作为“dlnetwork”
,importONNXNetwork
忽略name-value参数OutputLayerType
.
例子:OutputLayerType = "回归"
类
- - - - - -类输出层为第一网络输出“汽车”
(默认)|分类向量|字符串数组|字符向量的单元格数组用于第一个网络输出的输出层的类,指定为类别向量、字符串数组、字符向量的单元数组或“汽车”
.如果类
是“汽车”
,然后importONNXNetwork
将类设置为分类(1:N)
,在那里N
为类数。如果指定字符向量的字符串数组或单元格数组str
,然后importONNXNetwork
设置输出层的类为分类(str, str)
.如果您指定TargetNetwork
作为“dlnetwork”
,importONNXNetwork
忽略name-value参数类
.
例子:类= {' 0 ',' 1 ',' 3 '}
例子:类=分类({‘狗’,‘猫’})
数据类型:字符
|分类
|字符串
|细胞
FoldConstants
- - - - - -常数合并优化“深度”
(默认)|“浅”
|“没有”
常数折叠优化,指定为“深度”
,“浅”
,或“没有”
.在将ONNX运算符转换为等效的内置MATLAB层期间,通过在ONNX初始化器(初始常量值)上计算操作,常量折叠优化了导入的网络架构。
如果ONNX网络包含操作符,软件不能转换为等效的内置MATLAB层(参见支持转换到内置MATLAB层的金宝appONNX操作符),不断的折叠优化可以减少无支撑层的数量。金宝app当您设置FoldConstants
来“深度”
,与将参数设置为时相比,网络具有相同或更少的不支持层金宝app“浅”
.但是,网络导入时间可能会增加。集FoldConstants
来“没有”
禁用网络架构优化。
如果网络经过不断的折叠优化后仍然包含不支持的层,金宝appimportONNXNetwork
返回一个错误。在这种情况下,可以使用importONNXLayers
或importONNXFunction
.有关更多信息,请参见选择功能.
例子:FoldConstants = "浅"
净
—预训练的ONNX网络DAGNetwork
对象|dlnetwork
对象预训练的ONNX网络,返回为DAGNetwork
或dlnetwork
对象。
指定TargetNetwork
作为“dagnetwork”
将网络导入为DAGNetwork
对象。在DAGNetwork
对象,然后使用分类
函数。
指定TargetNetwork
作为“dlnetwork”
将网络导入为dlnetwork
对象。在dlnetwork
对象,然后使用预测
函数。将输入数据指定为dlarray
使用正确的数据格式(有关更多信息,请参阅fmt
的观点dlarray
).
importONNXNetwork
金宝app支持的ONNX版本如下:
该函数支持版本6的ONNX金宝app中间表示。
该函数支持ONNX操作符集金宝app6到13。
请注意
如果导入导出的网络,则重新导入的网络的层可能与原始网络不同,因此可能不受支持。金宝app
importONNXNetwork
金宝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
Operator是一个只有两个元素的向量(p1, p2)
,importONNXNetwork
进口Conv
作为一个convolution2dLayer
使用name-value参数“填充”
指定为(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 (图像处理工具箱) |
importONNXNetwork
尝试解释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 |
importONNXNetwork
不能在GPU上执行。然而,importONNXNetwork
导入预训练的深度学习神经网络作为DAGNetwork
或dlnetwork
对象,可以在GPU上使用。
如果您将网络导入为DAGNetwork
对象,您可以在CPU或GPU上使用分类
.使用name-value参数指定硬件需求ExecutionEnvironment
.对于具有多个输出的网络,使用预测
函数DAGNetwork
对象。
如果您将网络导入为DAGNetwork
对象,您可以在CPU或GPU上使用预测
.使用name-value参数指定硬件需求ExecutionEnvironment
.如果网络有多个输出,请指定name-value参数ReturnCategorical
作为真正的
.
如果您将网络导入为dlnetwork
对象,您可以在CPU或GPU上使用预测
.这个函数预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
如果你使用minibatchqueue
对小批量输入数据进行处理和管理minibatchqueue
对象默认将输出转换为GPU阵列(如果有GPU可用)。
使用dlupdate
转换a的可学习参数dlnetwork
对象到GPU阵列。
dlnet = dlupdate (@gpuarray dlnet)
您可以使用CPU或GPU来训练导入的网络trainNetwork
.要指定培训选项,包括执行环境的选项,请使用trainingOptions
函数。使用name-value参数指定硬件需求ExecutionEnvironment
.有关如何加速训练的更多信息,请参见在gpu和云上并行扩展深度学习.
使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱).
要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。
有关用于训练和预测的预处理图像的更多信息,请参见深度学习的图像预处理.
ONNX模型格式的深度学习工具箱转换器提供三个函数来导入预训练的ONNX网络:importONNXNetwork
,importONNXLayers
,importONNXFunction
.
如果导入的网络包含不支持的ONNX操作符转换为内置的MATLAB层(参见金宝app支持转换到内置MATLAB层的金宝appONNX操作符),importONNXNetwork
不生成自定义层,那么importONNXNetwork
返回一个错误。在这种情况下,您仍然可以使用importONNXLayers
导入网络架构和权重或importONNXFunction
将网络导入为ONNXParameters
对象和模型函数。
有关哪个导入函数最适合不同的场景的更多信息,请参见选择“功能导入ONNX预训练网络”.
一会
选项已被移除从R2021b开始的错误
一会
被移除。使用类
代替。要更新代码,请替换一会
与类
.
importONNXNetwork
无法创建输入和输出层ONNX文件信息行为在R2021b中改变
如果您导入一个ONNX模型作为DAGNetwork
对象时,导入的网络必须包括输入层和输出层。importONNXNetwork
尝试将输入和输出ONNX张量转换为内置的MATLAB层。当导入一些网络时importONNXNetwork
可以预先导入输入和输出内置MATLAB层,importONNXNetwork
现在可能返回一个错误。在这种情况下,执行以下操作之一来更新代码:
指定名称-值参数TargetNetwork
作为“dlnetwork”
将网络导入为dlnetwork
对象。
使用名称-值参数InputDataFormats
,OutputDataFormats
,OutputLayerType
指定输入网络的输入和输出。
使用importONNXLayers
将网络导入为带有占位符层的层图。
使用importONNXFunction
将网络作为模型函数和ONNXParameters
对象。
importCaffeLayers
|importCaffeNetwork
|importKerasLayers
|importKerasNetwork
|importONNXLayers
|exportONNXNetwork
|importONNXFunction
|importTensorFlowNetwork
|importTensorFlowLayers
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。