使用GPU编码器™,您可以为Simulink生成优化的代码金宝app®包含各种培训的深度学习网络的模型。您可以使用Simulink实现深度学习功能金宝appMatlab功能的块或使用深神经网络图书馆。的深神经网络块库包括:
预测(深度学习工具箱)块 - 使用通过块参数指定的培训网络预测响应。该块可以从MAT文件或来自MATLAB中加载备用网络中的预磨平网络金宝app®函数。
有关使用的更多信息预测块,看使用深度学习的Simulink车道和车辆检测金宝app(深度学习工具箱).
图像分类器(深度学习工具箱)块 - 使用通过块参数指定的培训的深度学习神经网络对数据进行分类。该块可以从MAT文件或来自MATLAB函数加载普试预先灌注的网络。金宝app
有关使用的更多信息图像分类器块,看在Simulink中使用深度学习对心电信号进行分金宝app类(深度学习工具箱).
您可以配置代码生成器以利用NVIDIA®CUDA®深度神经网络库(CUDNN)和NVIDIA GPU的TensorRT™高性能推理库。生成的代码通过使用网络对象中指定的体系结构,图层和参数实现深度卷积神经网络(CNN)。
GoogLeNet已经训练了超过100万张图片,并可以将图片分类为1000个对象类别(如键盘、咖啡杯、铅笔和动物)。该网络以一幅图像作为输入,然后输出图像中对象的标签,其中包含每个对象类别的概率。这个例子展示了如何执行仿真和生成CUDA代码的预训练googlenet.
深度卷积神经网络和分类图像。预先训练的网络可作为支持包从深度学习工具箱™获得。金宝app
加载预制googlenet网络。
网= googlenet;
的对象网
包含了DAGNetwork
目的。使用分析
功能要显示网络架构的交互式可视化,以检测网络中的错误和问题,并显示有关网络层的详细信息。图层信息包括层激活和学习参数的大小,学习参数的总数,以及经常性层的状态参数的大小。
analyzeNetwork(净);
您要对的图像必须具有与网络的输入大小相同的大小。对于googlenet,大小imageInputLayer
是224 - 224 - 3。的类
输出属性classificationLayer
包含网络学习的类的名称。查看总计1000的10个随机类名。
ClassNames = Net.Layers(END).classes;numclasses = numel(classnames);DISP(ClassNames(Randperm(Numcrasses,10))))
'Speedboat''窗口屏幕''Isopod''木勺''唇膏''''''''''鬣狗'''哑铃''草莓'&ample苹果'
创建一个Simul金宝appink模型并插入一个预测块的深神经网络图书馆。
添加一个图像文件块的计算机Vision Toolbox™库,并设置文档名称
参数peppers.png
.添加一个调整大小块的计算机视觉的工具箱库到模型。设置指定参数的调整大小块输出行和列数
并进入[224 224]
作为价值输出行和列数.resize块将输入图像调整为网络输入层的图像。添加一个到工作区,并将变量名更改为ypred.
.
打开块参数(子系统)的预测堵塞。选择来自MATLAB功能的网络
为网络和googlenet.为Matlab功能.
连接这些块,如图所示。保存模型googlenetModel.slx
.
模型配置参数确定模拟过程中使用的加速度方法。
打开“配置参数”对话框。打开求解器窗格。要编译适用于加速并生成CUDA代码的模型,请配置模型以使用固定步骤求解器。此表显示了此示例的求解器配置。
参数 | 环境 | 对生成代码的影响 |
---|---|---|
类型 | 固定步 |
维护常数(固定)步长,这是代码生成所必需的 |
求解器 | 离散(没有连续的状态) |
应用定步积分技术计算模型的状态导数 |
固定步长 | 汽车 |
金宝appSimulink选择步长 |
选择仿真目标窗格。设置语来C ++
.
选择GPU加速.特定于GPU编码器的选项现在可以在模拟目标> GPU加速窗格。对于此示例,您可以使用这些参数的默认值。
在仿真目标窗格中,设置目标库在里面深度学习小组到CUDNN.
.你也可以选择TensorRT
.
点击好的要保存并关闭“配置参数”对话框。
您可以使用set_param.
以编程方式在MATLAB命令窗口中以编程方式配置模型参数。
set_param('googlenetmodel','gpuacceleration',“上”);
要构建和模拟GPU加速模型,请选择运行在这方面模拟TAB或使用命令:
= sim卡('googlenetmodel');
该软件首先检查以查看CUDA / C ++代码是否已为您的模型编译。如果以前创建的代码,则软件运行模型。如果先前未构建代码,则软件首先生成并编译CUDA / C ++代码,然后运行模型。代码生成工具将生成的代码放在名为的工作文件夹的子文件夹中slprj / _slprj / googlenetmodel
.
显示前五个预测标签及其相关概率作为直方图。由于网络将图像分类为如此多的对象类别,并且许多类别相似,因此很难考虑评估网络时的前五个精度。该网络将图像分类为具有高概率的甜椒。
我= imread ('peppers.png');predict_scores = out.yPred.Data (:: 1);[分数,indx] =排序(predict_scores“下降”);topscores =得分(1:5);ClassNamestop = ClassNames(Indx(1:5))H =图;H.Position(3)= 2 * H.Position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);图像(AX1,IM);Barh(AX2,TopScores)XLabel(AX2,'可能性')YTicklabels(AX2,ClassNamestop(5:-1:1))Ax2.YaxisLocation ='对';sgtitle (“使用GoogLeNet的5大预测”)
模型配置参数为代码生成和构建过程提供了许多选项。
在“配置参数”对话框中,选择代码生成窗格。设置系统目标文件来GRT.TLC.
.
您还可以使用嵌入式编码器®目标文件ert.tlc
.
设置语来C ++
.
选择生成GPU代码.
选择只生成代码.
选择工具链.Linux®平台,选择nvidia cuda |gmake(64位Linux)
.对于Windows®系统,选择NVIDIA CUDA(W / Microsoft Visual C ++ 20xx)|nmake(64位窗口)
.
在代码生成>报告窗格中,选择创建代码生成报告和自动打开报告.
在代码生成>接口窗格中,设置目标库在里面深度学习小组到CUDNN.
.你也可以选择TensorRT
.
特定于GPU编码器的选项在代码> GPU代码窗格。对于此示例,您可以使用GPU的默认值代码> GPU代码窗格。
点击好的要保存并关闭“配置参数”对话框。
你也可以用set_param.
以编程方式在MATLAB命令窗口中以编程方式配置模型参数。
set_param('googlenetmodel','世代pucode','CUDA');
在Simuli金宝appnk编辑器中,打开金宝appSimulink编码器应用程序。
生成代码。
消息将出现在诊断查看器中。代码生成器生成CUDA源文件和头文件,以及HTML代码生成报告。代码生成器将文件放在构建文件夹,一个名为的子文件夹googlenetmodel_grt_rtw
在您当前的工作文件夹下。
Simulink不支持具有自定义图层的深度学习网络的代码。金宝app金宝app
GPU代码生成Matlab功能块Stateflow®不支持图表。金宝app
代码生成器不支持来自MATLAB语言的所有数据类型。金宝app对于支持金宝app的数据类型,请参阅块文档。
要部署生成的代码,建议使用它生成示例主程序选择生成的选项ert_main.cu.
模块。此选项需要Embedded Coder许可证。
你也可以用theRT_CPPCLASS_MAIN.cpp.
MathWorks提供的静态主模块®.但是,必须修改静态主文件,使模型类构造函数指向深度学习对象。例如,
静态googlenetModelModelClass: DeepLearning_googlenetModel_T googlenetModel_DeepLearning;静态googlenetModelModelClass googlenetModel_Obj{&googlenetModel_DeepLearning};
open_system
(金宝app模型)|load_system.
(金宝app模型)|save_system.
(金宝app模型)|close_system.
(金宝app模型)|bdclose
(金宝app模型)|get_param
(金宝app模型)|set_param.
(金宝app模型)|SIM
(金宝app模型)|SLBUILD.
(金宝app模型)