Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

代码生成支持的网络和层

MATLAB® Coder™ 支持序列、有向无环图 (DAG) 和循环卷积神经网络(CNN 或 ConvNets)的代码生成。您可以为任何经过训练的卷积神经网络生成代码,其层支持代码生成。请参阅支持的层

支持的预训练网络

代码生成支持 Deep Learning Toolbox™ 中提供的以下预训练网络。

网络名称说明ARM® 计算库Intel® MKL-DNN
AlexNet

AlexNet 卷积神经网络。关于预训练的 AlexNet 模型,请参阅 alexnet (Deep Learning Toolbox)

DarkNetDarkNet-19 和 DarkNet-53 卷积神经网络。对于预训练的 DarkNet 模型,请参阅 darknet19 (Deep Learning Toolbox)darknet53 (Deep Learning Toolbox)
DenseNet-201

DenseNet-201 卷积神经网络。对于预训练的 DenseNet-201 模型,请参阅 densenet201 (Deep Learning Toolbox)

EfficientNet-b0

EfficientNet-b0 卷积神经网络。关于预训练的 EfficientNet-b0 模型,请参阅 efficientnetb0 (Deep Learning Toolbox)

GoogLeNet

GoogLeNet 卷积神经网络。关于预训练的 GoogLeNet 模型,请参阅 googlenet (Deep Learning Toolbox)

Inception-ResNet-v2

Inception-ResNet-v2 卷积神经网络。关于预训练的 Inception-ResNet-v2 模型,请参阅 inceptionresnetv2 (Deep Learning Toolbox)

Inception-v3Inception-v3 卷积神经网络。关于预训练的 Inception-v3 模型,请参阅 inceptionv3 (Deep Learning Toolbox)
MobileNet-v2

MobileNet-v2 卷积神经网络。关于预训练的 MobileNet-v2 模型,请参阅 mobilenetv2 (Deep Learning Toolbox)

NASNet-Large

NASNet-Large 卷积神经网络。关于预训练的 NASNet-Large 模型,请参阅 nasnetlarge (Deep Learning Toolbox)

NASNet-Mobile

NASNet-Mobile 卷积神经网络。关于预训练的 NASNet-Mobile 模型,请参阅 nasnetmobile (Deep Learning Toolbox)

ResNet

ResNet-18、ResNet-50 和 ResNet-101 卷积神经网络。对于预训练的 ResNet 模型,请参阅 resnet18 (Deep Learning Toolbox)resnet50 (Deep Learning Toolbox)resnet101 (Deep Learning Toolbox)

SegNet

多类像素级分割网络。有关详细信息,请参阅 segnetLayers (Computer Vision Toolbox)

SqueezeNet

小型深度神经网络。有关预训练的 SqeezeNet 模型,请参阅 squeezenet (Deep Learning Toolbox)

VGG-16

VGG-16 卷积神经网络。关于预训练的 VGG-16 模型,请参阅 vgg16 (Deep Learning Toolbox)

VGG-19

VGG-19 卷积神经网络。关于预训练的 VGG-19 模型,请参阅 vgg19 (Deep Learning Toolbox)

Xception

Xception 卷积神经网络。关于预训练的模型,请参阅 xception (Deep Learning Toolbox)

支持的层

对于表中指定的目标深度学习库,MATLAB Coder 支持以下层的代码生成。

安装支持包 MATLAB Coder Interface for Deep Learning Libraries 后,您可以使用 coder.getDeepLearningLayers 查看特定深度学习库支持的层列表。例如:

coder.getDeepLearningLayers('mkldnn')

层名称说明ARM 计算库Intel MKL-DNN泛型 C/C++
additionLayer (Deep Learning Toolbox)

相加层

anchorBoxLayer (Computer Vision Toolbox)

锚框层

averagePooling2dLayer (Deep Learning Toolbox)

平均池化层

batchNormalizationLayer (Deep Learning Toolbox)

批量归一化层

bilstmLayer (Deep Learning Toolbox)双向 LSTM 层
classificationLayer (Deep Learning Toolbox)

创建分类输出层

