主要内容

块的GPU代码生成深层神经网络库

与GPU编码器™,您可以生成模型的优化代码金宝app®模型包含各种各样的训练有素的深度学习网络。你可以在仿真软件实现深度学习功能使用金宝appMATLAB函数阻塞或使用的深层神经网络从深度学习工具箱™或计算机视觉工具箱>分析和提高从计算机视觉库工具箱™。

GPU编码器支持以下金宝app深学习模块:

这些库块使pretrained网络加载到MAT-file或MATLAB仿真软件模型金宝app®函数。

您可以配置代码生成器NVIDIA的利用®CUDA®深层神经网络库(cuDNN)和TensorRT™高性能NVIDIA gpu的推理库。生成的代码实现了深卷积神经网络(CNN)通过使用体系结构中,层,参数指定网络中的对象。

例如:通过使用GoogLeNet分类图像

GoogLeNet已经在超过一百万个图像和训练可以分类图像到1000年对象类别(如键盘、咖啡杯、铅笔和动物)。网络需要一个图像作为输入,然后输出一个标签图像中的对象的概率为每个对象的类别。这个例子展示了如何执行模拟和生成pretrained CUDA代码googlenet深卷积神经网络和图像进行分类。pretrained网络可用从深度学习工具箱支持包。金宝app

  1. 加载pretrained GoogLeNet网络。

    网= googlenet;

  2. 的对象包含了DAGNetwork对象。使用analyzeNetwork函数显示一个交互式可视化的网络架构,来检测网络中的错误和问题,并显示详细信息网络层。层信息包括层激活的大小和可学的参数,可学的参数的总数,复发性层的状态参数的大小。

    analyzeNetwork(净);

    分析网络应用程序显示GoogLeNet网络分析。

  3. 你要分类的图像必须有相同的大小作为输入网络的大小。GoogLeNet的大小imageInputLayer是224 - 224 - 3。的输出的属性classificationLayer包含类的名称由网络学习。10个随机类名的共有1000人。

    一会= net.Layers . class(结束);numClasses =元素个数(类名);disp(类名(randperm (numClasses 10)))
    “快艇”“纱窗”“等足类动物”“木匙”“口红”“德雷克”“土狼”“哑铃”“草莓”“奶油苹果”

创建GoogLeNet模型

  1. 创建一个仿真软件模金宝app型和插入预测块的深层神经网络图书馆。

  2. 添加一个图像文件块的计算机视觉的工具箱图书馆和设置文件名称参数peppers.png。添加一个调整块的计算机视觉的工具箱对模型库。设置指定参数的调整输出行和列的数量并输入(224 224)的价值输出行和列的数量。调整块调整输入图像,网络的输入层。添加一个到工作空间模型和变化的变量名yPred

    金宝app使用GoogLeNet仿真软件模型包含块分类图像。

  3. 打开块参数(子系统)预测块。选择网络从MATLAB函数网络googlenetMATLAB函数

  4. 连接这些块如图表所示。保存模型googlenetModel.slx

    金宝app仿真软件模型显示模块之间的连接。

为GPU加速配置模型

模型配置参数决定加速度方法在模拟。

  1. 打开配置参数对话框。打开解算器窗格。编制加速度模型并生成CUDA代码,配置模型使用一个固定的解决者。此表显示了这个示例的解算器配置。

    参数 设置 影响生成的代码
    类型 固定步 保持一个常数(固定)步长,所需的代码生成
    解算器 离散(没有连续状态) 适用于固定的集成技术,计算模型的状态导数
    固定的大小 汽车 金宝app模型选择步长

    快照的配置参数对话框显示为仿真解算器选项。

  2. 选择模拟目标窗格。设置语言c++

  3. 选择GPU加速。选择特定的GPU编码器现在可见的模拟目标> GPU加速窗格。对于这个示例,您可以使用这些参数的默认值。

    GPU加速面板模型的配置参数对话框。

  4. 模拟目标窗格中,设置目标库深度学习集团cuDNN。您也可以选择TensorRT

    快照的配置参数对话框显示深度学习选择模拟加速度。

  5. 点击好吧保存并关闭配置参数对话框。

    您可以使用set_param配置模型参数以编程方式在MATLAB命令窗口。

    set_param (“googlenetModel”,“GPUAcceleration”,“上”);

