主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

代码生成支持的网络和层

R2026a

MATLAB® Coder™ 支持 dlnetwork (Deep Learning Toolbox)、序列和有向无环图 (DAG) 网络的代码生成。您可以为任何使用受支持的深度学习网络、层和类的经过训练的神经网络生成代码。

支持的预训练网络

代码生成支持 Deep Learning Toolbox™ 中提供的以下预训练网络。您可以使用 imagePretrainedNetwork (Deep Learning Toolbox) 函数将这些预训练神经网络作为 dlnetwork (Deep Learning Toolbox) 对象加载,以便生成代码。请注意,代码生成不支持将 imagePretrainedNetwork 函数的名称-值参量 Weights 设置为 "none"。例如,使用以下代码加载预训练的 GoogLeNet 神经网络。

net = imagePretrainedNetwork("googlenet")

您可以使用 analyzeNetworkForCodegen 来查看网络是否兼容特定深度学习库的代码生成。例如:

result = analyzeNetworkForCodegen(imagePretrainedNetwork("googlenet"),TargetLibrary='none')

imagePretrainedNetwork 模型名称参量通用 C/C++

Intel® MKL-DNN 和

ARM® Compute Library

"alexnet"

"darknet19"

"darknet53"

"densenet201"

"efficientnetb0"

"googlenet"

"inceptionresnetv2"

"inceptionv3"

"mobilenetv2"

"nasnetlarge"

 

"nasnetmobile"

 

"resnet18"

"resnet50"

"resnet101"

"shufflenet"

 

注意

shufflenet 不支持 ARM Compute Library。

"squeezenet"

"vgg16"

"vgg19"

"xception"

支持的层

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

注意

在下列各表中,信息图标 表示网络、层或类具有有限的代码生成功能。您可能会看到错误和意外行为。有关详细信息,请参阅该网络、层或类页上的“扩展功能”部分。

输入层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

imageInputLayer (Deep Learning Toolbox)

sequenceInputLayer (Deep Learning Toolbox)

featureInputLayer (Deep Learning Toolbox)

卷积和全连接层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

convolution1dLayer (Deep Learning Toolbox)

 

convolution2dLayer (Deep Learning Toolbox)

fullyConnectedLayer (Deep Learning Toolbox)

groupedConvolution2dLayer (Deep Learning Toolbox)

注意

当组的数量等于滤波器通道的数量时,可以为逐通道卷积生成通用 C/C++ 代码。

transposedConv1dLayer (Deep Learning Toolbox)

 

transposedConv2dLayer (Deep Learning Toolbox)

spectralConvolution1dLayer (Deep Learning Toolbox)

 

spectralConvolution2dLayer (Deep Learning Toolbox)

 

spectralConvolution3dLayer (Deep Learning Toolbox)

 

序列层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

bilstmLayer (Deep Learning Toolbox)

flattenLayer (Deep Learning Toolbox)

gruProjectedLayer (Deep Learning Toolbox)

 

gruLayer (Deep Learning Toolbox)

lstmLayer (Deep Learning Toolbox)

lstmProjectedLayer (Deep Learning Toolbox)

 

sequenceInputLayer (Deep Learning Toolbox)

wordEmbeddingLayer (Text Analytics Toolbox)

激活层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

clippedReluLayer (Deep Learning Toolbox)

eluLayer (Deep Learning Toolbox)

gelu (Deep Learning Toolbox)

geluLayer (Deep Learning Toolbox)

leakyReluLayer (Deep Learning Toolbox)

preluLayer (Deep Learning Toolbox)

reluLayer (Deep Learning Toolbox)

sigmoidLayer (Deep Learning Toolbox)

softmaxLayer (Deep Learning Toolbox)

softplusLayer (Deep Learning Toolbox)

swishLayer (Deep Learning Toolbox)

tanhLayer (Deep Learning Toolbox)

归一化层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

batchNormalizationLayer (Deep Learning Toolbox)

crossChannelNormalizationLayer (Deep Learning Toolbox)

 

instanceNormalizationLayer (Deep Learning Toolbox)

layerNormalizationLayer (Deep Learning Toolbox)

groupNormalizationLayer (Deep Learning Toolbox)

inverseNormalizationLayer (Deep Learning Toolbox)

实用工具层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

crop2dLayer (Deep Learning Toolbox)

dropoutLayer (Deep Learning Toolbox)

reshapeLayer (Deep Learning Toolbox)

 

scalingLayer (Deep Learning Toolbox)

spatialDropoutLayer (Deep Learning Toolbox)

调整层大小

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

resize2dLayer (Image Processing Toolbox)

池化和去池化层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

adaptiveAveragePooling2dLayer (Deep Learning Toolbox)

averagePooling1dLayer (Deep Learning Toolbox)

 

averagePooling2dLayer (Deep Learning Toolbox)

globalAveragePooling1dLayer (Deep Learning Toolbox)

 

globalAveragePooling2dLayer (Deep Learning Toolbox)

globalMaxPooling1dLayer (Deep Learning Toolbox)

 

globalMaxPooling2dLayer (Deep Learning Toolbox)

maxPooling1dLayer (Deep Learning Toolbox)

 

