主要内容

importONNXLayers

从导入图层ONNX网络

描述

例子

= importONNXLayers (模型文件)导入ONNX的层™ (开放式神经网络交换)网络文件模型文件。您可以在新数据集上训练导入的图层,或将图层组装到网络中,以便进行预测。

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

例子

= importONNXLayers (模型文件,名称、值)使用由一个或多个名称-值对参数指定的附加选项从ONNX网络导入层。

例如,importONNXLayers (modelfile ImportWeights,假)导入网络架构,不从文件中添加权重模型文件

例子

全部崩溃

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

类型importONNXLayers在命令行。

importONNXLayers

如果ONNX模型格式的深度学习工具箱转换器如果未安装,则该函数将在加载项资源管理器中提供指向所需支持包的链接。若要安装支持包,请单击该链接,然后单击金宝app安装. 通过从模型文件导入网络,检查安装是否成功“cifarResNet.onnx”如果安装了支持包,则函数返回金宝appDAGNetwork对象。

modelfile =“cifarResNet.onnx”;图层=导入图层(模型文件,“OutputLayerType”,“分类”)
layers = LayerGraph with properties: layers: [77×1 net.cnn.layer. layer]连接:[85×2 table]

导入在CIFAR-10数据集上训练的残差神经网络的结构和权重。指定包含ONNX网络的文件以及要添加到导入网络的输出层的类型。

modelfile =“cifarResNet.onnx”;lgraph = importONNXLayers (modelfile,...“OutputLayerType”,“分类”,...“重要性”,真正的)
lgraph = LayerGraph with properties: Layers: [77×1 nnet.cnn.layer.Layer] Connections: [85×2 table] InputNames: {'Input_input'} OutputNames: {'ClassificationLayer_softmax'}

分析导入的网络结构。

analyzeNetwork (lgraph)

使用导入具有多个输出的ONNX网络importONNXLayers.函数为输出插入占位符层。导入之后,您可以使用findPlaceholderLayers替换层分别地

指定要导入层和权重的网络文件。

modelfile =“digitsMIMO.onnx”;

中的网络digitsMIMO.onnx有两个输出层:一个分类层分类的数字和一个回归层计算的均方误差的预测角度的数字。导入的层和权重模型文件

层= importONNXLayers (“digitsMIMO.onnx”,“重要性”,真正的)
警告:ONNX网络有多个输出。ImportOnXLayers为输出插入占位符层。分别使用findPlaceholderLayers和replaceLayer查找和替换层。
layers =带有属性的LayerGraph: layers: [19×1 net.cnn.layer. layer] Connections: [19×2 table] InputNames: {'Input_input'} OutputNames: {1×0 cell}

importONNXLayers显示警告并为输出层插入占位符层。

使用以下命令绘制图层图:情节

绘图(图层)

图层图有两个输出图层:Output_fc_1_FlattenOutput_sm_1。这两个层是输出的占位符。您可以通过查看属性或使用findPlaceholderLayers函数。

层次,层次
ans = 19×1 Layer array with layers:1“Input_input”图像输入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 Output_sm_1占位符层占位符for 'Output' ONNX operator 18 'fc_1_Flatten' ONNX Flatten Flatten激活为1-D假设C-style (row-major) order 19 'Output_fc_1_Flatten' PLACEHOLDER 'Output' ONNX操作符的层占位符
占位符层=findPlaceholderLayers(层)
placeholderLayers = 2×1 PlaceholderOutputLayer数组:1' Output_sm_1' PLACEHOLDER LAYER PLACEHOLDER for 'Output' ONNX operator 2 'Output_fc_1_Flatten' PLACEHOLDER LAYER PLACEHOLDER for 'Output' ONNX operator

创建输出层以替换占位符层。首先,使用名称创建一个分类层Output_sm_1.指定输出层的类为0,1.、……9.如果您不指定类,则软件会自动将它们设置为1.,2.、……N,在那里N是班级的数量。

output1=分类层(“姓名”,“Output_sm_1”,“类”,字符串(0:9));

创建一个名为Output_fc_1_Flatten

output2=回归层(“姓名”,“Output_fc_1_Flatten”);

将占位符层替换为输出1输出2使用替换层

层=替换层(层,“Output_sm_1”,输出1);层=替换层(层,“Output_fc_1_Flatten”, output2);

显示属性层图的确认替换。

层次,层次
ans = 19×1 Layer array with layers:1“Input_input”图像输入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 Output_sm_1分类输出假设C-style (row-major) order 19 'Output_fc_1_Flatten'回归输出均方误差

使用assembleNetwork.函数返回DAGNetwork准备用于预测的对象。

