使用GPU编码器™, 您可以为Simulink生成优化的代码万博1manbetx®包含各种经过训练的深度学习网络的模型。您可以通过使用在Simulink中实现深度学习功能万博1manbetxMATLAB函数块或使用深神经网络图书馆深神经网络块库包括:
预测(深度学习工具箱)块-使用通过块参数指定的训练网络预测响应。此块允许从MAT文件或MATLAB将预训练网络加载到Simulink模型中万博1manbetx®功能。
有关使用的详细信息,请参见预测布洛克,见基于深度学习的Simulink车道和车辆检测万博1manbetx(深度学习工具箱).
图像分类器(深度学习工具箱)块-使用通过块参数指定的经过训练的深度学习神经网络对数据进行分类。该块允许从MAT文件或MATLAB函数将预训练网络加载到Simulink模型中。万博1manbetx
有关使用的详细信息,请参见图像分类器布洛克,见基于深度学习的Simulink心电信号分类万博1manbetx(深度学习工具箱).
您可以配置代码生成器以利用英伟达®库达®深度神经网络库(cuDNN)和TensorRT™ 用于NVIDIA GPU的高性能推理库。生成的代码通过使用网络对象中指定的体系结构、层和参数来实现深度卷积神经网络(CNN)。
GoogLeNet接受过超过一百万张图像的训练,可以将图像分为1000个对象类别(如键盘、咖啡杯、铅笔和动物)。该网络将图像作为输入,然后输出图像中对象的标签以及每个对象类别的概率。此示例演示如何执行模拟并为预训练对象生成CUDA代码水壶
深度卷积神经网络和图像分类。预训练网络作为支持包从深度学习工具箱中提供™.万博1manbetx
加载预训练的GoogLeNet网络。
净=googlenet;
对象网
包含达格网络
对象使用分析网络
功能用于显示网络体系结构的交互式可视化,检测网络中的错误和问题,并显示有关网络层的详细信息。层信息包括层激活和可学习参数的大小、可学习参数的总数以及状态参数的大小f复发层。
分析网络;
要分类的图像的大小必须与网络的输入大小相同。对于GoogLeNet,网络的大小为图像输入层
是224乘224乘3班级
输出的属性分类层
包含由网络学习的类的名称。查看总共1000个类名中的10个随机类名。
classNames=net.Layers(end).Classes;numClasses=numel(类名);disp(类名(randperm(numclass,10)))
“快艇”“屏风”“等足动物”“木勺”“口红”“德雷克”“鬣狗”“哑铃”“草莓”“奶油冻苹果”
创建Simulin万博1manbetxk模型并插入预测挡深神经网络图书馆。
添加文件中的图像挡计算机视觉工具箱™库并设置文件名
参数到peppers.png
.添加A.调整大小挡计算机视觉工具箱模型的库。设定具体说明参数调整大小阻止输出行和列数
并进入[224 224]
作为价值输出行和列数。调整大小块将输入图像的大小调整为网络输入层的大小。添加工作空间,并将变量名更改为伊普雷德
.
打开块参数(子系统)的预测块挑选来自MATLAB功能的网络
对于网络和水壶对于MATLAB函数.
连接这些块,如图所示。保存模型googlenetModel.slx
.
模型配置参数决定了仿真过程中使用的加速方法。
打开“配置参数”对话框。打开求解器窗格。要编译加速模型并生成CUDA代码,请将模型配置为使用固定步长解算器。此表显示了此示例的解算器配置。
参数 | 环境 | 对生成代码的影响 |
---|---|---|
类型 | 固定步长 |
保持代码生成所需的恒定(固定)步长 |
求解器 | 离散(没有连续的状态) |
应用固定步长积分技术计算模型的状态导数 |
固定步长 | 汽车 |
万博1manbetxSimulink选择步长 |
选择仿真目标窗格。设定语言到C++
.
挑选GPU加速。特定于GPU编码器的选项现在在模拟目标>GPU加速窗格。对于此示例,您可以使用这些参数的默认值。
上仿真目标窗格中,设置目标库在里面深度学习小组到cuDNN
. 您还可以选择坦索特
.
点击好的保存并关闭“配置参数”对话框。
你可以用设置参数
在MATLAB命令窗口中以编程方式配置模型参数。
set_param(“googlenetModel”,“GPU加速”,“开”);
要构建和模拟GPU加速模型,请选择跑上模拟选项卡或使用以下命令:
out=sim(“googlenetModel”);
软件首先检查CUDA/C++代码之前是否为您的模型编译过。如果代码是先前创建的,则软件将运行模型。如果之前没有生成代码,软件首先生成并编译CUDA/C++代码,然后运行模型。代码生成工具将生成的代码放在名为slprj/_slprj/googlenetModel
.
显示前五个预测标签及其相关概率作为直方图。由于网络将图像分类为如此多的对象类别,并且许多类别相似,所以在评估网络时通常考虑前五的准确度。
im=imread(“peppers.png”); 预测分数=out.yPred.Data(:,:,1);[分数,indx]=排序(预测分数,“下降”); 上核=分数(1:5);classNamesTop=classNames(indx(1:5))h=figure;h、 位置(3)=2*h.位置(3);ax1=子批次(1,2,1);ax2=子批次(1,2,2);图像(ax1,im);barh(ax2,上部岩心)xlabel(ax2,“概率”)YTicklabels(AX2,ClassNamestop(5:-1:1))AX2.YAXISLOCATION ='对'; sgtitle(“使用谷歌网预测的前五名”)
模型配置参数为代码生成和构建过程提供了许多选项。
在“配置参数”对话框中,选择代码生成窗格。设定系统目标文件到grt.tlc.
.
您也可以使用嵌入式编码器®目标文件ert.tlc
.
设定语言到C++
.
挑选生成GPU代码.
挑选仅生成代码.
选择工具链. 对于Linux®平台,选择NVIDIA CUDA | gmake(64位Linux)
.适用于Windows®系统,选择NVIDIA CUDA(W / Microsoft Visual C ++ 20xx)|nmake(64位窗口)
.
上代码生成>报告窗格中,选择创建代码生成报告和自动打开报表.
上代码生成>接口窗格中,设置目标库在里面深度学习小组到cuDNN
. 您还可以选择坦索特
.
特定于GPU编码器的选项在代码> GPU代码对于本例,您可以在中使用GPU特定参数的默认值代码> GPU代码窗格。
点击好的保存并关闭“配置参数”对话框。
你也可以使用设置参数
在MATLAB命令窗口中以编程方式配置模型参数。
set_param(“googlenetModel”,“GenerateGPUCode”,'CUDA');
在Simuli万博1manbetxnk编辑器中,打开万博1manbetxSimulink编码器应用程序。
生成代码。
消息显示在诊断查看器中。代码生成器生成CUDA源文件和头文件,以及HTML代码生成报告。代码生成器将文件放置在生成文件夹,一个名为googlenetmodel_grt_rtw
在当前工作文件夹下。
Simulink不支持为具有自定义层的深度学习网络生成代码。万博1manbetx万博1manbetx
图形处理器的代码生成MATLAB函数状态流中的块®不支持图表。万博1manbetx
代码生成器不支持来自MATLAB语言的所有数据类型。万博1manbetx对于支持万博1manbetx的数据类型,请参阅块文档。
bdclose
(万博1manbetxSimulink)|封闭系统
(万博1manbetxSimulink)|获取参数
(万博1manbetxSimulink)|加载系统
(万博1manbetxSimulink)|开放式系统
(万博1manbetxSimulink)|保存系统
(万博1manbetxSimulink)|设置参数
(万博1manbetxSimulink)|模拟
(万博1manbetxSimulink)|slbuild
(万博1manbetxSimulink)