主要内容

代码生成支持的网络和层

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

支持Pretrained网络

以下在深度学习工具箱™中提供的预训练网络支持代码生成。

网络名称 描述 手臂®计算库 英特尔®MKL-DNN
AlexNet

AlexNet卷积神经网络。关于预训练的AlexNet模型,请参见alexnet(深度学习工具箱)

是的 是的
DarkNet DarkNet-19和DarkNet-53卷积神经网络。有关预先训练的暗网模型,请参见darknet19(深度学习工具箱)而且darknet53(深度学习工具箱) 是的 是的
densenet - 201

DenseNet-201卷积神经网络。关于预先训练的DenseNet-201模型,请参见densenet201(深度学习工具箱)

是的 是的
EfficientNet-b0

efficient -b0卷积神经网络。有关预先训练的effecentnet -b0模型,请参见efficientnetb0(深度学习工具箱)

是的 是的
GoogLeNet

GoogLeNet卷积神经网络。关于预先训练的GoogLeNet模型,请参见googlenet(深度学习工具箱)

是的 是的
Inception-ResNet-v2

Inception-ResNet-v2卷积神经网络。关于预先训练的Inception-ResNet-v2模型,请参见inceptionresnetv2(深度学习工具箱)

是的 是的
Inception-v3 Inception-v3卷积神经网络。关于预先训练的Inception-v3模型,请参见inceptionv3(深度学习工具箱) 是的 是的
MobileNet-v2

MobileNet-v2卷积神经网络有关预先训练的MobileNet-v2模型,请参见mobilenetv2(深度学习工具箱)

是的 是的
NASNet-Large

大型卷积神经网络。有关预先训练的NASNet-Large模型,请参见nasnetlarge(深度学习工具箱)

是的 是的
NASNet-Mobile

移动卷积神经网络。有关预先训练的NASNet-Mobile模型,请参见nasnetmobile(深度学习工具箱)

是的 是的
ResNet

ResNet-18, ResNet-50和ResNet-101卷积神经网络。有关预先训练的ResNet模型,请参见resnet18(深度学习工具箱)resnet50(深度学习工具箱),resnet101(深度学习工具箱)

是的 是的
SegNet

多类像素分割网络。有关更多信息,请参见segnetLayers(计算机视觉工具箱)

没有 是的
SqueezeNet

小型的深度神经网络。有关预先训练的SqeezeNet模型,请参见squeezenet(深度学习工具箱)

是的 是的
VGG-16

VGG-16卷积神经网络。对于预先训练的VGG-16模型,请参见vgg16(深度学习工具箱)

是的 是的
VGG-19

VGG-19卷积神经网络。预先训练的VGG-19模型,见vgg19(深度学习工具箱)

是的 是的
Xception

卷积神经网络例外。有关预训练的Xception模型,请参见xception(深度学习工具箱)

是的 是的

支持层

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

一旦你安装了支持包深度学习库的MATLAB编码器接口,你可以使用analyzeNetworkForCodegen看看网络是否与特定深度学习库的代码生成兼容。例如:

