对于深度学习,MATLAB允许用户在MATLAB中创建和训练模型,或者通过模型转换利用在开源中训练的模型。在MATLAB R2022b之前,对模型转换的支持包括:从ONNX™导入和导出到ONNX™,从TensorFlow™导入。我们很高兴地分享,从MATLAB R2022b开始,用户现在可以
导出模型到TensorFlow作为Python®代码和可以
从PyTorch®导入模型(从支持图像分类开始)。
出口到TensorFlow
支持包
张量流模型的深度学习工具箱转换器添加了从MATLAB导出到TensorFlow的功能,通过使用
exportNetworkToTensorFlow函数。
有很多理由为新产品感到兴奋
exportNetworkToTensorFlow功能:
- 您可以将深度学习网络和层图(例如,卷积,LSTM)直接导出到TensorFlow。
- 导出一个网络,将其作为TensorFlow模型加载,并使用导出的模型进行预测是很容易的。有关相关示例,请参见导出网络到TensorFlow和分类图像.
- 导出一个未经训练的层图,将其加载为TensorFlow模型,并训练导出的模型是很容易的。有关相关示例,请参见导出未经训练的层图到TensorFlow.
- 您可以将导出的模型保存为任何标准的TensorFlow格式,如SavedModel或HDF5格式,并与在TensorFlow中工作的同事共享。
- 许多MATLAB层可以转换为TensorFlow层。有关层的完整列表,请参见支持导出到TensorFlow的层.
|
在这里,我展示了如何将深度学习网络导出到TensorFlow,将其加载为TensorFlow模型,并将其保存为SavedModel格式的基本工作流程。
MATLAB代码:加载预训练的网络。的预训练深度神经网络文档页面显示了如何获得预训练网络的所有选项。您也可以创建自己的网络。网= 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模型的深度学习工具箱转换器支持包。这个初始版本支持导入图像分类模型。对其他模型类型的支持将在以后的版本中添加。
使用
importNetworkFromPyTorch函数来导入PyTorch模型。确保您导入的PyTorch模型经过了预先训练和跟踪。我在这里向您展示如何从PyTorch导入一个图像分类模型并初始化它。
Python代码:加载预先训练的图像分类模型TorchVision图书馆.导入模型model = models.mnasnet1_0(预训练=True) 跟踪PyTorch模型。有关如何跟踪PyTorch模型的更多信息,请访问火炬文档:跟踪一个函数.X = torch.rand(1,3,224,224) traced_model = torch.ji .trace(model.forward,X) 保存PyTorch模型。traced_model.save(“traced_mnasnet1_0.pt”) |
MATLAB代码:将PyTorch模型导入到MATLAB中importNetworkTFromPyTorch函数。该函数将模型作为未初始化的对象导入dlnetwork对象,没有输入层。网= importNetworkFromPyTorch(“traced_mnasnet1_0.pt”); 指定导入网络的输入大小,并创建一个图像输入层。然后,将图像输入层添加到导入的网络中,并使用addInputLayer函数(R2022b中新增)。InputSize = [224 224 3];InputLayer = imageInputLayer (InputSize正常化= "没有");网= addInputLayer(净、InputLayer初始化= true); |
您可能已经注意到,在上面的代码中,PyTorch和MATLAB中的输入维度有不同的顺序。有关更多信息,请参见
深度学习平台的输入维度排序.
有关如何导入PyTorch模型、如何初始化导入的模型以及如何在导入的模型上执行工作流(例如预测和训练)的更多详细信息,请参见
例子的
importNetworkTFromPyTorch文档页面。
互操作性能力总结
互操作性支持包允许您将深度学习工具箱与TensorFlow、Pytorch和ONNX连接。使用导入和导出功能访问开源存储库中可用的模型,并与在其他深度学习框架中工作的同事协作。
更多信息:
コメント
コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。