代码生成支持的网络和层 -凯发官方首页

main content

代码生成支持的网络和层

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

支持的预训练网络

代码生成支持 deep learning toolbox™ 中提供的以下预训练网络。

网络名称描述arm® compute libraryintel® mkl-dnn
alexnet

alexnet 卷积神经网络。关于预训练的 alexnet 模型,请参阅 (deep learning toolbox)。

是是
darknetdarknet-19 和 darknet-53 卷积神经网络。对于预训练的 darknet 模型,请参阅 (deep learning toolbox) 和 (deep learning toolbox)。是是
densenet-201

densenet-201 卷积神经网络。对于预训练的 densenet-201 模型,请参阅 (deep learning toolbox)。

是是
efficientnet-b0

efficientnet-b0 卷积神经网络。关于预训练的 efficientnet-b0 模型,请参阅 (deep learning toolbox)。

是是
googlenet

googlenet 卷积神经网络。关于预训练的 googlenet 模型,请参阅 (deep learning toolbox)。

是是
inception-resnet-v2

inception-resnet-v2 卷积神经网络。有关预训练的 inception-resnet-v2 模型,请参阅 (deep learning toolbox)。

是是
inception-v3inception-v3 卷积神经网络。有关预训练的 inception-v3 模型,请参阅 (deep learning toolbox)。是是
mobilenet-v2

mobilenet-v2 卷积神经网络。有关预训练的 mobilenet-v2 模型,请参阅 (deep learning toolbox)。

是是
nasnet-large

nasnet-large 卷积神经网络。有关预训练的 nasnet-large 模型,请参阅 (deep learning toolbox)。

是是
nasnet-mobile

nasnet-mobile 卷积神经网络。有关预训练的 nasnet-mobile 模型,请参阅 (deep learning toolbox)。

是是
resnet

resnet-18、resnet-50 和 resnet-101 卷积神经网络。对于预训练的 resnet 模型,请参阅 (deep learning toolbox)、 (deep learning toolbox) 和 (deep learning toolbox)。

是是
segnet

多类像素级分割网络。有关详细信息,请参阅 (computer vision toolbox)。

否是
squeezenet

小型深度神经网络。有关预训练的 sqeezenet 模型,请参阅 (deep learning toolbox)。

是是
vgg-16

vgg-16 卷积神经网络。有关预训练的 vgg-16 模型,请参阅 (deep learning toolbox)。

是是
vgg-19

vgg-19 卷积神经网络。有关预训练的 vgg-19 模型,请参阅 (deep learning toolbox)。

是是
xception

xception 卷积神经网络。有关预训练的 xception 模型,请参阅 (deep learning toolbox)。

是是

支持的层

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

在安装支持包 matlab coder interface for deep learning libraries 后,您可以使用 查看网络是否兼容特定深度学习库的代码生成。例如:

result = analyzenetworkforcodegen(mobilenetv2,targetlibrary = 'mkldnn')

注意

从 r2022b 开始,请使用 函数检查深度学习网络的代码生成兼容性。不推荐使用 coder.getdeeplearninglayers。

层名称描述arm compute libraryintel mkl-dnn泛型 c/c
(deep learning toolbox)

相加层

是是是
(computer vision toolbox)

锚框层

是是

是

(deep learning toolbox)

平均池化层

是是

是

(deep learning toolbox)

批量归一化层

是是是
(deep learning toolbox)双向 lstm 层是是是
(deep learning toolbox)

创建分类输出层

是是是
(deep learning toolbox)

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

是是是
(deep learning toolbox)

串联层

是是是
(deep learning toolbox)

二维卷积层

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

是

是

是
(deep learning toolbox)

对输入应用二维裁剪的层

是是否
(deep learning toolbox)

逐通道局部响应归一化层

是是否

自定义层

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

请参阅:

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

仅泛型 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

是

是

是

仅泛型 c/c 代码生成支持串行网络中的自定义层。

自定义输出层

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

有关如何定义自定义分类输出层和指定损失函数的示例,请参阅 (deep learning toolbox)。

有关如何定义自定义回归输出层和指定损失函数的示例,请参阅 (deep learning toolbox)。

是

是

是
(deep learning toolbox)

深度串联层

是

是

是

(image processing toolbox)二维深度到空间层是是是
(computer vision toolbox)

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

是是否
(deep learning toolbox)

丢弃层

是是是
(deep learning toolbox)

指数线性单元 (elu) 层

是是是
(deep learning toolbox)

特征输入层

是是是
(deep learning toolbox)

扁平化层

是是

是

(computer vision toolbox)焦点损失层使用焦点损失预测对象类。是是

是

fullyconnectedlayer (deep learning toolbox)

全连接层

是是是
(deep learning toolbox)

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

是

是

是

(deep learning toolbox)

二维全局最大池化层

是是

是

(deep learning toolbox)

二维分组卷积层

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

是

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

是

否

(deep learning toolbox)

组归一化层

是

是

是

(deep learning toolbox)

门控循环单元 (gru) 层

是

是

是
(deep learning toolbox)

图像输入层

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

是是是
(deep learning toolbox)

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

是是是
(deep learning toolbox)

长短期记忆 (lstm) 层

是是是
(deep learning toolbox)

lstm 投影层

否否是
(deep learning toolbox)

最大池化层

如果在核窗口的非对角线上存在相等的最大值,则 maxpooling2dlayer 的实现差异可能导致 matlab 和生成的代码之间出现轻微的数值不匹配。此问题还导致每个池化区域中最大值的索引不匹配。有关详细信息,请参阅 (deep learning toolbox)。

是是是
(deep learning toolbox)

最大去池化层