maxPooling2dLayer (Deep Learning Toolbox)

maxUnpooling2dLayer (Deep Learning Toolbox)

 

注意

maxUnpooling2dLayer 不支持 ARM Compute Library。

组合层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

additionLayer (Deep Learning Toolbox)

concatenationLayer (Deep Learning Toolbox)

depthConcatenationLayer (Deep Learning Toolbox)

multiplicationLayer (Deep Learning Toolbox)

变换器层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

AttentionLayer (Deep Learning Toolbox)

 

embeddingConcatenationLayer (Deep Learning Toolbox)

 

indexing1dLayer (Deep Learning Toolbox)

 

patchEmbeddingLayer (Computer Vision Toolbox)

 

PositionEmbeddingLayer (Deep Learning Toolbox)

 

selfAttentionLayer (Deep Learning Toolbox)

 

embeddingLayer (Deep Learning Toolbox)

 

计算机视觉和图像处理层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

depthToSpace2dLayer (Image Processing Toolbox)

patchEmbeddingLayer (Computer Vision Toolbox)

 

spaceToDepthLayer (Image Processing Toolbox)

ssdMergeLayer (Computer Vision Toolbox)

resize2dLayer (Image Processing Toolbox)

yolov2TransformLayer (Computer Vision Toolbox)

信号变换层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

cwtLayer (Wavelet Toolbox) (自 R2026a 起)

 

icwtLayer (Wavelet Toolbox) (自 R2026a 起)

 

istftLayer (Signal Processing Toolbox) (自 R2025a 起)

 

modwtLayer (Wavelet Toolbox) (自 R2025a 起)

 

stftLayer (Signal Processing Toolbox) (自 R2025a 起)

 

自定义层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

Custom layers

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

请参阅:

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

  • 仅通用 C/C++ 代码生成支持串行网络中的自定义层。

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

  • 如果满足以下条件,则可以将 dlarray 传递给自定义层:

    • 自定义层位于 dlnetwork 中。

    • 自定义层位于 DAG 或串行网络中,并且要么从 nnet.layer.Formattable 继承,要么没有反向传播。

  • 对于不受支持的 dlarray 方法,您必须从 dlarray 中提取基础数据,执行计算并将数据重新构造为 dlarray 以便生成代码。例如,

    function Z = predict(layer, X)
    
    if coder.target('MATLAB')
       Z = doPredict(X);
    else
       if isdlarray(X)
          X1 = extractdata(X);
          Z1 = doPredict(X1);
          Z = dlarray(Z1);
      else
          Z = doPredict(X);
      end
    end
    
    end
    

Custom Output Layer (Deep Learning Toolbox)

  • 一个输出层,其中包含由 nnet.layer.ClassificationLayer 或 nnet.layer.RegressionLayer 函数创建的自定义分类或回归输出层。

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

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

自定义 Keras 层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

nnet.keras.layer.ClipLayer (Deep Learning Toolbox)

nnet.keras.layer.FlattenCStyleLayer (Deep Learning Toolbox)

nnet.keras.layer.GlobalAveragePooling2dLayer (Deep Learning Toolbox)

nnet.keras.layer.PreluLayer (Deep Learning Toolbox)

nnet.keras.layer.SigmoidLayer (Deep Learning Toolbox)

nnet.keras.layer.TanhLayer (Deep Learning Toolbox)

nnet.keras.layer.TimeDistributedFlattenCStyleLayer (Deep Learning Toolbox)

nnet.keras.layer.ZeroPadding2dLayer (Deep Learning Toolbox)

自定义 ONNX 层

层通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

nnet.onnx.layer.ClipLayer (Deep Learning Toolbox)

nnet.onnx.layer.ElementwiseAffineLayer (Deep Learning Toolbox)

nnet.onnx.layer.FlattenInto2dLayer (Deep Learning Toolbox)

nnet.onnx.layer.FlattenLayer (Deep Learning Toolbox)

nnet.onnx.layer.GlobalAveragePooling2dLayer (Deep Learning Toolbox)

nnet.onnx.layer.IdentityLayer (Deep Learning Toolbox)

nnet.onnx.layer.PreluLayer (Deep Learning Toolbox)

nnet.onnx.layer.SigmoidLayer (Deep Learning Toolbox)

nnet.onnx.layer.TanhLayer (Deep Learning Toolbox)

nnet.onnx.layer.VerifyBatchSizeLayer (Deep Learning Toolbox)

支持的类

类

通用 C/C++

Intel MKL-DNN 和

ARM Compute Library

dlnetwork (Deep Learning Toolbox)

DAGNetwork (Deep Learning Toolbox)

pointPillarsObjectDetector (Point Cloud Toolbox)

SeriesNetwork (Deep Learning Toolbox)

ssdObjectDetector (Computer Vision Toolbox)

yolov2ObjectDetector (Computer Vision Toolbox)

 

yolov3ObjectDetector (Computer Vision Toolbox)

yolov4ObjectDetector (Computer Vision Toolbox)

yoloxObjectDetector

peopleDetector (Computer Vision Toolbox) (自 R2025a 起)

 

另请参阅

(Deep Learning Toolbox) |

主题