主要内容

之间的互操作性深度学习工具箱,TensorFlow,PyTorch,ONNX

这个主题提供了一个概述的深度学习工具箱™导入和导出功能,描述了常见的深度学习工作流程,在MATLAB可以执行®与导入网络从TensorFlow™, PyTorch®,或者ONNX™。关于如何克服障碍的更多信息导入网络时,看到的建议从TensorFlow进口模型,PyTorch ONNX

许多pretrained网络中可用深度学习工具。有关更多信息,请参见Pretrained深层神经网络。然而,MATLAB并不孤立的深度学习生态系统。使用导入和导出函数访问模型中可用的开源库,与同事协作工作在其他深度学习框架。

万博1manbetx支持包的互操作性

你必须有相关的支持包运行深度学习工具箱导入和导出功能。万博1manbetx如果支持包没有万博1manbetx安装,每个函数提供一个下载链接到对应的包在扩展浏览器的支持。推荐的做法是下载支持包的默认位置的MATLAB版本运行。万博1manbetx你也可以直接从文件交换下载包的支持。万博1manbetx

此表列出了深度学习工具箱支持包进出口文件交换链接,每个功能包提供的支持。万博1manbetx

通过使用ONNX作为中间格式,您可以与其他深度学习互操作框架,支持ONNX模型导出或导入。万博1manbetx

请注意

importTensorFlowNetworkimportTensorFlowLayers函数是推荐的importKerasNetworkimportKerasLayers功能。更多细节,请参阅推荐功能导入TensorFlow模型

功能导入深度学习网络

从TensorFlow和ONNX进口网络

外部深度学习平台和导入功能

这个表描述了深度学习平台的深度学习工具箱函数导入模型,模型格式导入。

外部深入学习平台 模型格式 导入模型网络 导入模型层图
TensorFlow 2 SavedModel格式 importTensorFlowNetwork importTensorFlowLayers
TensorFlow-Keras HDF5格式 importKerasNetwork importKerasLayers
PyTorch 跟踪模型文件.pt扩展 importNetworkFromPyTorch 不适用
ONNX ONNX模型格式 importONNXNetwork importONNXLayers

每个导入和导出函数引用页面包含一个限制部分描述了支持版本的外部平台。万博1manbetx例如,对于TensorFlow版本的importTensorFlowNetwork函数支持,看到万博1manbetx限制

返回的对象导入功能

此表描述了深度学习工具箱网络或层图导入函数返回时从TensorFlow进口pretrained模型,PyTorch或ONNX。

您导入一个网络或层图后,返回的对象准备所有的工作流,深度学习工具箱支持。万博1manbetx

自动生成自定义层

importTensorFlowNetwork,importTensorFlowLayers,importNetworkFromPyTorch,importONNXNetwork,importONNXLayers当你导入一个函数创建自动生成自定义层模型TensorFlow层,PyTorch层,或ONNX运营商MATLAB层不能转换为内置函数。函数将自动生成自定义层保存到一个包在当前文件夹。有关更多信息,请参见自动生成自定义层

进口网络可视化

使用情节进口的函数绘制一个图网络或层图。你不能使用情节函数与dlnetwork对象。

网= importTensorFlowNetwork (“digitsNet”);情节(净)

图的进口网络

使用analyzeNetwork函数可视化并了解进口网络或层的架构图,检查您已经定义了结构正确,培训之前发现问题。的问题,analyzeNetwork检测包括失踪或独立层,输入错误尺寸的层,层输入有误,无效的图结构。

网= importTensorFlowNetwork (“NASNetMobile”,OutputLayerType =“分类”、类=类名);analyzeNetwork(净)

分析和可视化的进口网络

与进口模型预测

预处理输入数据

预处理数据是一种常见的深度学习工作流程的第一步准备数据网络可以接受的格式。输入数据的大小必须匹配网络输入的大小。如果大小不匹配,您必须调整输入数据。例如,看到的进口ONNX DAGNetwork网络。在某些情况下,输入数据需要进一步处理,例如正常化。例如,看到的进口ONNX网络自动生成自定义层

你必须进行预处理以同样的方式输入数据作为训练数据。通常,开源库提供的信息所需的输入数据预处理。了解更多关于如何预处理图像和其他类型的数据,看看预处理图像深度学习预处理数据深层神经网络

