主要内容

深度学习网络定位的代码生成手臂马里gpu

使用GPU Coder™,您可以从deep learning Toolbox™生成用于预测各种训练过的深度学习网络的优化代码。生成的代码通过使用您在输入中指定的体系结构、层和参数来实现深度卷积神经网络(CNN)SeriesNetwork(深度学习工具箱)或者DAGNetwork(深度学习工具箱)对象。代码生成器利用了ARM®计算库用于计算机视觉和机器学习。为了在ARM Mali GPU目标上执行深度学习,您将在主机开发计算机上生成代码。然后,构建和运行可执行程序将生成的代码移动到ARM目标平台。例如,Hikey960是可以执行生成的代码的目标平台之一。

要求

  1. 深度学习工具。

  2. MobileNet-V2网络支持包的深度学习工具箱模型。金宝app

  3. 用于深度学习库的GPU编码器接口金宝app支持包。要安装支持包,请从MATLAB金宝app中选择支持包®附加组件菜单。

  4. 手臂计算库对于计算机视觉和机器学习,必须安装在目标硬件上。有关有关编译器和库的支持版本的信息,请参阅金宝app安装必备产品下载188bet金宝搏

  5. 编译器和库的环境变量。有关更多信息,请参阅环境变量

负载净化网络

  1. 加载预制MobileNet-V2网络。您可以选择加载不同的预制网络以进行图像分类。如果未安装所需的支持软件包,则该软件提供了一个下载链接。金宝app

    net = mobilenetv2;

  2. 的对象包含了DAGNetwork对象。使用分析(深度学习工具箱)功能要显示网络架构的交互式可视化,以检测网络中的错误和问题,并显示有关网络层的详细信息。图层信息包括层激活和学习参数的大小,学习参数的总数,以及经常性层的状态参数的大小。

    analyzeNetwork(净);

  3. 您要分类的图像必须具有与网络的输入大小相同的大小。对于googlenet,大小imageInputLayer(深度学习工具箱)是224 - 224 - 3。的输出属性classificationLayer(深度学习工具箱)包含通过网络学习的类的名称。查看1000个随机类名中的10个。

    ClassNames = Net.Layers(END).Classes;numclasses = numel(classnames);DISP(CLASSNMES(RANDPERM(NUMCLASES,10)))
    公鸡蜂房皂液机titi汽车车轮长鼻口木耳七叶树巨石

    有关更多信息,请参阅深度学习层列表(深度学习工具箱)

使用代码生成cnncodegen.

要使用ARM计算库生成代码,请使用targetlib选择的cnncodegen.命令。的cnncodegen.命令为此生成C ++代码SeriesNetwork或者DAGNetwork网络对象。

  1. 调用cnncodegen.'targetlib'指定为'ARM-Compute-Mali'。例如:

    net = googlenet;cnncodegen(网,'targetlib','ARM-Compute-Mali','批量化',1);

    'ARM-Compute-Mali'的价值Batchsize.一定是1

    “targetparams”名称 - 值对参数使您可以指定ARM计算库的图书馆特定参数,而不是在目标ARM Mali GPU时适用。

  2. cnncodegen.命令生成代码,makefile,cnnbuild_rtw.mk,以及其他支持文件,以在金宝app目标硬件上构建生成的代码。该命令将生成的所有文件放在codegen文件夹中。

  3. 编写一个c++主函数来调用预测。有关与生成代码接口的主文件示例,请参见基于ARM Mali GPU的深度学习预测

  4. 将生成的codegen文件夹和其他文件从主机开发计算机到ARM硬件,使用首选的安全文件复制(SCP)和安全Shell (SSH)客户端。在目标上构建可执行程序。

生成的代码

DAG网络被生成为C ++类(cnnmain)包含103个层类的数组。该代码生成器通过层层融合优化卷积和批处理归一化层来减少层数。的类声明的片段cnn_exec.hpp文件显示。

cnn_exec.hpp文件

  • 设置()方法为网络对象的每一层设置句柄并分配内存。

  • 预测()方法对网络中的103层中的每一层调用预测。

  • cnn_exec.cpp对象的对象函数的定义cnnmain类。

二进制文件被导出为具有参数的层,如网络中的全连接层和卷积层。例如,文件cnn_cnnmain_conv * _wcnn_cnmain_conv * _b.对应于权重和偏置参数卷积的网络中的图层。代码生成器将这些二进制文件放在其中codegen文件夹中。代码生成器生成库文件cnnbuild并放置所有生成的文件codegen文件夹中。

限制

  • 2-D分组的卷积层不支持ARM Mali GPU的代码生成金宝appNumGroups属性设置为“channel-wise”或者大于2的值。

另请参阅

功能

相关话题