结果= analyzeNetworkForCodegen(mobilenetv2,TargetLibrary =“mkldnn”

请注意

从R2022b开始,检查深度学习网络的代码生成兼容性analyzeNetworkForCodegen函数。coder.getDeepLearningLayers不推荐。

层的名字 描述 臂计算库 英特尔MKL-DNN 通用的C / c++
additionLayer(深度学习工具箱)

添加层

是的 是的 是的
anchorBoxLayer(计算机视觉工具箱)

锚箱层

是的 是的

是的

averagePooling2dLayer(深度学习工具箱)

平均池层

是的 是的

是的

batchNormalizationLayer(深度学习工具箱)

批归一化层

是的 是的 是的
bilstmLayer(深度学习工具箱) 双向LSTM层 是的 是的 是的
classificationLayer(深度学习工具箱)

创建分类输出层

是的 是的 是的
clippedReluLayer(深度学习工具箱)

剪切整流线性单元(ReLU)层

是的 是的 是的
concatenationLayer(深度学习工具箱)

连接层

是的 是的 是的
convolution2dLayer(深度学习工具箱)

二维卷积层

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

是的

是的

是的
crop2dLayer(深度学习工具箱)

将二维裁剪应用到输入的图层

是的 是的 没有
CrossChannelNormalizationLayer(深度学习工具箱)

通道方面的本地响应规范化层

是的 是的 没有

自定义图层

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

看到的:

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

序列网络中的自定义层仅支持通用C/ c++代码生成。

对于代码生成,自定义层必须包含% # codegen编译指示。

你可以通过dlarray自定义层,如果:

  • 自定义层进来了dlnetwork

  • 自定义层在DAG或系列网络中,或者继承自nnet.layer.Formattable或者没有反向传播。

对于不支持的dlarray方法,然后必须从dlarray,执行计算,并将数据重建回dlarray代码生成。例如,

函数Z = predict(layer, X)如果coder.target (MATLAB的) Z = doppredict (X);其他的如果isdlarray(X) X1 = extractdata(X);Z1 = doPredict (X1);Z = dlarray (Z1);其他的Z = doPredict (X);结束结束结束

是的

是的

是的

序列网络中的自定义层仅支持通用C/ c++代码生成。

自定义输出层

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

有关演示如何定义自定义分类输出层和指定丢失函数的示例,请参见定义自定义分类输出层(深度学习工具箱)

有关显示如何定义自定义回归输出层和指定损失函数的示例,请参见定义自定义回归输出层(深度学习工具箱)

是的

是的

是的
depthConcatenationLayer(深度学习工具箱)

深度连接层

是的

是的

是的

depthToSpace2dLayer(图像处理工具箱) 二维深度到空间层 是的 是的 是的
dicePixelClassificationLayer(计算机视觉工具箱)

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

是的 是的 没有
dropoutLayer(深度学习工具箱)

辍学层

是的 是的 是的
eluLayer(深度学习工具箱)

指数线性单位(ELU)层

是的 是的 是的
featureInputLayer(深度学习工具箱)

特性输入层

是的 是的 是的
flattenLayer(深度学习工具箱)

平层

是的 是的

是的

focalLossLayer(计算机视觉工具箱) 焦点损失层使用焦点损失预测对象类。 是的 是的

是的

fullyConnectedLayer(深度学习工具箱)

完全连接层

是的 是的 是的
globalAveragePooling2dLayer(深度学习工具箱)

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

是的

是的

是的

globalMaxPooling2dLayer(深度学习工具箱)

二维全局最大池化层

是的 是的

是的

groupedConvolution2dLayer(深度学习工具箱)

二维分组卷积层

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

是的

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

是的

没有

groupNormalizationLayer(深度学习工具箱)

集团标准化层

是的

是的

是的

gruLayer(深度学习工具箱)

门控循环单元(GRU)层

是的

是的

是的
imageInputLayer(深度学习工具箱)

图像输入层

  • 不支持代码生成“归一化”使用函数句柄指定。

是的 是的 是的
leakyReluLayer(深度学习工具箱)

漏校正线性单元(ReLU)层

是的 是的 是的
lstmLayer(深度学习工具箱)

长短时记忆(LSTM)层

是的 是的 是的
lstmProjectedLayer(深度学习工具箱)

LSTM投影层

没有 没有 是的
maxPooling2dLayer(深度学习工具箱)

马克斯池层

如果在内核窗口的非对角线上存在相同的最大值,则maxPooling2dLayer可能会导致MATLAB和生成代码之间的数值不匹配。此问题还会导致每个池区域中最大值的索引不匹配。有关更多信息,请参见maxPooling2dLayer(深度学习工具箱)

是的 是的 是的
maxUnpooling2dLayer(深度学习工具箱)

马克斯unpooling层

如果在内核窗口的非对角线上存在相同的最大值,则maxPooling2dLayer可能会导致MATLAB和生成代码之间的数值不匹配。此问题还会导致每个池区域中最大值的索引不匹配。有关更多信息,请参见maxUnpooling2dLayer(深度学习工具箱)

没有 是的 没有
multiplicationLayer(深度学习工具箱)

乘法层

是的 是的 是的
pixelClassificationLayer(计算机视觉工具箱)

创建用于语义分割的像素分类层

是的 是的 没有
rcnnBoxRegressionLayer(计算机视觉工具箱)

盒子回归层的快速和更快的R-CNN

是的 是的

是的

rpnClassificationLayer(计算机视觉工具箱)

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

是的 是的 没有
regressionLayer(深度学习工具箱)

创建一个回归输出层

是的 是的 是的
reluLayer(深度学习工具箱)

整流线性单元(ReLU)层

是的 是的 是的
resize2dLayer(图像处理工具箱) 二维调整层 是的 是的 是的
scalingLayer(强化学习工具箱) 演员或评论家网络的伸缩层 是的 是的 是的
sigmoidLayer(深度学习工具箱) 乙状结肠层 是的 是的 是的
sequenceFoldingLayer(深度学习工具箱) 序列折叠层 是的 是的 没有
sequenceInputLayer(深度学习工具箱)

序列输入层

  • 对于矢量序列输入,在代码生成过程中特征的数量必须是恒定的。

  • 不支持代码生成“归一化”使用函数句柄指定。

是的 是的 是的
sequenceUnfoldingLayer(深度学习工具箱) 序列展开层 是的 是的 没有
softmaxLayer(深度学习工具箱)

Softmax层

是的

是的

是的
softplusLayer(强化学习工具箱)

演员或评论家网络的软加层

是的 是的 是的
spaceToDepthLayer(图像处理工具箱)

空间到深度层

是的 是的 没有
ssdMergeLayer(计算机视觉工具箱)

用于对象检测的SSD合并层

是的 是的

是的

swishLayer(深度学习工具箱)

时髦的层

是的 是的 是的

nnet.keras.layer.ClipLayer

在上界和下界之间剪辑输入

是的 是的 是的

nnet.keras.layer.FlattenCStyleLayer

将激活扁平化为假设c风格(行为主)顺序的1-D

是的

是的

是的
nnet.keras.layer.GlobalAveragePooling2dLayer

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

是的

是的

是的

nnet.keras.layer.PreluLayer

参数整流线性单元

是的 是的 是的

nnet.keras.layer.SigmoidLayer

乙状结肠活化层

是的

是的

是的

nnet.keras.layer.TanhLayer

双曲正切激活层

是的

是的

是的

nnet.keras.layer.TimeDistributedFlattenCStyleLayer

将一个输入图像序列压平为一个向量序列,假设输入层的c风格(或行为主)存储顺序

是的 是的 是的

nnet.keras.layer.ZeroPadding2dLayer

二维输入的零填充层

是的

是的

是的

nnet.onnx.layer.ClipLayer

在上界和下界之间剪辑输入

是的 是的 是的
nnet.onnx.layer.ElementwiseAffineLayer

层,该层执行按元素缩放输入,然后进行添加

是的 是的 是的

nnet.onnx.layer.FlattenInto2dLayer

以ONNX的方式扁平化MATLAB 2D图像批处理,生成一个2D输出数组CB格式

是的 是的 是的

nnet.onnx.layer.FlattenLayer

ONNX™网络压平层

是的

是的

是的

nnet.onnx.layer.GlobalAveragePooling2dLayer

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

是的 是的 是的

nnet.onnx.layer.IdentityLayer

实现ONNX身份运算符的层

是的

是的

是的

nnet.onnx.layer.PreluLayer

参数整流线性单元

是的 是的 是的

nnet.onnx.layer.SigmoidLayer

乙状结肠活化层

是的 是的 是的

nnet.onnx.layer.TanhLayer

双曲正切激活层

是的 是的 是的

nnet.onnx.layer.VerifyBatchSizeLayer

验证固定批大小

是的 是的 是的

tanhLayer(深度学习工具箱)

双曲正切(tanh)层

是的

是的

是的

transposedConv2dLayer(深度学习工具箱)

转置的二维卷积层

代码生成不支持输入的不对称裁剪。例如,指定一个向量[t b l r]“种植”参数不支持裁剪输入的顶部、底部、左侧和右侧。

是的

是的

没有

wordEmbeddingLayer(文本分析工具箱)

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

是的

是的

没有

yolov2OutputLayer(计算机视觉工具箱)

输出层为YOLO v2对象检测网络

是的

是的

没有

yolov2ReorgLayer(计算机视觉工具箱)

YOLO v2对象检测网络的重组层

是的

是的

没有

yolov2TransformLayer(计算机视觉工具箱)

转换层为YOLO v2对象检测网络

是的

是的

没有

支持类

描述

臂计算库

英特尔MKL-DNN

通用的C / c++

DAGNetwork(深度学习工具箱)

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

  • 只有激活预测,分类支持方法。

是的

是的

是的

dlnetwork(深度学习工具箱)

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

  • 代码生成只支持InputNames而且OutputNames属性。

  • 初始化财产的dlnetwork对象必须设置为true。

  • 的代码dlnetwork有矢量或图像序列输入。对于ARM计算,dlnetwork可以有序列和非序列输入层。对于Intel MKL-DNN,输入层必须是所有序列输入层。代码生成支持包括:

    • dlarray包含向量序列“CT”“认知行为治疗”数据格式。

    • dlarray包含的图像序列“SSCT”“SSCBT”数据格式。

    • 多输入dlnetwork使用异构输入层。对于RNN网络,不支持多重输入。

  • 代码生成只支持预测对象的功能。的dlarray的输入预测方法必须是数据类型。

  • 代码生成支持MIMOdlnetworks

  • 创建一个dlnetwork对象用于代码生成,请参见为代码生成加载预先训练的网络

是的

是的

是的

SeriesNetwork(深度学习工具箱)

深度学习系列网络

  • 只有激活分类预测predictAndUpdateStateclassifyAndUpdateState,resetState支持对象函数。

是的

是的

是的

yolov2ObjectDetector(计算机视觉工具箱)

使用YOLO v2对象检测器检测对象

  • 只有检测(计算机视觉工具箱)的方法yolov2ObjectDetector支持代码生成。

  • roi参数检测方法必须是代码生成常量(coder.const ())和一个1x4向量。

  • 只有阈值SelectStrongestMinSize,最大尺寸名称-值对的检测都受支持。

是的

是的

没有

yolov3ObjectDetector(计算机视觉工具箱)

使用YOLO v3对象检测器检测对象

  • 只有检测(计算机视觉工具箱)的方法yolov3ObjectDetector支持代码生成。

  • roi参数检测方法必须是代码生成常量(coder.const ())和一个1x4向量。

  • 只有阈值SelectStrongestMinSize,最大尺寸名称-值对的检测都受支持。

是的

是的

是的

yolov4ObjectDetector(计算机视觉工具箱)

使用YOLO v4对象检测器检测对象

  • roi参数检测方法必须是代码生成常量(coder.const ())和一个1x4向量。

  • 只有阈值SelectStrongestMinSize最大尺寸,MiniBatchSize名称-值对的检测都受支持。

是的

是的

是的

ssdObjectDetector(计算机视觉工具箱)

对象,使用基于ssd的检测器检测对象。

  • 只有检测(计算机视觉工具箱)的方法ssdObjectDetector支持代码生成。

  • roi参数检测方法必须是编码原常数(coder.const ())和一个1x4向量。

  • 只有阈值SelectStrongestMinSize最大尺寸,MiniBatchSize支持名称-值对。所有名称-值对必须是编译时常量。

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

  • 标签输出作为分类数组返回。

  • 在生成的代码中,输入被缩放到网络输入层的大小。但是这个边界框检测方法返回的值参照原始输入大小。

是的

是的

是的

pointPillarsObjectDetector(激光雷达工具箱)

PointPillars网络用于探测激光雷达点云中的物体

  • 只有检测的方法pointPillarsObjectDetector支持代码生成。

  • 只有阈值SelectStrongest,MiniBatchSize的名称-值对检测支持方法。

是的

是的

没有

int8代码生成

您可以将深度学习工具箱与深度学习工具箱模型量化库支持包结合使用,通过将卷积层的权重、偏差和激活量化为8位缩放整数数据类型,来减少深度神经网络的内存占用。然后,你可以使用MATLAB编码器为网络生成优化的代码。看到为深度学习网络生成int8代码

另请参阅

相关的话题

Baidu
map