主要内容

importonnxnetwork.

导入净化onnx.网络

描述

例子

= importONNXNetwork (modelfile从文件中导入预训练的ONNX™(Open Neural Network Exchange)网络modelfile.该函数返回网络作为一个DAGNetworkdlnetwork.对象。

importonnxnetwork.要求ONNX模型格式的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则importonnxnetwork.提供下载链接。

请注意

默认情况下,importonnxnetwork.当软件不能将ONNX运算符转换为等效的内置MATLAB时,尝试生成一个自定义层®层。有关软件支持转换的操作符列表,请参见金宝appONNX运算符支持转换为内置M金宝appATLAB层

importonnxnetwork.保存包中生成的自定义图层+modelfile

importonnxnetwork.不会自动生成不支持转换成每个ONNX运营商定制层内置MATLAB层。金宝app有关如何处理不支持层的更多信息,请参阅金宝app选择功能

例子

= importONNXNetwork (modelfile名称=值将佩带的ONNX网络导入返回的ONNX网络,其中包含一个或多个名称值参数指定的其他选项。例如,OutputLayerType =“分类”将网络导入为DAGNetwork对象,其分类输出层附加到导入的网络体系结构的第一个输出分支的末端。

例子

全部折叠

下载并安装深度学习工具箱转换器,用于ONNX型号格式支持包。金宝app

类型importonnxnetwork.在命令行。

importonnxnetwork.

如果没有安装ONNX模型格式的深度学习工具箱转换器,那么该函数将提供到Add-On Explorer中所需的支持包的链接。金宝app要安装支持包,请单击链接,然后金宝app单击安装.通过从模型文件导入网络,检查安装是否成功“simplenet.onnx”在命令行。如果安装了支持金宝app包,则函数返回aDAGNetwork对象。

modelfile =.“simplenet.onnx”;净= importONNXNetwork (modelfile)
net =具有属性的Dagnetwork:图层:[9×1 nnet.cnn.layer.layer]连接:[8×2表] InputNames:{'ImageInput'} OutputNames:{'ClassificationLayer_softmax1002'}

绘制网络架构。

情节(净)

将预先介绍的ONNX网络作为一个DAGNetwork对象,并使用导入的网络对图像进行分类。

生成一个ONNX模型挤压卷积神经网络。

squeezeNet = squeezeNet;e出gnonnxnetwork(screezenet,“squeezeNet.onnx”);

指定类名。

一会= squeezeNet.Layers . class(结束);

进口净化squeezeNet.onnx模型,并指定类。默认情况下,importonnxnetwork.将网络导入为DAGNetwork对象。

net = importonnxnetwork(“squeezeNet.onnx”,classes = classnames)
net =具有属性的dagnetwork:图层:[70×1 nnet.cnn.layer.layer]连接:[77×2表] InputNames:{'data'} OutputNames:{'classificationLayer_prob'}

分析导入的网络。

analyzeNetwork(净)

阅读你想分类的图像,并显示图像的大小。图像为384×512像素,具有三个颜色通道(RGB)。

我= imread (“peppers.png”);尺寸(i)
ans =1×3384 512 3

将图像的大小调整为网络的输入大小。显示图像。

i = imresize(i,[227 227]);imshow(我)

使用导入的网络对图像进行分类。

标签=分类(净,我)
标签=分类甜椒

将预先介绍的ONNX网络作为一个dlnetwork.对象,并使用导入的网络对图像进行分类。

生成一个ONNX模型挤压卷积神经网络。

squeezeNet = squeezeNet;e出gnonnxnetwork(screezenet,“squeezeNet.onnx”);

指定类名。

一会= squeezeNet.Layers . class(结束);

进口净化squeezeNet.onnx模型作为dlnetwork.对象。

net = importonnxnetwork(“squeezeNet.onnx”,targetnetwork =“dlnetwork”
NET =具有属性的DLNetwork:图层:[70×1 nnet.cnn.layer.layer]连接:[77×2表]了解信息:[52×3表]状态:[0×3表]输入名称:{'数据'} OutputNames:{'proboutput'}初始化:1

阅读你想分类的图像,并显示图像的大小。图像为384×512像素,具有三个颜色通道(RGB)。

我= imread (“peppers.png”);尺寸(i)
ans =1×3384 512 3

将图像的大小调整为网络的输入大小。显示图像。

i = imresize(i,[227 227]);imshow(我)

将图像转换为dlarray.用尺寸格式化图像“SSCB”(空间,空间,频道,批量)。在这种情况下,批量大小为1,您可以省略它(“SSC”).

I_dlarray = dlarray(单(我),“SSCB”);

对样本图像进行分类,找到预测的标签。

prob =预测(net,i_dlarray);[〜,标签] = max(prob);

显示分类结果。

类名(标签)
ans =分类甜椒

将预先介绍的ONNX网络作为一个DAGNetwork对象,并使用导入的网络对图像进行分类。导入的网络包含不支持转换为内置MATLAB层的ONNX运算符。金宝app当您导入这些操作符时,软件会自动生成自定义层。

这个例子使用了helper函数FindCustomLayers..要查看此函数的代码,请参见Helper函数

指定要导入的模型文件shufflenet使用Opnx Model动物园的操作员设置9。shufflenet是一个卷积神经网络,从ImageNet数据库中培训超过一百万个图像。因此,该网络已经学习了丰富的特征表示,以获得各种图像。网络可以将图像分为1000个对象类别,例如键盘,鼠标,铅笔和许多动物。

modelfile =.“shufflenet - 9. onnx”

从其中导入类名挤压,它也使用来自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:图层:[173×1 nnet.cnn.layer.layer]连接:[188×2表]输入名称:{'gpu_0_data_0'}输出名:{'classificationlayer_gpu_0_softmax_1'}

使用helper函数查找自动生成的自定义层的索引FindCustomLayers.,并显示自定义层。

Ind = findcustomlayers(net.layers,' + shufflenet_9 ');net.Layers(印第安纳州)
ANS = 16×1层阵列层:1 'Reshape_To_ReshapeLayer1004' shufflenet_9.Reshape_To_ReshapeLayer1004 shufflenet_9.Reshape_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_ReshapeLayer10195 '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”);尺寸(i)
ans =1×3792 1056 3

将图像的大小调整为网络的输入大小。显示图像。

I = imresize(I,[224 224]);imshow(我)

输入到shufflenet需要进一步的预处理(有关详细信息,请参阅Shuffleenet在Onnx模型动物园).重新调节图像。对图像进行归一化,方法是减去训练图像的均值并除以训练图像的标准差。

i = Rescale(I,0,1);Willim = [0.485 0.456 0.406];STDIM = [0.229 0.224 0.225];i =(i  -  Repape(割割,[1 1 3]))./重塑(stdim,[1 1 3]);imshow(我)

使用导入的网络对图像进行分类。

标签=分类(净,我)
标签=分类孔雀

Helper函数

本节提供了辅助功能的代码FindCustomLayers.在这个例子中使用。FindCustomLayers.返回指数自定义层的importonnxnetwork.自动生成。

函数index = findCustomLayers(layers,PackageName) s = what(['。\'包裹名字]);索引=零(1,长度(s.m));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:图层:[19×1 nnet.cnn.layer.layer]连接:[19×2表] InputNames:{'输入'} OutputNames:{'classificationLayer_sm_1'''regressionlayer_fc_1_1_flatten'}

网络有两个输出层:一个分类层(ClassificationLayer_sm_1)来分类数字和一个回归层(RegressionLayer_fc_1_Flatten)计算预测数字的预测角度的平均平方误差。绘制网络架构。

情节(网)标题('DigitsMimo网络架构'

要使用导入的网络进行预测,请使用预测功能并设置return类别选项真正的

输入参数

全部折叠

包含网络的ONNX模型文件的名称,指定为字符向量或字符串标量。该文件必须在当前文件夹中或在MATLAB路径上的一个文件夹中,或者必须包含文件的完整或相对路径。

例子:“cifarResNet.onnx”

名称-值参数

指定可选参数对为name1 = value1,...,namen = valuen, 在哪里的名字参数名和价值是相应的价值。名称 - 值参数必须在其他参数之后出现,但对的顺序无关紧要。

例子:importonnxnetwork(modeloleile,targetnetwork =“dagnetwork”,generatecustomlayers = true,packageName =“customlayers”)导入网络modelfile作为一个DAGNetwork对象并保存包中的自动生成的自定义图层+ CustomLayers在当前文件夹中。

用于自定义层生成的选项,指定为数字或逻辑1真正的)或0).如果你设置generateCustomlayers.真正的importonnxnetwork.当软件不能将ONNX运算符转换为等效的内置MATLAB层时,尝试生成一个自定义层。importonnxnetwork.将每个生成的自定义图层保存到单独的.m文件in.+PackageName.要查看或编辑自定义层,请打开关联的.m文件。有关自定义图层的更多信息,请参阅深度学习自定义图层

例子:GenerateCustomLayers = false

包装的名称importonnxnetwork.保存定制图层,指定为字符向量或字符串标量。importonnxnetwork.保存自定义图层包+PackageName在当前文件夹中。如果没有指定PackageName,然后importonnxnetwork.将自定义层保存在名为+modelfile在当前文件夹中。有关包的更多信息,请参见包创建名称空间

例子:PackageName = " shufflenet_9 "

例子:packagename =“customlayers”

深度学习工具箱网络的目标类型,具体为“dagnetwork”“dlnetwork”.这个函数importonnxnetwork.进口网络作为一个DAGNetworkdlnetwork.对象。

  • 如果将网络导入其中DAGNetwork目的,必须包括ONNX模型指定的输入和输出层,或者使用name-value参数指定的输入和输出层InputDataFormats.OutputDataFormats,或OutputLayerType

  • 如果将网络导入其中dlnetwork.目的,importonnxnetwork.附加一个CustomOutputLayer在每个输出分支结束时,并可能附加aCustomInputLayer在输入分支的开头。该功能附加了一个CustomInputLayer如果输入数据格式或输入图像大小未知。有关这些层的数据格式的网络特定信息,请参阅CustomInputLayerCustomOutputLayer对象。有关如何解释深度学习工具箱输入和输出数据格式的信息,请参见转换ONNX输入和输出张量到内置MATLAB层

例子:targetnetwork =“dlnetwork”

网络输入的数据格式,指定为字符向量、字符串标量或字符串数组。importonnxnetwork.尝试从ONNX文件中解释输入数据格式。名称值参数InputDataFormats.是有用的,当importonnxnetwork.无法导出输入数据格式。

InputDataFomats转换为按ONNX输入张量顺序排列的数据格式。例如,如果指定InputDataFormats.作为“bssc”,则导入网络有一个imageInputLayer输入。有关如何的更多信息importonnxnetwork.解释ONNX输入张量的数据格式以及如何指定InputDataFormats.有关不同的深度学习工具箱输入层,请参见转换ONNX输入和输出张量到内置MATLAB层

如果指定空数据格式([]""),importonnxnetwork.自动解释输入数据格式。

例子:InputDataFormats ='BSSC'

例子:InputDataFormats =“BSSC”

例子:InputDataFormats = [" bcs”、“”、“公元前”)

例子:InputDataFormats = {bcs,[],“公元前”}

数据类型:char|细绳|细胞

网络输出的数据格式,指定为字符向量,字符串标量或字符串数​​组。importonnxnetwork.尝试从ONNX文件中解释输出数据格式。名称值参数OutputDataFormats是有用的,当importonnxnetwork.无法导出输出数据格式。

OutputDataFormats以ONNX输出张量的顺序转换为数据格式。例如,如果指定OutputDataFormats作为“公元前”,则导入网络有一个ClassificationLayer.输出。有关如何的更多信息importonnxnetwork.解释ONNX输出张量的数据格式以及如何指定OutputDataFormats对于不同的深层学习工具箱输出图层,请参阅转换ONNX输入和输出张量到内置MATLAB层

如果指定空数据格式([]""),importonnxnetwork.自动解释输出数据格式。

例子:公元前OutputDataFormats = ' '

例子:OutputDataFormats =“BC”

例子:outputDataFormats = [“BCSS”,“”,“BC”]

例子:outputDataFormats = {'bcss',[],'bc'}

数据类型:char|细绳|细胞

第一个网络输入的输入图像的大小,指定为对应于的三或四个数值的向量(高度、宽度、渠道)用于二维图像和[高度,宽度,深度,频道]3 d图像。网络仅在ONNX模型在时使用此信息modelfile没有指定输入大小。

例子:ImageInputSize = [28 28 1]为二维灰度输入图像

例子:ImageInputSize = [224 224 3]用于二维彩色输入图像

例子:ImageInputSize=[28 28 36 3]对于3-D颜色输入图像

第一个网络输出的图层类型,指定为“分类”“回归”,或“pixelclassification”.这个函数importonnxnetwork.附加一个ClassificationOutputLayer.RegressionOutputLayer,或pixelClassificationLayer(计算机视觉工具箱)对象到导入的网络架构的第一个输出分支末尾。附加A.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 '}

例子:类=分类({‘狗’,‘猫’})

数据类型:char|分类|细绳|细胞

常数折叠优化,指定为“深的”“浅”,或“没有”.在将ONNX运算符转换为等效的内置MATLAB层期间,通过在ONNX初始化器(初始常量值)上计算操作,常量折叠优化了导入的网络架构。

如果ONNX网络包含操作符,软件不能转换为等效的内置MATLAB层(参见ONNX运算符支持转换为内置M金宝appATLAB层),常量折叠优化可以减少不受支持的层数。金宝app当你设置时折叠型“深的”,与将参数设置为时相比,网络具有相同或更少的不支持层金宝app“浅”.但是,网络导入时间可能会增加。集折叠型“没有”禁用网络架构优化。

如果网络经过不断的折叠优化后仍然包含不支持的层,金宝appimportonnxnetwork.返回一个错误。在这种情况下,您可以通过使用导入网络importonnxLayers.importONNXFunction.有关更多信息,请参阅选择功能

例子:FoldConstants = "浅"

输出参数

全部折叠

预训练的ONNX网络,返回为DAGNetworkdlnetwork.对象。

  • 指定TargetNetwork作为“dagnetwork”将网络导入ASDAGNetwork对象。在DAGNetwork对象,然后使用分类函数。

  • 指定TargetNetwork作为“dlnetwork”将网络导入ASdlnetwork.对象。在dlnetwork.对象,然后使用预测函数。将输入数据指定为dlarray使用正确的数据格式(有关更多信息,请参阅fmt争论dlarray).

限制

  • importonnxnetwork.金宝app支持的ONNX版本如下:

    • 该函数支持版本6的ONNX金宝app中间表示。

    • 该函数支持ONNX操作符集金宝app6到13。

请注意

如果导入导出的网络,则重新导入的网络的层可能与原始网络不同,因此可能不受支持。金宝app

更多关于

全部折叠

onnx.支持转换为内置的运营金宝app商马铃薯草

importonnxnetwork.金宝app支持以下ONNX操作符转换为内置的MATLAB层,但有一些限制。

ONNX运营商 深度学习工具箱层

添加

additionLayernnet.onnx.layer.ElementwiseAffineLayer

平均泡泡

普通Pooling2dlayer.

Batchnormalization.

batchNormalizationLayer

concatenationLayer

常数

无(作为权重导入)

conv

convolution2dLayer

ConvTranspose

transposedConv2dLayer

退出

dropoutLayer

Elu

elulayer.

宝石

fullyConnectedLayer如果OnNX网络是复发的,否则nnet.onnx.layer.flattenlayer.紧随其后的是convolution2dLayer

GlobalaveragePool.

GlobalaveragePooling2dlayer.

GlobalMaxPool

globalMaxPooling2dLayer

格勒乌

gruLayer

InstanceNormalization

groupNormalizationLayernumGroups指定为“渠道明智”

Leaceryru.

leakyReluLayer

lrn.

CrosschannelnormalizationLayer.

LSTM

lstmlayer.bilstmLayer

Matmul.

fullyConnectedLayer如果OnNX网络是复发的,否则convolution2dLayer

maxpool.

maxPooling2dLayer

m

multiplicationLayer

relu.

reluLayer思考丛林

sigmoid.

sigmoidlayer.

Softmax

softmaxLayer

总和

additionLayer

双曲正切

tanhLayer

如果垫子属性的convOperator是一个只有两个元素的向量[P1,P2]importonnxnetwork.进口conv作为一个convolution2dLayer使用名称值参数'填充'指定为(p1, p2, p1, p2)

ONNX运营商 ONNX导入器自定义图层

夹子

nnet.onnx.layer.ClipLayer

Div

nnet.onnx.layer.ElementwiseAffineLayer

nnet.onnx.layer.flattenlayer.nnet.onnx.layer.flatten3dlayer.

身份

nnet.onnx.layer.IdentityLayer

ImageScaler

nnet.onnx.layer.ElementwiseAffineLayer

PRELU.

nnet.onnx.layer.prelulayer.

重塑

nnet.onnx.layer.flattenlayer.

nnet.onnx.layer.ElementwiseAffineLayer
ONNX运营商 图像处理工具箱™
DepthToSpace DepthTospace2dlayer.(图像处理工具箱)
调整 resize2dlayer.(图像处理工具箱)resize3dlayer.(图像处理工具箱)
SpaceToDepth spaceToDepthLayer(图像处理工具箱)
Upsample resize2dlayer.(图像处理工具箱)resize3dlayer.(图像处理工具箱)

转换onnx.输入和输出张量内置马铃薯草

importonnxnetwork.尝试解释ONNX网络的输入和输出张量的数据格式,然后将它们转换为内置MATLAB输入和输出层。有关解释的详细信息,请参阅表格ONNX输入张量到深度学习工具箱层的转换ONNX输出张量到MATLAB层的转换

在深度学习工具箱中,每个数据格式字符必须是以下标签之一:

  • 年代——空间

  • C- 渠道

  • B——批观测

  • T-时间或顺序

  • U- 未指定

转换onnx.输入张量进入深度学习工具箱

数据格式 数据解释 深度学习工具箱层
ONNX输入张量 MATLAB输入格式 形状 类型
公元前 CB c-经过-n阵列,其中c是功能的数量和n观察的次数是多少 特征 FeatureInputLayer.
bcsBSSC.CSSSSC. SSCB.

h-经过-w-经过-c-经过-n数字数组,hwcn是图像的高度,宽度,图像通道数,以及观察次数

2-D图像 imageInputLayer
BCSSSBSSSC包括SSSC SSSCB

h-经过-w-经过-d-经过-c数字数组,hwdcn分别是图像的高度、宽度、深度、通道数和图像观测数吗

三维图像 image3dInputLayer
TBC. CBT.

c-经过-年代-经过-n矩阵,其中c是序列的特征数量,年代是序列长度,和n是序列观测的数量

矢量序列 sequenceInputLayer
涂层 SSCBT.

h-经过-w-经过-c-经过-年代-经过-n阵列,其中hwcn对应于图像的频道的高度,宽度和数量,年代是序列长度,和n是图像序列观测的数量

2-D图像序列 sequenceInputLayer
TBCSSS SSSCBT.

h-经过-w-经过-d-经过-c-经过-年代-经过-n阵列,其中hwd,c分别对应图像的高度、宽度、深度和通道数量,年代是序列长度,和n是图像序列观测的数量

三维图像序列 sequenceInputLayer

转换onnx.输出张量进入马铃薯草

数据格式 MATLAB层
ONNX输出张量 MATLAB输出格式
公元前TBC. CBCBT. ClassificationLayer.
bcsBSSC.CSSSSC.BCSSSBSSSC包括SSSC SSCB.SSSCB pixelClassificationLayer(计算机视觉工具箱)
涂层TBCSSS SSCBT.SSSCBT. regressionLayer

在GPU上使用导入的网络

importonnxnetwork.不能在GPU上执行。然而,importonnxnetwork.进口普雷雷尼的神经网络以获得深度学习作为一个DAGNetworkdlnetwork.对象,您可以在GPU上使用。

  • 如果将网络导入其中DAGNetwork对象,您可以使用CPU或GPU对导入的网络进行预测分类.使用name-value参数指定硬件需求execultionenvironment..对于具有多个输出的网络,使用预测功能DAGNetwork对象。

  • 如果将网络导入其中DAGNetwork对象,您可以使用CPU或GPU对导入的网络进行预测预测.使用name-value参数指定硬件需求execultionenvironment..如果网络有多个输出,请指定名称值参数return类别作为真正的

  • 如果将网络导入其中dlnetwork.对象,您可以使用CPU或GPU对导入的网络进行预测预测.这个函数预测如果输入数据或网络参数存储在GPU上,则在GPU上执行。

    • 如果你使用小公子处理和管理迷你批次的输入数据,小公子如果GPU可用,则默认情况下,对象将输出转换为GPU数组。

    • dlupdate转换a的可学习参数dlnetwork.对象到GPU阵列。

      dlnet = dlupdate (@gpuarray dlnet)

  • 您可以使用CPU或GPU在CPU或GPU上培训导入的网络trainNetwork.要指定培训选项,包括执行环境的选项,请使用trainingOptions函数。使用name-value参数指定硬件需求execultionenvironment..有关如何加速训练的更多信息,请参见在gpu和云上并行扩展深度学习

使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)

提示

  • 要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。

    • 要调整图像大小,请使用imresize.例如,[3] 227227年imresize(图片)

    • 将图像从RGB转换为BGR格式,使用翻转.例如,翻转(图像,3)

    有关预处理图像进行培训和预测的更多信息,请参阅深度学习的图像预处理

选择功能

用于ONNX模型格式的深度学习工具箱转换器提供三个函数来导入预训练的ONNX网络:importonnxnetwork.importonnxLayers.,importONNXFunction

如果导入的网络包含不支持的ONNX操作符转换为内置的MATLAB层(参见金宝appONNX运算符支持转换为内置M金宝appATLAB层) 和importonnxnetwork.不生成自定义层,那么importonnxnetwork.返回一个错误。在这种情况下,您仍然可以使用importonnxLayers.导入网络架构和权重或importONNXFunction将网络导入ONNXParameters对象和模型函数。

有关哪个导入函数最适合不同的场景的更多信息,请参见选择“功能导入ONNX预训练网络”

兼容性的考虑

全部展开

从R2021B开始的错误

行为在R2021b中改变

参考

[1]开放式神经网络交换https://github.com/onnx/

[2]onnx.https://onnx.ai/

介绍了R2018a