主要内容

针对深度学习网络目标的代码生成手臂马里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(深度学习工具箱)功能,用于显示网络体系结构的交互式可视化,检测网络中的错误和问题,并显示有关网络层的详细信息。层信息包括层激活和可学习参数的大小,可学习参数的总数,循环层状态参数的大小。

    analyzeNetwork(净);

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

    classNames = net.Layers(end).Classes;numClasses = numel(classNames);disp(类名(randperm (numClasses 10)))
    公鸡蜂房肥皂分配器titi汽车车轮guenon口木耳七叶树巨石

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

使用代码生成cnncodegen

要使用ARM计算库生成代码,请使用targetlib选项cnncodegen命令。的cnncodegen命令生成c++代码SeriesNetworkDAGNetwork网络对象。

  1. 调用cnncodegen“targetlib”指定为“arm-compute-mali”.例如:

    Net = googlenet;cnncodegen(净,“targetlib”“arm-compute-mali”“batchsize”1);

    “arm-compute-mali”的值。batchsize必须1

    “targetparams”允许你为ARM计算库指定特定于库的参数的名称-值对参数在针对ARM Mali gpu时不适用。

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

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

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

生成的代码

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

cnn_exec.hpp文件

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

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

  • cnn_exec.cpp属性的对象函数的定义CnnMain类。

网络中有参数的层导出二进制文件,如全连接层和卷积层。例如,文件cnn_CnnMain_Conv * _w而且cnn_CnnMain_Conv * _b的权重和偏置参数对应卷积网络中的层。代码生成器将这些二进制文件放在codegen文件夹中。代码生成器构建库文件cnnbuild并将所有生成的文件放在codegen文件夹中。

限制

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

另请参阅

功能

相关的话题