导入模型DAGNetwork对象和预测

导入TensorFlow模型SavedModel格式。默认情况下,importTensorFlowNetwork网络作为一个进口DAGNetwork对象。指定一个图像分类问题的输出层类型和类名。

网= importTensorFlowNetwork (“NASNetMobile”,OutputLayerType =“分类”、类=类名);

预测图像的标签。

标签=分类(净,Im);

导入模型dlnetwork对象和预测

你必须首先将输入数据转换成一个dlarray对象。对于图像输入数据,指定的数据格式“SSCB”。为更多的信息关于如何指定输入数据格式,看看数据格式与dlnetwork预测

dlIm = dlarray (Im,“SSCB”);

导入TensorFlow模型SavedModel格式为dlnetwork对象。指定类名。一个dlnetwork没有输出层。

网= importTensorFlowNetwork (“NASNetMobile”,类=一会TargetNetwork =“dlnetwork”);

预测图像的标签。

概率=预测(净,dlIm);[~,标签]= max(概率);

请注意

importNetworkFromPyTorch作为一个未初始化的函数导入网络dlnetwork对象。预测之前,添加一个输入层或初始化导入网络。有关示例,请参见从PyTorch并添加进口网络输入层从PyTorch并初始化导入网络

比较预测结果

检查是否TensorFlow进口或ONNX模型匹配网络,您可以通过使用真正的或随机比较推理结果输入到网络。为示例,展示如何比较推理结果,明白了推理比较TensorFlow和进口网络图像分类推理比较ONNX和进口网络图像分类

预测在万博1manbetx

您可以使用网络与进口预测块深度学习工具箱仿真软件对图像进行分类万博1manbetx®。导入的网络可以包含自动生成自定义层。例如,看到的图像分类与进口TensorFlow网络万博1manbetx仿真软件

预测与进口仿真软件模型万博1manbetx

预测在GPU上

导入函数不执行GPU。然而,功能导入pretrained深度学习的神经网络DAGNetworkdlnetwork对象,您可以使用GPU。

  • 如果你导入网络DAGNetwork对象,您可以做出预测与进口网络使用的CPU或GPU分类预测。指定使用的硬件需求ExecutionEnvironment名称-值参数。

    对于多个输出的网络,使用预测功能和指定ReturnCategorical名称-值参数为真正的

  • 如果你导入网络dlnetwork对象,您可以做出预测与进口网络使用的CPU或GPU预测。的预测函数在GPU上执行如果输入数据或网络参数存储在GPU上。

    • 如果你使用minibatchqueue输入数据的处理和管理mini-batches,minibatchqueue对象将输出转换为GPU数组默认情况下如果GPU可用。

    • 使用dlupdate转换的可学的参数dlnetworkGPU数组对象。

      净= dlupdate (@gpuArray,净)

学习与进口网络传输

转移在深度学习学习是普遍应用。您可以使用一个pretrained网络作为起点学习一个新任务。微调网络转移学习通常比训练一个网络快得多,也更容易与随机初始化权重从零开始。您可以快速学习功能转移到一个新的任务使用一个小数量的训练数据。本节描述如何导入一个卷积模型从TensorFlow转移学习。

导入NASNetMobile模型层图并显示其最终层。

lgraph = importTensorFlowLayers (“NASNetMobile”,OutputLayerType =“分类”);lgraph.Layers (end-2:结束)
ans = 3×1层阵列层:1000“预测”完全连接完全连接层2的predictions_softmax Softmax Softmax 3 ClassificationLayer_predictions crossentropyex分类输出

可学的重量的最后一层是一个完全连接层。用一个新的替换这个完全连接层完全连接层的输出的数量等于类的数量在新数据集。学习更快的新层的传输层,提高学习速率的因素层。

learnableLayer = lgraph.Layers (end-2);numClasses =元素个数(类别(imdsTrain.Labels));newLearnableLayer = fullyConnectedLayer (numClasses,Name =“new_fc”,WeightLearnRateFactor = 10,BiasLearnRateFactor = 10);lgraph = replaceLayer (lgraph learnableLayer.Name newLearnableLayer);

网络的分类层指定输出类。用一个新的替换分类层没有类标签。的trainNetwork函数自动设置输出类层的训练时间。

