主要内容

analyzeNetworkForCodegen

分析深度学习网络以进行代码生成

自 R2022b 起

    说明

    result = analyzeNetworkForCodegen(net) 分析深度学习网络 net 以进行代码生成,并报告网络和层的兼容性问题。网络必须为 dlnetworkSeriesNetworkDAGNetwork 对象。默认情况下,该函数根据一组默认 CPU 和 GPU 深度学习库目标进行验证。

    ___ = analyzeNetworkForCodegen(___,Name,Value) 通过使用由一个或多个 Name,Value 对组参量指定的选项,分析深度学习网络 net 以进行代码生成。

    示例

    示例

    全部折叠

    此示例说明如何使用 analyzeNetworkForCodegen 函数检查 MobileNet-v2 网络的代码生成兼容性。

    您可以使用 analyzeNetworkForCodegen 函数来确定以各种 CPU 和 GPU 深度学习库为目标时的网络和层兼容性问题。

    下载 MobileNet-v2 支持包

    此示例使用通过 Deep Learning Toolbox™ Model for MobileNet-v2 Network 支持包提供的 MobileNet-v2 的预训练版本。

    MobileNet-v2 是深度为 53 层的卷积神经网络。该网络的预训练版本是基于 ImageNet 数据库中的超过一百万个图像进行训练的。预训练网络的图像输入大小为 224×224,它可以将图像分类至 1000 个目标类别(例如键盘、鼠标、铅笔和多种动物)。

    mobilenetv2 = imagePretrainedNetwork('mobilenetv2')
    mobilenetv2 = 
      dlnetwork with properties:
    
             Layers: [153×1 nnet.cnn.layer.Layer]
        Connections: [162×2 table]
         Learnables: [210×3 table]
              State: [104×3 table]
         InputNames: {'input_1'}
        OutputNames: {'Logits_softmax'}
        Initialized: 1
    
      View summary with summary.
    
    

    如果未安装 Deep Learning Toolbox Model for MobileNet-v2 Network 支持包,该函数将在附加功能资源管理器中提供所需支持包的链接。要安装支持包,请点击链接,然后点击安装

    分析用于代码生成的网络

    运行 analyzeNetworkForCodegen 函数以分析 mobilenetv2,并指定要分析的目标库。analyzeNetworkForCodegen 函数需要 MATLAB® Coder™ Interface for Deep LearningGPU Coder™ Interface for Deep Learning 支持包。要安装所需的支持包,请使用附加功能资源管理器。

    targetLibraries = ["none","cudnn","tensorrt","mkldnn","arm-compute",...
        "arm-compute-mali","cmsis-nn"];
    S = analyzeNetworkForCodegen(mobilenetv2,TargetLibrary  = targetLibraries);
                            Supported                                                                                   LayerDiagnostics                                                                                
                            _________    _______________________________________________________________________________________________________________________________________________________________________________
    
        none                  "Yes"      ""                                                                                                                                                                             
        cudnn                 "Yes"      ""                                                                                                                                                                             
        tensorrt              "Yes"      ""                                                                                                                                                                             
        mkldnn                "Yes"      ""                                                                                                                                                                             
        arm-compute           "Yes"      ""                                                                                                                                                                             
        arm-compute-mali      "Yes"      ""                                                                                                                                                                             
        cmsis-nn              "No"       "Found 6 unsupported layer types. View incompatible layer types."
    

    要访问 CMSIS-NN 目标的分析结果,请使用以下命令。

    disp(S(7))
                 TargetLibrary: 'cmsis-nn'
                     Supported: 0
            NetworkDiagnostics: [0×0 table]
              LayerDiagnostics: [150×3 table]
        IncompatibleLayerTypes: [6×1 string]
    

    显示 CMSIS-NN 代码生成不支持的层类型。

    S(7).IncompatibleLayerTypes
    ans = 6×1 string
        "AdditionLayer"
        "BatchNormalizationLayer"
        "ClippedReLULayer"
        "Convolution2DLayer"
        "GlobalAveragePooling2DLayer"
        "GroupedConvolution2DLayer"
    
    

    输入参数

    全部折叠

    要针对代码生成进行分析的网络。网络可以是 dlnetworkSeriesNetworkDAGNetwork 对象,用于自定义训练循环或自定义剪枝循环。

    名称-值参数

    全部折叠

    将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

    示例: resultStruct = analyzeNetworkForCodegen(imagePretrainedNetwork("mobilenetv2"), TargetLibrary = ["none", "mkldnn"]);

    深度学习代码生成的目标库,指定为下表中的值之一。

    描述
    "none"

    用于生成不使用任何第三方库的代码。

    "arm-compute"

    用于生成使用 ARM® Compute Library 的代码。

    "mkldnn"

    用于生成使用 Intel® Math Kernel Library for Deep Neural Networks (Intel MKL-DNN) 的代码。

    "cmsis-nn"

    通用微控制器软件接口标准 - 神经网络 (CMSIS-NN) 库。

    需要 MATLAB® Coder™ Interface for Deep Learning

    "cudnn"

    用于生成使用 CUDA® 深度神经网络库 (cuDNN) 的代码。

    此选项需要 GPU Coder™。

    "tensorrt"

    用于生成使用 NVIDIA® TensorRT(高性能深度学习推断优化器和运行时库)的代码。

    此选项需要 GPU Coder。

    用于隐藏报告显示的标量 boolean 值。默认情况下,该函数以详尽模式显示分析结果。

    输出参量

    全部折叠

    检查深度学习网络的代码生成兼容性的结果,以 1×N 结构体形式返回,其中 N 是要检查的目标库的数量。

    版本历史记录

    在 R2022b 中推出

    另请参阅

    函数