assembledNet = assembleNetwork(层)
[19×1 nnet.cnn.layer.Layer]连接:[19×2 table] InputNames: {'Input_input'} OutputNames: {'Output_sm_1' 'Output_fc_1_Flatten'}

输入参数

全部崩溃

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

例子:“cifarResNet.onnx”

名称-值对参数

指定可选的逗号分隔的字符对名称、值参数。的名字是参数名和价值为对应值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:importONNXLayers (modelfile“OutputLayerType”、“分类”)从中导入网络层模型文件并在导入层的末尾添加分类输出层的输出层。

函数附加到导入的网络体系结构末端的输出层类型,指定为“分类”,“回归”,或“像素分类”.使用“像素分类”附加像素分类层(计算机视觉工具箱)对象(需要计算机视觉工具箱)™).

如果一个网络模型文件具有多个输出,则不能使用此参数指定输出图层类型。importONNXLayers为输出插入占位符层。导入之后,您可以使用findPlaceholderLayers替换层分别地

例子:“OutputLayerType”、“回归”

导入权重的指标以及网络架构,指定为其中之一假的真正的

例子:“ImportWeights”,真的

数据类型:符合逻辑的

输出参数

全部崩溃

网络体系结构,返回为分层图对象。

限制

  • importONNXLayers金宝app支持以下ONNX版本:

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

    • 该函数完全支持ONNX操作符集6、7、金宝app8和9。

    • 该函数提供了对ONNX操作符集10和11的有限支持。金宝app

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

更多关于

全部崩溃

金宝app支持ONNX

importONNXLayers金宝app支持以下ONNX层,但有一些限制:

ONNX层 深度学习工具箱层

添加

additionLayernnet.onnx.layer.ElementwiseAffineLayer

AveragePool

averagePooling2dLayer

BatchNormalization

batchNormalizationLayer

Concat

concatenationLayer

常数

无(作为权重导入)

Conv*

convolution2dLayer

ConvTranspose

transposedConv2dLayer

辍学

dropoutLayer

埃卢

eluLayer

Gemm

完全连接层如果ONNX网络是循环的,则为nnet.onnx.layer.FlattenLayer然后convolution2dLayer

GlobalAveragePool

globalAveragePooling2dLayer

GlobalMapool

globalMaxPooling2dLayer

格鲁

泥鳅

瞬时正规化

组规范化层具有numGroups指定为“channel-wise”

LeakyRelu

漏泄层

LRN

CrossChannelNormalizationLayer

LSTM

lstmLayerbilstmLayer

MatMul

完全连接层如果ONNX网络是循环的,则为convolution2dLayer

MaxPool

maxPooling2dLayer

Mul

multiplicationLayer

线性整流函数(Rectified Linear Unit)

雷卢耶clippedReluLayer

乙状结肠

sigmoidLayer

Softmax

softmaxLayer

总和

additionLayer

坦莱尔

*如果的属性Conv运算符是只有两个元素的向量(p1, p2),importONNXLayers进口Conv作为一个convolution2dLayer使用name-value参数“填充”指定为[p1,p2,p1,p2]

ONNX层 ONNX导入器自定义层

剪辑

nnet.onnx.layer.ClipLayer

Div

nnet.onnx.layer.ElementwiseAffineLayer

压平

nnet.onnx.layer.FlattenLayernnet.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(图像处理工具箱)
空间深度 spaceToDepthLayer(图像处理工具箱)
上采样 resize2dLayer(图像处理工具箱)resize3dLayer(图像处理工具箱)

提示

  • 如果ONNX网络包含一个层ONNX模型格式的深度学习工具箱转换器不支持(见金宝app金宝app支持ONNX层),然后importONNXLayers在不支持的层上插入一个占位符层。金宝app要查找网络中不支持的层的名称和索引,请使用金宝appfindPlaceholderLayers函数。然后,您可以将占位符层替换为您定义的新层。要替换一个图层,请使用替换层。有关示例,请参阅导入并组装具有多个输出的ONNX网络

  • 您可以导入具有多个输入和多个输出的ONNX网络。如果网络有多个输入和一个输出,请使用importONNXNetwork.如果网络有多个输出,请使用importONNXLayers.的importONNXLayers函数为输出插入占位符层。导入之后,您可以使用findPlaceholderLayers替换层,有关示例,请参阅导入并组装具有多个输出的ONNX网络.要了解具有多个输入和多个输出的深度学习网络,请参见多输入多输出网络

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

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

    • 要将图像从RGB格式转换为BGR格式,请使用轻弹例如翻转(图片3)

    有关用于训练和预测的预处理图像的更多信息,请参见用于深度学习的图像预处理

参考文献

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

[2]ONNXhttps://onnx.ai/

R2018a中引入