深度学习

理解和使用深度学习网络

将TensorFlow模型引入MATLAB

下面是一篇从Shounak Mitra产品经理深度学习工具箱,在这里谈论TensorFlow和MATLAB的实用方法。

在释放R2021a,一个转换器TensorFlow模型作为一个支持包发布支持TensorF金宝applow 2模型导入深度学习工具箱。在这个博客中,我们将探索方法可以使用转换器TensorFlow模型和执行以下操作:

  1. 可视化和分析网络
  2. 生成C / c++ / CUDA代码
  3. 集成网络模型金宝app

将模型训练TensorFlow 2为MATLAB,您可以使用函数importTensorFlowNetwork,这使您能够将模型及其权重导入MATLAB。(注意:您还可以使用importTensorFlowLayers从TensorFlow进口层)。

> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
看到一个更细节的文章如何将TensorFlow模型中引入MATLAB,请查看相关的文章在引进TensorFlow(和其他)网络
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >

相关文章:从TensorFlow进口模型,PyTorch ONNX
这篇文章的其余部分将重点放在与TensorFlow模型你能做什么他们是引入MATLAB。

图1:TensorFlow模型导入MATLAB后常见的工作流

1。可视化和分析网络

了解网络,我们将使用深层网络设计师应用可视化网络架构。加载应用程序,类型deepNetworkDesigner命令行和负载网络从工作区。一旦导入到应用程序,网络如图4所示。层架构包含skip-connections ResNet就是很典型的一种架构。在这个阶段可以使用这个网络转移学习工作流。看看这个视频,学习如何交互式修改转移学习深入学习网络。你也可以点击分析应用按钮(图4 b)和调查活动的大小,看看网络错误不正确的张量的形状,错误的连接等。

图4:ResNet50架构内部深层网络设计师应用

图4 b:分析导入的错误和可视化网络体系结构中的关键部件——对于resnet50跳过连接。点击大图。

2。生成C / c++ / CUDA代码

最常见的一种路径客户导入模型生成代码后,针对不同的硬件平台。

在这个例子中,我们将生成CUDA代码,使用GPU编码器简单的3步,针对cuDNN库。

第一步:验证GPU的环境

这个执行一个完整的检查所有的第三方工具所需的GPU代码生成。这是代表所示的输出。您的结果可能有所不同。

envCfg = coder.gpuEnvConfig('主机');envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

图5:验证GPU的环境,以确保所有必要的库是可用的

第二步:定义入口点函数

resnet50_predict.m入口点函数接受一个图像输入和运行使用进口ResNet50模型预测图像。函数使用一个持久对象mynet加载系列网络对象和重用的持久对象预测在随后的电话。

函数= resnet50_predict ()% # codegen持久mynet;如果isempty (mynet) mynet = coder.loadDeepLearningNetwork (“resnet50.mat”、“净”);结束%通过输入= mynet.predict(的);

步骤3:墨西哥人运行代码生成

调用的入口点函数,针对cudnn生成c++代码库

生成CUDA代码resnet50_predict.m入口点函数,创建一个GPU代码配置对象为一个墨西哥人的目标和目标语言设置为c++。使用coder.DeepLearningConfig函数创建一个CuDNN深度学习配置对象,并将其分配给DeepLearningConfig GPU代码配置对象的属性。运行codegen命令并指定一个输入(224224 3)的大小。这个值对应的输入层大小ResNet50网络。

运行的墨西哥人
cfg = coder.gpuConfig(墨西哥人);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“cudnn”);codegen配置cfg resnet50_predict args(224224 3)}{的报告

GPU程序员创建一个代码生成报告,提供了一个接口检查原始的MATLAB代码和生成的CUDA代码。报告还提供了一个方便的交互代码跟踪工具MATLAB代码和CUDA之间的映射。图6显示了一个屏幕截图工具的行动。

图6:生成的代码生成的报告。单击查看细节。

在这个例子中,我们针对cuDNN库。你也可以目标英特尔和ARM的cpu使用MATLAB编码器使用fpga和soc深度学习HDL工具箱

3所示。集成网络模型金宝app

通常,深度学习模型是作为更大的系统的一个组件。金宝app仿真软件建模有助于探索广阔的设计空间的被测系统和物理工厂,你可以使用一个多域环境模拟系统的所有部分的行为。在本节中,我们将看到如何从TensorFlow进口resnet50模型可以集成到模型。金宝app

我们将该模型与仿真软件集成在3个简单的步骤。金宝app但首先,保存Resnet50模型在MATLAB的目录。使用保存(“resnet50.mat”、“净”)这样做。

第一步:打开模型和访问库浏金宝app览器

  • 打开模型(金宝app类型金宝app在命令窗口),选择“空白模型”

  • 单击库浏览器

步骤2:添加仿真软件模块金宝app

  • 添加一个图像从文件块计算机视觉的工具箱图书馆和peppers.png文件名参数设置。这是样品图片我们将使用resnet50模型在仿真软件进行分类。金宝app

  • 预处理图像:我们需要添加一些预处理线,以确保网络得到了预期的形象。在仿真软件编写MATLAB代码,我们将使用MAT金宝appLAB功能块。点击任何地方在仿真软件上画布和类型从选项列表金宝app中,选择MATLAB函数。在MATLAB功能块内部,我们将添加几行翻转图像通道和调整图像的。

    函数y = preprocess_img (img) img =翻转(img, 3);img = imresize (img, 224年[224]);y = img;结束
  • 添加ResNet50模型:导航到深度学习工具箱- - >深层神经网络模型库浏览器和“预测”块拖放到画布上的仿真软件模型。金宝app

    双击打开的预测块块的参数对话并选择“网络从MAT-file”的选项网络下拉菜单如图所示。导航到你的位置保存resnet50模型和打开它。点击好吧一旦你完成了。

图7:内置的深度学习模块可用于预测和分类

  • 添加一个输出预测分数:接下来,点击任何地方在你的模型帆布和类型金宝app输出并选择第一个选项

图8

  • 连接块到目前为止您已经创建了。一旦完成,它应该类似于下面的图。

图9

第三步:运行仿真

一旦模拟运行成功,你绝对应该测试如果仿真输出正确预测甜椒形象。以下是所做的预测输出的模拟图像。

图10

这是一个简单的示例演示如何你一个简单的模型与仿真软件集成,但更大的系统复杂得多。金宝app让我们使用一个算法使用一个自主车后巷。有很多组件,使这个应用程序成功:对象检测、传感器融合,加速控制、制动,相当多的更多(参见图11)。深入学习算法代表一个(但非常重要)更大的系统的组件。用于检测车道和汽车,和深度学习系统需要更大的系统中工作。下面是一个图形表示的系统执行高速公路车道。在图11中,只有“视觉探测器”是深入学习网络和其他组件在系统中执行其他任务,比如控制和传感器融合后巷。

我们没有讨论太多关于高速公路车道下面的例子,但如果你有兴趣,这是链接到文档的例子

图11:系统显示一个典型的植物看起来就像为构建一个更大的系统,许多组件相互作用

结论

在这个博客中我们学会了如何合作AI生态系统处理TensorFlow和MATLAB使用转换器TensorFlow模型。我们看到的方式可以提高TensorFlow工作流通过将一个模型训练TensorFlow通过转换器和MATLAB分析,可视化模拟,生成代码的网络。

接下来是什么

在接下来的博客,我们将着眼于进口国autogenerate自定义层的能力为运营商和不支持层,转换成一个内置的层由MATLAB的深度学习工具。金宝app

我们想看到你使用TensorFlow模型转换器和听到你的理由是什么从TensorFlow MATLAB引入模型。

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。