clippedReluLayer (Deep Learning Toolbox)

裁剪修正线性单元 (ReLU) 层

concatenationLayer (Deep Learning Toolbox)

串联层

convolution2dLayer (Deep Learning Toolbox)

二维卷积层

  • 对于代码生成,参数 PaddingValue 必须等于默认值 0

crop2dLayer (Deep Learning Toolbox)

对输入应用二维裁剪的层

CrossChannelNormalizationLayer (Deep Learning Toolbox)

逐通道局部响应归一化层

自定义层

为您的问题定义的自定义层,具有或不具有可学习参数。

请参阅:

自定义层的输出必须为固定大小数组。

代码生成不支持序列网络中的自定义层。

对于代码生成,自定义层必须包含 %#codegen pragma。

自定义输出层

所有输出层,包括通过使用 nnet.layer.ClassificationLayernnet.layer.RegressionLayer 创建的自定义分类或回归输出层。

有关如何定义自定义分类输出层和指定损失函数的示例,请参阅Define Custom Classification Output Layer (Deep Learning Toolbox)

有关如何定义自定义回归输出层和指定损失函数的示例,请参阅Define Custom Regression Output Layer (Deep Learning Toolbox)

depthConcatenationLayer (Deep Learning Toolbox)

深度串联层

depthToSpace2dLayer (Image Processing Toolbox)二维深度到空间层
dicePixelClassificationLayer (Computer Vision Toolbox)

Dice 像素分类层使用广义 Dice 损失为每个图像像素或体素提供分类标签。

dropoutLayer (Deep Learning Toolbox)

丢弃层

eluLayer (Deep Learning Toolbox)

指数线性单元 (ELU) 层

featureInputLayer (Deep Learning Toolbox)

特征输入层

flattenLayer (Deep Learning Toolbox)

扁平化层

focalLossLayer (Computer Vision Toolbox)焦点损失层使用焦点损失预测对象类。
fullyConnectedLayer (Deep Learning Toolbox)

全连接层

globalAveragePooling2dLayer (Deep Learning Toolbox)

空间数据的全局平均池化层

globalMaxPooling2dLayer (Deep Learning Toolbox)

二维全局最大池化层

groupedConvolution2dLayer (Deep Learning Toolbox)

二维分组卷积层

  • 对于代码生成,参数 PaddingValue 必须等于默认值 0

  • 如果为 numGroups 指定整数,则该值必须小于或等于 2

gruLayer (Deep Learning Toolbox)

门控循环单元 (GRU) 层

imageInputLayer (Deep Learning Toolbox)

图像输入层

  • 代码生成不支持使用函数句柄指定的 'Normalization'

leakyReluLayer (Deep Learning Toolbox)

泄漏修正线性单元 (ReLU) 层

lstmLayer (Deep Learning Toolbox)

长短期记忆 (LSTM) 层

maxPooling2dLayer (Deep Learning Toolbox)

最大池化层

maxUnpooling2dLayer (Deep Learning Toolbox)

最大去池化层

multiplicationLayer (Deep Learning Toolbox)

乘法层

pixelClassificationLayer (Computer Vision Toolbox)

为语义分割创建像素分类层

rcnnBoxRegressionLayer (Computer Vision Toolbox)

Fast 和 Faster R-CNN 的框回归层

rpnClassificationLayer (Computer Vision Toolbox)

区域提议网络 (RPN) 的分类层

regressionLayer (Deep Learning Toolbox)

创建回归输出层

reluLayer (Deep Learning Toolbox)

修正线性单元 (ReLU) 层

resize2dLayer (Image Processing Toolbox)二维调整大小层
scalingLayer (Reinforcement Learning Toolbox)执行器或评价器网络的缩放层
sigmoidLayer (Deep Learning Toolbox)sigmoid 层
sequenceFoldingLayer (Deep Learning Toolbox)序列折叠层
sequenceInputLayer (Deep Learning Toolbox)

序列输入层

  • 对于向量序列输入,在代码生成期间,特征的数量必须为常量。

  • 代码生成不支持使用函数句柄指定的 'Normalization'