构建GPU加速的模型

  1. 构建和模拟GPU加速模型,选择运行模拟选项卡或使用命令:

    = sim卡(“googlenetModel”);

    软件首先检查是否CUDA / c++代码以前编译您的模型。如果以前创建的代码,运行的软件模型。如果代码没有之前构建,首先生成和编译的软件CUDA / c++代码,然后运行模型。代码生成工具生成的代码在一个地方工作文件夹的子文件夹slprj / _slprj / googlenetModel

  2. 显示五大标签及其相关预测概率直方图。因为网络将图像分为很多对象类别,和许多类别相似,通常考虑五大精度在评估网络。网络分类甜椒和高概率的形象。

    我= imread (“peppers.png”);predict_scores = out.yPred.Data (:: 1);[分数,indx] =排序(predict_scores“下”);topScores =分数(1:5);classNamesTop =一会(indx (1:5)) h =图;h.Position (3) = 2 * h.Position (3);ax₁=情节(1、2、1);ax2 =情节(1、2、2);图像(ax₁, im);barh (ax2 topScores(1、5: 1:1, 1))包含(ax2,“概率”)yticklabels (ax2 classNamesTop (5: 1:1)) ax2。YAxisLocation =“对”;sgtitle (“五大预测使用GoogLeNet”)

为代码生成配置模型

模型配置参数提供许多选项的代码生成和构建过程。

  1. 在配置参数对话框中,选择代码生成窗格。设置系统目标文件grt.tlc

    您还可以使用嵌入式编码器®目标文件ert.tlc或一个自定义的系统目标文件。

    GPU代码生成,必须基于自定义目标文件grt.tlcert.tlc。开发一个定制的目标文件的更多信息,请参阅定制系统的目标文件(金宝app仿真软件编码器)

  2. 设置语言c++

  3. 选择生成GPU的代码

  4. 选择只生成代码

  5. 选择工具链。Linux®平台,选择NVIDIA CUDA | gmake(64位Linux)。对于Windows®系统,选择NVIDIA CUDA (w / Microsoft Visual c++ 20 xx) | nmake(64位windows)

    当使用一个自定义目标文件系统,您必须设置构建工具链的控制方法。更多地了解工具链的方法定制目标,明白了金宝app支持工具链方法使用自定义的目标(金宝app仿真软件编码器)

  6. 代码生成报告>窗格中,选择创建代码生成报告自动打开报告

  7. 代码生成>界面窗格中,设置目标库深度学习集团cuDNN。您也可以选择TensorRT

  8. 特定于GPU编码器的选择代码生成> GPU的代码窗格。对于这个示例,您可以使用GPU-specific参数的默认值代码生成> GPU的代码窗格。

    GPU代码面板模型的配置参数对话框。

  9. 点击好吧保存并关闭配置参数对话框。

    您还可以使用set_param配置模型参数以编程方式在MATLAB命令窗口。

    set_param (“googlenetModel”,“GenerateGPUCode”,CUDA的);

生成CUDA的代码模型

  1. 在模型编辑器中金宝app打开金宝app仿真软件编码器应用程序。

  2. 生成的代码。

消息出现在诊断查看器。代码生成器产生源CUDA和头文件,和一个HTML代码生成报告。代码生成器的文件在一个地方建立文件夹,一个子文件夹命名googlenetModel_grt_rtw在你当前的工作目录。

限制

  • GPU的代码生成MATLAB函数块Stateflow®不支持图表。金宝app

  • 代码生成器不支持的所有数据类型从MATLAB语言。金宝app支持的数金宝app据类型,参考文档。

  • GPU代码生成,必须基于自定义目标文件grt.tlcert.tlc

  • 部署生成的代码,建议使用主程序生成一个例子选项来生成ert_main.cu模块。这个选项需要嵌入式编码器许可证。

    您还可以使用rt_cppclass_main.cpp静态MathWorks提供的主模块®。然而,静态主文件必须修改,这样的模型类构造函数指向深层学习对象。例如,

    静态googlenetModelModelClass: DeepLearning_googlenetModel_T googlenetModel_DeepLearning;静态googlenetModelModelClass googlenetModel_Obj {&googlenetModel_DeepLearning};

另请参阅

功能

相关的话题