人工智能

应用机器学习和深度学习

TensorFlow和PyTorch互操作性的新特性

对于深度学习,MATLAB允许用户在MATLAB中创建和训练模型,或者通过模型转换利用在开源中训练的模型。在MATLAB R2022b之前,支持模型转换包金宝app括:从ONNX™导入和导出到ONNX™,以及从TensorFlow™导入。我们很高兴地分享,从MATLAB R2022b开始,用户现在可以导出模型到TensorFlow作为Python®代码和可以从PyTorch®导入模型(首先支持图像分类)。金宝app

导出到TensorFlow

支持包金宝appTensorFlow模型的深度学习工具箱转换器添加了从MATLAB导出到TensorFlow的功能,通过使用exportNetworkToTensorFlow函数。
我们有很多理由对新产品感到兴奋exportNetworkToTensorFlow功能:
  1. 您可以将深度学习网络和层图(例如,卷积,LSTM)直接导出到TensorFlow。
  2. 导出一个网络,将其加载为TensorFlow模型,并使用导出的模型进行预测是很容易的。相关示例请参见导出网络到TensorFlow和分类图像
  3. 导出一个未经训练的层图,将其加载为TensorFlow模型,并训练导出的模型是很容易的。相关示例请参见导出未训练的层图到TensorFlow
  4. 您可以将导出的模型保存为任何标准的TensorFlow格式,例如SavedModel或HDF5格式,并与在TensorFlow工作的同事共享。
  5. 许多MATLAB层可以转换为TensorFlow层。有关层的完整列表,请参见支持导出到Te金宝appnsorFlow的层
在这里,我展示了如何将深度学习网络导出到TensorFlow,将其加载为TensorFlow模型,并将其保存为SavedModel格式的基本工作流。
MATLAB代码:
加载一个预先训练好的网络。的预训练的深度神经网络文档页面向您展示了如何获得预训练网络的所有选项。您也可以创建自己的网络。
Net = darknet19;
导出网络TensorFlow。的exportNetworkToTensorFlow函数将TensorFlow模型保存在Python包DarkNet19中。
exportNetworkToTensorFlow(净,“DarkNet19”)
DarkNet19包包含四个文件:
  • _init_.py文件,它将DarkNet19文件夹定义为常规的Python包。
  • py文件,其中包含了定义未经训练的TensorFlow-Keras模型的代码。
  • README.txt文件,它提供了如何加载TensorFlow模型并将其保存为HDF5或SavedModel格式的说明。
  • 权重。h5文件,其中包含HDF5格式的模型权重。

图:导出的TensorFlow模型保存在常规的Python包DarkNet19中。

Python代码:
从DarkNet19包中加载导出的TensorFlow模型。
导入DarkNet19模型= DarkNet19.load_model()
以SavedModel格式保存导出的模型。
model.save(“DarkNet19_savedmodel”)

从PyTorch导入

在R2022b中,我们介绍了PyTorch模型的深度学习工具箱转换器金宝app支持包。这个初始版本支持导入图像分类模型。金宝app金宝app对其他模型类型的支持将在未来的版本中添加。
使用importNetworkFromPyTorch函数导入PyTorch模型。确保您正在导入的PyTorch模型是预先训练和跟踪的。我在这里向您展示如何从PyTorch导入图像分类模型并初始化它。
Python代码:
加载预先训练的图像分类模型TorchVision图书馆
导入模型model = models.mnasnet1_0(预训练=True)
跟踪PyTorch模型。有关如何跟踪PyTorch模型的更多信息,请转到Torch文档:跟踪函数
X = torch.rand(1,3,224,224) traced_model = torch. jet .trace(model.forward,X)
保存PyTorch模型。
traced_model.save(“traced_mnasnet1_0.pt”)
MATLAB代码:
将PyTorch模型导入到MATLAB中importNetworkTFromPyTorch函数。函数以未初始化的形式导入模型dlnetwork没有输入层的对象。
net = importNetworkFromPyTorch(" traced_mnasnet1_1 .pt");
指定导入网络的输入大小,并创建一个图像输入层。然后,将图像输入层添加到导入的网络中,并使用addInputLayer函数(R2022b中新增)。
InputSize = [224 224 3];InputLayer = imageInputLayer(InputSize,Normalization="none");net = addInputLayer(net,InputLayer,Initialize=true);
在上面的代码中,您可能已经注意到PyTorch和MATLAB中的输入维度有不同的顺序。有关更多信息,请参见深度学习平台的输入维度排序
有关如何导入PyTorch模型、如何初始化导入模型以及如何在导入模型上执行工作流(如预测和训练)的详细信息,请参见例子importNetworkTFromPyTorch文档页面。

互操作性概述

互操作性支持包允许您将深度学习工具箱与Te金宝appnsorFlow、Pytorch和ONNX连接起来。使用导入和导出函数访问开源存储库中可用的模型,并与在其他深度学习框架中工作的同事协作。
更多信息:
|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。