代码生成支持的网络和层
matlab® coder™ 支持序列、有向无环图 (dag) 和循环卷积神经网络(cnn 或 convnet)的代码生成。您可以为任何经过训练的卷积神经网络生成代码,其层支持代码生成。请参阅支持的层。
支持的预训练网络
代码生成支持 deep learning toolbox™ 中提供的以下预训练网络。
网络名称 | 描述 | arm® compute library | intel® mkl-dnn |
---|---|---|---|
alexnet | alexnet 卷积神经网络。关于预训练的 alexnet 模型,请参阅 (deep learning toolbox)。 | 是 | 是 |
darknet | darknet-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-v3 | inception-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 library | intel 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) | 二维卷积层
| 是 | 是 | 是 |
(deep learning toolbox) | 对输入应用二维裁剪的层 | 是 | 是 | 否 |
(deep learning toolbox) | 逐通道局部响应归一化层 | 是 | 是 | 否 |
自定义层 | 为您的问题定义的自定义层,具有或不具有可学习参数。 请参阅:
自定义层的输出必须为固定大小数组。 仅泛型 c/c 代码生成支持串行网络中的自定义层。 对于代码生成,自定义层必须包含 如果满足以下条件,则可以将
对于不受支持的 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 代码生成支持串行网络中的自定义层。 |
自定义输出层 | 所有输出层,包括通过使用 有关如何定义自定义分类输出层和指定损失函数的示例,请参阅 (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) | 二维分组卷积层
| 是
| 是 | 否 |
(deep learning toolbox) | 组归一化层 | 是 | 是 | 是 |
(deep learning toolbox) | 门控循环单元 (gru) 层 | 是 | 是 | 是 |
(deep learning toolbox) | 图像输入层
| 是 | 是 | 是 |
(deep learning toolbox) | 泄漏修正线性单元 (relu) 层 | 是 | 是 | 是 |
(deep learning toolbox) | 长短期记忆 (lstm) 层 | 是 | 是 | 是 |
(deep learning toolbox) | lstm 投影层 | 否 | 否 | 是 |
(deep learning toolbox) | 最大池化层 如果在核窗口的非对角线上存在相等的最大值,则 | 是 | 是 | 是 |
(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) | 序列输入层
| 是 | 是 | 是 |
(deep learning toolbox) | 序列展开层 | 是 | 是 | 否 |
(deep learning toolbox) | softmax 层 | 是 | 是 | 是 |
(reinforcement learning toolbox) | 执行器或评价器网络的 softplus 层 | 是 | 是 | 是 |
(image processing toolbox) | 空间到深度层 | 是 | 是 | 否 |
(computer vision toolbox) | 用于目标检测的 ssd 合并层 | 是 | 是 | 是 |
(deep learning toolbox) | swish 层 | 是 | 是 | 是 |
| 在上界和下界之间裁剪输入 | 是 | 是 | 是 |
| 按 c 样式(行优先)顺序,将激活值扁平化为一维 | 是 | 是 | 是 |
nnet.keras.layer.globalaveragepooling2dlayer | 空间数据的全局平均池化层 | 是 | 是 | 是 |
| 参数化修正线性单元 | 是 | 是 | 是 |
| sigmoid 激活层 | 是 | 是 | 是 |
| 双曲正切激活层 | 是 | 是 | 是 |
| 按输入层的 c 样式(即行优先)存储顺序,将输入图像序列扁平化为向量序列 | 是 | 是 | 是 |
| 二维输入的零填充层 | 是 | 是 | 是 |
| 在上界和下界之间裁剪输入 | 是 | 是 | 是 |
nnet.onnx.layer.elementwiseaffinelayer | 对输入按元素进行缩放后再相加的层 | 是 | 是 | 是 |
| 以 onnx 方式扁平化 matlab 二维图像批量,从而生成 | 是 | 是 | 是 |
| onnx™ 网络的扁平化层 | 是 | 是 | 是 |
| 空间数据的全局平均池化层 | 是 | 是 | 是 |
| 实现 onnx 恒等运算符的层 | 是 | 是 | 是 |
| 参数化修正线性单元 | 是 | 是 | 是 |
| sigmoid 激活层 | 是 | 是 | 是 |
| 双曲正切激活层 | 是 | 是 | 是 |
| 验证固定批量大小 | 是 | 是 | 是 |
(deep learning toolbox) | 双曲正切 (tanh) 层 | 是 | 是 | 是 |
(deep learning toolbox) | 转置二维卷积层 代码生成不支持输入的不对称裁剪。例如,不支持为 | 是 | 是 | 否 |
(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) 网络
| 是 | 是 | 是 |
(deep learning toolbox) | 用于自定义训练循环的深度学习网络
| 是 | 是 | 是 |
(deep learning toolbox) | 用于深度学习的串行网络
| 是 | 是 | 是 |
(computer vision toolbox) | 使用 yolo v2 目标检测器检测目标
| 是 | 是 | 否 |
(computer vision toolbox) | 使用 yolo v3 目标检测器检测目标
| 是 | 是 | 是 |
(computer vision toolbox) | 使用 yolo v4 目标检测器检测目标
| 是 | 是 | 是 |
(computer vision toolbox) | 使用基于 ssd 的检测器来检测目标的对象。
| 是 | 是 | 是 |
| 用于检测激光雷达点云中的目标的 pointpillars 网络
| 是 | 是 | 否 |
int8
代码生成
您可以将 deep learning toolbox 与 deep learning toolbox 模型量化库支持包结合使用,通过将卷积层的权重、偏置和激活量化为 8 位定标整数数据类型来减少深度神经网络的内存占用。然后,您可以使用 matlab coder 来生成网络的优化代码。请参阅。
另请参阅
相关主题
- 预训练的深度神经网络 (deep learning toolbox)
- (deep learning toolbox)