使用GPU编码器™,您可以为Simulink生成优化的代码金宝app®包含各种训练过的深度学习网络的模型。您可以通过使用Simulink实现深度学习功能金宝appMATLAB函数块或通过使用块深层神经网络图书馆。这深层神经网络块库包括:
预测(深度学习工具箱)block -使用通过block参数指定的训练网络预测响应。该模块允许从mat文件或MATLAB加载预先训练的网络到Simulink模型金宝app®功能。
有关与之合作的更多信息预测块,看看基于深度学习的Simulink车道和车辆检测金宝app(深度学习工具箱).
图像分类器(深度学习工具箱)块-使用经过训练的深度学习神经网络通过块参数对数据进行分类。该模块允许从mat文件或MATLAB函数加载预先训练的网络到Simulink模型。金宝app
有关与之合作的更多信息图像分类器块,看看使用深度学习对Simulink中的ECG信号进行金宝app分类(深度学习工具箱).
您可以配置代码生成器以利用NVIDIA®CUDA.®深神经网络库(CUDNN)和NVIDIA GPU的Tensorrt™高性能推理库。生成的代码通过使用网络对象中指定的架构,图层和参数来实现深卷积神经网络(CNN)。
Googlenet已接受过超过一百万个图像的培训,并可将图像分类为1000个对象类别(例如键盘,咖啡杯,铅笔和动物)。该网络将图像拍摄为输入,然后用每个对象类别的概率输出图像中的对象的标签。此示例显示了如何执行仿真并为预折叠生成CUDA代码googlenet
深度卷积神经网络并分类图像。佩带的网络可作为来自Deep Learning Toolbox™的支持包。金宝app
加载预先训练好的GoogLeNet网络。
net = googlenet;
物体净
包含Dagnetwork.
对象。使用analyzeNetwork
显示网络架构的交互式可视化,检测网络中的错误和问题,并显示关于网络层的详细信息。层信息包括层激活和可学习参数的大小,可学习参数的总数,循环层的状态参数的大小。
分析(网);
您想要分类的图像必须与网络的输入大小相同。对于GoogLeNet来说,它的大小imageInputlayer.
是224×224-by-3。这班级
输出的财产分类层
包含网络所学习的类的名称。从1000个随机类名中查看10个。
一会= net.Layers . class(结束);numClasses =元素个数(类名);disp(类名(randperm (numClasses 10)))
“快艇”“纱窗”“等足动物”“木勺”“口红”“德雷克”“鬣狗”“哑铃”“草莓”“奶油苹果”
创建Simulin金宝appk模型并插入一个预测街区来自深层神经网络图书馆。
加一个图片来自文件街区来自计算机视觉工具箱™图书馆并设置文件名称
参数到Peppers.png.
.添加A.调整街区来自电脑视觉工具箱图书馆到模型。设定指定参数的调整块到输出行数和列数
并输入(224 224)
作为输出行数和列数.调整大小块将输入图像的大小调整为网络的输入层的大小。添加A.到工作空间到模型并将变量名更改为yPred
.
打开块参数(子系统)的预测块。选择网络从MATLAB函数
为了网络和googlenet为了MATLAB函数.
如图所示连接这些块。将模型保存为googlenetmodel.slx.
.
模型配置参数确定模拟过程中使用的加速度方法。
打开配置参数对话框。打开解算器窗格。要编译你的模型加速和生成CUDA代码,配置模型使用固定步长求解器。该表显示了本示例的求解器配置。
范围 | 设置 | 对生成代码的影响 |
---|---|---|
类型 | 固定步骤 |
维护一个常量(固定的)步长,这是代码生成所需要的 |
解算器 | 离散(无连续状态) |
应用一个固定步骤集成技术来计算模型的状态衍生 |
固定的大小 | 汽车 |
金宝appsimulink选择阶梯大小 |
选择模拟目标窗格。设定语到C ++
.
选择GPU加速.GPU编码器特定的选项现在可见仿真目标> GPU加速度窗格。对于本例,可以使用这些参数的默认值。
在这一点模拟目标窗格,设置目标库在深度学习集团cuDNN
.您也可以选择张力
.
点击好吧保存并关闭“配置参数”对话框。
您可以使用set_param
在MATLAB命令窗口中以编程方式配置模型参数。
set_param (“googlenetModel”那'gpuacceleration'那'在');
要构建和模拟GPU加速模型,请选择跑步在模拟选项卡或使用命令:
出= SIM(“googlenetModel”);
软件首先检查CUDA/ c++代码之前是否为你的模型编译过。如果代码是先前创建的,则软件运行模型。如果之前没有构建代码,软件首先生成并编译CUDA/ c++代码,然后运行模型。代码生成工具将生成的代码放在名为slprj / _slprj / googlenetModel
.
以直方图的形式显示前5个预测标签及其相关的概率。由于网络将图像分类为如此多的对象类别,而且许多类别是相似的,因此在评估网络时,通常会考虑前五名的精度。该网络将图像分类为一个高概率的甜椒。
Im = imread(“peppers.png”);predict_coves = out.ypred.data(:,:1);[得分,Indx] =排序(预测_coves,“下”);topScores =分数(1:5);h = index (index, index, index, index, index, index);h.Position (3) = 2 * h.Position (3);ax₁=情节(1、2、1);ax2 =情节(1、2、2);图像(ax₁,im);barh (ax2 topScores)包含(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位windows)
.
在这一点代码>报告窗格,选择创建代码生成报告和自动打开报告.
在这一点代码>界面窗格,设置目标库在深度学习集团cuDNN
.您也可以选择张力
.
GPU编码器特定的选项在代码生成> GPU代码窗格。在本例中,可以使用默认值的gpu相关参数代码生成> GPU代码窗格。
点击好吧保存并关闭“配置参数”对话框。
你也可以使用set_param
在MATLAB命令窗口中以编程方式配置模型参数。
set_param (“googlenetModel”那“GenerateGPUCode”那CUDA的);
在Simuli金宝appnk编辑器中,打开金宝app仿真软件编码器应用程序。
生成的代码。
消息出现在诊断查看器中。代码生成器会产生CUDA源和头文件和HTML代码生成报告。代码生成器将文件放在一个中建立文件夹,子文件夹名为googlenetModel_grt_rtw
在当前工作文件夹下。
在Simulink中不支持基于自定义层的深度学习网络的代码生成。金宝app金宝app
图形处理器代码生成MATLAB函数eventflow中的块®不支持图表。金宝app
代码生成器不支持来自MATLAB语言的所有数据类型。金宝app有关受支金宝app持的数据类型,请参阅块文档。
bdclose.
(金宝appSimulink)|close_system
(金宝appSimulink)|get_param.
(金宝appSimulink)|load_system
(金宝appSimulink)|Open_System.
(金宝appSimulink)|save_system
(金宝appSimulink)|set_param
(金宝appSimulink)|SIM
(金宝appSimulink)|SLBUILD.
(金宝appSimulink)