classLayer = lgraph.Layers(结束);newClassLayer = classificationLayer (Name =“new_classoutput”);lgraph = replaceLayer (lgraph classLayer.Name newClassLayer);

一个例子显示了完整的转移学习工作流程,明白了火车深入学习网络对新图像进行分类。为例,展示了如何训练一个网络作为进口dlnetwork对象分类新图片,看看火车从PyTorch进口网络对新图像进行分类

列车网络GPU

你可以训练导入网络使用的CPU或GPUtrainNetwork。指定训练选项,包括选项执行环境,使用trainingOptions函数。指定使用的硬件需求ExecutionEnvironment名称-值参数。如何加快培训更多的信息,请参阅并行扩展深度学习,在gpu上,在云端

进口网络部署

进口网络部署MATLAB编码器GPU编码器

您可以使用MATLAB编码器™或GPU编码器™一起深度学习工具箱生成墨西哥人,独立的CPU, CUDA®墨西哥人,或独立的CUDA代码导入网络。有关更多信息,请参见代码生成

  • 使用MATLAB编码器与深度学习工具箱生成墨西哥人或独立的CPU的代码运行在桌面或嵌入式目标。您可以部署生成独立的代码,使用了英特尔®MKL-DNN库或手臂®计算库。或者,您可以生成通用的C或c++代码不调用第三方库函数。有关更多信息,请参见深度学习与MATLAB编码器(MATLAB编码器)

  • 使用GPU与深度学习工具箱编码器生成CUDA墨西哥人或独立的CUDA的代码运行在桌面或嵌入式目标。您可以部署生成独立的CUDA的代码使用CUDA深层神经网络库(cuDNN)的TensorRT™高性能推理库,或手臂计算库马里GPU。有关更多信息,请参见深度学习GPU编码器(GPU编码器)

导入函数返回网络DAGNetworkdlnetwork对象。这两个对象支持代码生成。万博1manbetx的更多信息MATLAB编码器和GPU编码器支持深度学习工万博1manbetx具箱对象,明白了万博1manbetx支持类(MATLAB编码器)万博1manbetx支持类(GPU编码器),分别。

您可以生成代码的任何进口网络层支持代码生成。万博1manbetx层支持代码生成的列表万博1manbetxMATLAB编码器和GPU编码器,看到万博1manbetx支持层(MATLAB编码器)万博1manbetx支持层(GPU编码器),分别。更多信息在每一个内置的代码生成功能和限制MATLAB层,请参见扩展功能部分的层。例如,看到代码生成GPU的代码生成的部分imageInputLayer

进口网络部署MATLAB编译器

导入网络可能包括层MATLAB编码器不支持部署。万博1manbetx在这种情况下,您可以部署导入网络作为一个独立的应用程序使用MATLAB编译器™。您创建的独立的可执行文件MATLAB编译器MATLAB是独立的;因此,您可以将其部署到用户没有访问MATLAB。

您可以部署只导入网络使用MATLAB编译器以编程方式使用世纪挑战集团(MATLAB编译器)函数或交互使用应用程序编译器(MATLAB编译器)应用。例如,明白了用MATLAB编译器进口TensorFlow部署模型

请注意

自动生成自定义层不支持代码生成万博1manbetxMATLAB编码器、GPU编码器或MATLAB编译器

函数,导出网络和层图

当你完成你的深度学习MATLAB的工作流,可以深入学习网络或层图与同事分享工作在不同的深度学习平台。通过输入一行代码,您可以导出网络。

exportNetworkToTensorFlow(净,“myModel”)

出口网络TensorFlow和ONNX

您可以导出网络和层图TensorFlow ONNX通过使用exportNetworkToTensorFlowexportONNXNetwork功能。可以导出功能DAGNetwork,dlnetwork,LayerGraph对象。

  • exportONNXNetwork函数出口ONNX模型格式。

  • exportNetworkToTensorFlow在常规的Python函数保存导出的TensorFlow模型®包中。可以加载导出的模型,用它来预测或培训。您还可以导出的模型通过储蓄来分享SavedModelHDF5格式。有关如何加载导出模型的更多信息并将其保存在一个标准TensorFlow格式,看看负载输出TensorFlow模型在标准格式保存导出TensorFlow模型

另请参阅

||||||

相关的话题

外部网站