随着GPU编码器™,您可以生成各种从深度学习工具箱™训练的深度学习网络预测优化代码。生成的代码通过使用体系结构,这些层实现了深卷积神经网络(CNN),并且您在输入参数指定SeriesNetwork
(深学习工具箱)或者DAGNetwork
(深学习工具箱)目的。代码生成取ARM的优势®计算库用于计算机视觉和机器学习。为了在ARM Mali GPU目标上执行深度学习,您将在主机开发计算机上生成代码。然后,构建和运行可执行程序将生成的代码移动到ARM目标平台。例如,Hikey960是可以执行生成的代码的目标平台之一。
深度学习工具箱。
MobileNet-V2网络支持包的深度学习工具箱模型。万博1manbetx
GPU编码器接口深度学习图书馆万博1manbetx支持包。要安装支持包,从MATLAB中万博1manbetx选择支持包®附加组件菜单。
手臂计算库对于计算机视觉和机器学习,必须安装在目标硬件上。有关有关编译器和库的支持版本的信息,请参阅万博1manbetx安装必备产品s manbetx 845。
编译器和库的环境变量。有关更多信息,请参阅环境变量。
加载预制MobileNet-V2网络。您可以选择加载不同的预制网络以进行图像分类。如果未安装所需的支持软件包,则该软件提供了一个下载链接。万博1manbetx
net = mobilenetv2;
物体网
包含DAGNetwork
目的。使用分析
(深学习工具箱)功能要显示网络架构的交互式可视化,以检测网络中的错误和问题,并显示有关网络层的详细信息。图层信息包括层激活和学习参数的大小,学习参数的总数,以及经常性层的状态参数的大小。
analyzeNetwork(净值);
您要分类的图像必须具有与网络的输入大小相同的大小。对于googlenet,大小imageInputLayer
(深学习工具箱)是224-通过-224×3。这班级
输出特性classificationLayer
(深学习工具箱)包含网络上了解到的类的名称。查看10名随机类名在总共1000。
ClassNames = Net.Layers(END).Classes;numclasses = numel(classnames);DISP(CLASSNMES(RANDPERM(NUMCLASES,10)))
公鸡蜂房皂液器蒂蒂车轮长尾枪口木耳七叶树巨石
有关更多信息,请参阅深度学习图层列表(深学习工具箱)。
cnncodegen.
为了生成与ARM计算库代码,使用targetlib
的选择cnncodegen.
命令。这cnncodegen.
命令为此生成C ++代码SeriesNetwork
或者DAGNetwork
网络对象。
称呼cnncodegen.
和'targetlib'
指定为'ARM-Compute-Mali'
。例如:
net = googlenet;cnncodegen(网,'targetlib'那'ARM-Compute-Mali'那'批量化',1);
为了'ARM-Compute-Mali'
, 的价值Batchsize.
必须是1
。
这'targetparams'
名称 - 值对参数使您可以指定ARM计算库的图书馆特定参数,而不是在目标ARM Mali GPU时适用。
这cnncodegen.
命令生成代码,makefile,cnnbuild_rtw.mk
和其他支持文件的基础上在万博1manbetx目标硬件生成的代码。该命令将所有在生成的文件代码生成
文件夹。
写C ++的主要功能是通话预测
。对于示例主文件与所生成的代码的接口,见ARM的GPU马里深度学习预测
移动产生代码生成
文件夹,并使用您的首选安全文件复制(SCP)从主机开发计算机的ARM硬件的其他文件和Secure Shell(SSH)客户端。建立目标上的可执行程序。
DAG网络被生成为C ++类(cnnmain
)含有103个类的数组。发生器减少层的数量的代码是通过卷积和批标准化层的层融合优化。类声明的一个片段,从cnn_exec.hpp
文件显示。
这设置()
类设置手柄和分配存储器,用于所述网络对象的每一层的方法。
这预测()
方法调用预测为每个网络中的103层。
这cnn_exec.cpp
文件包含了目标函数的定义cnnmain
班级。
二进制文件导出用于层用参数,例如网络中的完全连接和卷积层。例如,文件cnn_cnnmain_conv * _w
和cnn_cnmain_conv * _b.
对应于权重和偏置参数卷积的
网络中的图层。代码生成器将这些二进制文件放在其中代码生成
文件夹。代码生成器生成库文件cnnbuild
并放置所有生成的文件代码生成
文件夹。
2-D分组的卷积层不支持ARM Mali GPU的代码生成万博1manbetxNumGroups
属性设置为“信道逐”
或一个值大于2。