如果在核窗口的非对角线上存在相等的最大值,则 maxpooling2dlayer 的实现差异可能导致 matlab 和生成的代码之间出现轻微的数值不匹配。此问题还导致每个池化区域中最大值的索引不匹配。有关详细信息,请参阅 (deep learning toolbox)。

否是否
(deep learning toolbox)

乘法层

是是是
(computer vision toolbox)

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

是是否
(computer vision toolbox)

fast 和 faster r-cnn 的框回归层

是是

是

(computer vision toolbox)

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

是是否
(deep learning toolbox)

创建回归输出层

是是是
(deep learning toolbox)

修正线性单元 (relu) 层

是是是
(image processing toolbox)二维调整大小层是是是
(reinforcement learning toolbox)执行器或评价器网络的缩放层是是是
(deep learning toolbox)sigmoid 层是是是
(deep learning toolbox)序列折叠层是是否
(deep learning toolbox)

序列输入层

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

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

是是是
(deep learning toolbox)序列展开层是是否
(deep learning toolbox)

softmax 层

是

是

是
(reinforcement learning toolbox)

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

是是是
(image processing toolbox)

空间到深度层

是是否
(computer vision toolbox)

用于目标检测的 ssd 合并层

是是

是

(deep learning toolbox)

swish 层

是是是

nnet.keras.layer.cliplayer

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

是是是

nnet.keras.layer.flattencstylelayer

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

是

是

是
nnet.keras.layer.globalaveragepooling2dlayer

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

是

是

是

nnet.keras.layer.prelulayer

参数化修正线性单元

是是是

nnet.keras.layer.sigmoidlayer

sigmoid 激活层

是

是

是

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 二维图像批量,从而生成 cb 格式的二维输出数组

是是是

nnet.onnx.layer.flattenlayer

onnx™ 网络的扁平化层

是

是

是

nnet.onnx.layer.globalaveragepooling2dlayer

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

是是是

nnet.onnx.layer.identitylayer

实现 onnx 恒等运算符的层

是

是

是

nnet.onnx.layer.prelulayer

参数化修正线性单元

是是是

nnet.onnx.layer.sigmoidlayer

sigmoid 激活层

是是是

nnet.onnx.layer.tanhlayer

双曲正切激活层

是是是

nnet.onnx.layer.verifybatchsizelayer

验证固定批量大小

是是是

(deep learning toolbox)

双曲正切 (tanh) 层

是

是

是

(deep learning toolbox)

转置二维卷积层

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

是

是

否

(text analytics toolbox)

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

是

是

否

(computer vision toolbox)

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

是

是

否

(computer vision toolbox)

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

是

是

否

(computer vision toolbox)

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

是

是

否

支持的类

类

描述

arm compute library

intel mkl-dnn

泛型 c/c

(deep learning toolbox)

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

  • 仅支持 activations、predict 和 classify 方法。

是

是

是

(deep learning toolbox)

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

  • 代码生成仅支持 inputnames 和 outputnames 属性。

  • dlnetwork 对象的 initialized 属性必须设置为 true。

  • 您可以为具有向量或图像序列输入的 dlnetwork 生成代码。对于 arm compute,dlnetwork 可以有序列输入层和非序列输入层。对于 intel mkl-dnn,输入层必须全部为序列输入层。代码生成支持包括:

    • 包含具有 'ct' 或 'cbt' 数据格式的向量序列的 dlarray。

    • 包含具有 'ssct' 或 'sscbt' 数据格式的图像序列的 dlarray。

    • 具有异构输入层的多输入 dlnetwork。对于 rnn 网络,不支持多个输入。

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

  • 代码生成支持 mimo dlnetworks。

  • 要创建用于代码生成的 dlnetwork 对象,请参阅。

是

是

是

(deep learning toolbox)

用于深度学习的串行网络

  • 仅支持 activations、classify、predict、predictandupdatestate、classifyandupdatestate 和 resetstate 对象函数。

是

是

是

(computer vision toolbox)

使用 yolo v2 目标检测器检测目标

  • 代码生成仅支持 yolov2objectdetector 的 (computer vision toolbox) 方法。

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

  • 仅支持 detect 的 threshold、selectstrongest、minsize 和 maxsize 名称-值对组。

是

是

否

(computer vision toolbox)

使用 yolo v3 目标检测器检测目标

  • 代码生成仅支持 yolov3objectdetector 的 (computer vision toolbox) 方法。

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

  • 仅支持 detect 的 threshold、selectstrongest、minsize 和 maxsize 名称-值对组。

是

是

是

(computer vision toolbox)

使用 yolo v4 目标检测器检测目标

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

  • 仅支持 detect 的 threshold、selectstrongest、minsize、maxsize 和 minibatchsize 名称-值对组。

是

是

是

(computer vision toolbox)

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

  • 代码生成仅支持 ssdobjectdetector 的 (computer vision toolbox) 方法。

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

  • 仅支持 threshold、selectstrongest、minsize、maxsize 和 minibatchsize 名称-值对组。所有名称-值对组都必须为编译时常量。

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

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

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

是

是

是

pointpillarsobjectdetector (lidar toolbox)

用于检测激光雷达点云中的目标的 pointpillars 网络

  • 代码生成仅支持 pointpillarsobjectdetector 的 detect 方法。

  • 仅支持 detect 方法的 threshold、selectstrongest 和 minibatchsize 名称-值对组。

是

是

否

int8 代码生成

您可以将 deep learning toolbox 与 deep learning toolbox 模型量化库支持包结合使用,通过将卷积层的权重、偏置和激活量化为 8 位定标整数数据类型来减少深度神经网络的内存占用。然后,您可以使用 matlab coder 来生成网络的优化代码。请参阅。

另请参阅

相关主题

网站地图