sequenceUnfoldingLayer (Deep Learning Toolbox)序列展开层
softmaxLayer (Deep Learning Toolbox)

Softmax 层

softplusLayer (Reinforcement Learning Toolbox)

执行器或评价器网络的 Softplus 层

spaceToDepthLayer (Image Processing Toolbox)

空间到深度层

ssdMergeLayer (Computer Vision Toolbox)

用于目标检测的 SSD 合并层

nnet.keras.layer.FlattenCStyleLayer

按 C 样式(行优先)顺序,将激活值扁平化为一维

nnet.keras.layer.GlobalAveragePooling2dLayer

空间数据的全局平均池化层

nnet.keras.layer.SigmoidLayer

Sigmoid 激活层

nnet.keras.layer.TanhLayer

双曲正切激活层

nnet.keras.layer.ZeroPadding2dLayer

二维输入的零填充层

nnet.onnx.layer.ElementwiseAffineLayer

对输入按元素进行缩放后再相加的层

nnet.onnx.layer.FlattenLayer

ONNX™ 网络的扁平化层

nnet.onnx.layer.IdentityLayer

实现 ONNX 恒等运算符的层

tanhLayer (Deep Learning Toolbox)

双曲正切 (tanh) 层

transposedConv2dLayer (Deep Learning Toolbox)

转置二维卷积层

代码生成不支持输入的不对称裁剪。例如,不支持为 'Cropping' 参数指定向量 [t b l r] 来裁剪输入的顶部、底部、左侧和右侧。

wordEmbeddingLayer (Text Analytics Toolbox)

单词嵌入层将单词索引映射到向量。

yolov2OutputLayer (Computer Vision Toolbox)

YOLO v2 目标检测网络的输出层

yolov2ReorgLayer (Computer Vision Toolbox)

YOLO v2 目标检测网络的重组层

yolov2TransformLayer (Computer Vision Toolbox)

YOLO v2 目标检测网络的变换层

支持的类

说明

ARM 计算库

Intel MKL-DNN

泛型 C/C++

DAGNetwork (Deep Learning Toolbox)

用于深度学习的有向无环图 (DAG) 网络

  • 仅支持 activationspredictclassify 方法。

dlnetwork (Deep Learning Toolbox)

用于自定义训练循环的深度学习网络

  • 代码生成仅支持 InputNamesOutputNames 属性。

  • 代码生成不支持没有输入层的 dlnetwork 对象。

  • 不支持具有 sequenceInputLayer 对象的 dlnetwork 对象的代码生成。

  • 代码生成仅支持 predict 对象函数。predict 方法的 dlarray 输入必须为 single 数据类型。

SeriesNetwork (Deep Learning Toolbox)

用于深度学习的串行网络

  • 仅支持 activationsclassifypredictpredictAndUpdateStateclassifyAndUpdateStateresetState 对象函数。

yolov2ObjectDetector (Computer Vision Toolbox)

  • 代码生成仅支持 yolov2ObjectDetectordetect (Computer Vision Toolbox) 方法。

  • detect 方法的 roi 参数必须为代码生成常量 (coder.const()) 和 1×4 向量。

  • 仅支持 detectThresholdSelectStrongestMinSizeMaxSize 名称-值对组。

  • detectlabels 输出作为字符向量元胞数组返回,例如,{'car','bus'}

ssdObjectDetector (Computer Vision Toolbox)

使用基于 SSD 的检测器来检测目标的对象。

  • 代码生成仅支持 ssdObjectDetectordetect (Computer Vision Toolbox) 方法。

  • detect 方法的 roi 参数必须为 codegen 常量 (coder.const()) 和 1×4 向量。

  • 仅支持 ThresholdSelectStrongestMinSizeMaxSizeMiniBatchSize 名称-值对组。所有名称-值对组都必须为编译时常量。

  • 输入图像的通道和批量大小必须为固定大小。

  • labels 输出以分类数组形式返回。

  • 在生成的代码中,输入会重新缩放为网络输入层的大小。但是,detect 方法返回的边界框基于原始输入大小。

另请参阅

相关主题