建议导入模型TensorFlow,PyTorch,ONNX
这个主题提供有关如何克服常见的障碍导入模型从TensorFlow™, PyTorch®作为一个MATLAB,或者ONNX™®网络或层图。你可以阅读每个部分的独立这一主题。的高级概述导入和导出功能深度学习工具箱™,明白了深度学习工具箱之间的互操作性,TensorFlow PyTorch, ONNX。
导入的功能深度学习工具箱
此表列出了深度学习工具箱导入功能。使用这些函数导入网络或层图从TensorFlow PyTorch, ONNX。
你必须有相关的支持包运行这些导入功能。金宝app如果支持包没有金宝app安装,每个函数提供一个下载链接到对应的包在扩展浏览器的支持。推荐的做法是下载支持包的默认位置的MATLAB版本运行。金宝app你也可以直接从文件交换下载包的支持。金宝app
推荐功能导入TensorFlow模型
的深度学习工具箱转换器TensorFlow模型金宝app支持包提供了这些函数:
importTensorFlowNetwork
和importKerasNetwork
——进口TensorFlow模型作为一个网络。importTensorFlowLayers
和importKerasLayers
——进口TensorFlow模型层图。
请注意
的importTensorFlowNetwork
和importTensorFlowLayers
函数是推荐的importKerasNetwork
和importKerasLayers
功能。
下表对比了深度学习工具箱转换器TensorFlow模型功能。比较突出的原因importTensorFlowNetwork
和importTensorFlowLayers
函数是推荐的importKerasNetwork
和importKerasLayers
功能。
特性 | importTensorFlowNetwork 和importTensorFlowLayers |
importKerasNetwork 和importKerasLayers |
---|---|---|
自动生成自定义层 | 是的 | 没有 |
金宝app支持TensorFlow 2 | 是的 | 有限的 |
金宝app支持SavedModel 格式 |
是的 | 没有 |
可以导入网络dlnetwork (或LayerGraph 兼容dlnetwork ) |
是的 | 没有 |
更多信息的优势从TensorFlow 1迁移到TensorFlow 2,明白了迁移从TensorFlow 1。x TensorFlow 2。有关TensorFlow版本的更多信息导入功能的支持,看到的金宝app限制(importTensorFlowNetwork
和importTensorFlowLayers)
和限制(importKerasNetwork
和importKerasLayers
)。
导入TensorFlow HDF5格式的模型,而不是使用importKerasNetwork
导入模型作为深度学习网络工具箱,TensorFlow模型转换为SavedModel
格式和使用importTensorFlowNetwork
函数。
自动生成自定义层
的
importTensorFlowNetwork
和importTensorFlowLayers
当你导入自定义功能可以自动生成自定义层TensorFlow层或当软件不能TensorFlow层转化为等价的内置MATLAB层。例如,看到的进口TensorFlow网络自动生成自定义层。的层的软件支持转换,明白了金宝appTensorFlow-Keras层支持转换成内置金宝appMATLAB层。的
importONNXNetwork
和importONNXLayers
功能还可以生成自定义层当软件不能ONNX运营商转换成等价的内置MATLAB层。例如,看到的进口ONNX网络自动生成自定义层。的层的软件支持转换,明白了金宝appONNX运营商支持转换成内置M金宝appATLAB层。在极少数情况下,当
importONNXNetwork
和importONNXLayers
不能一个ONNX模型导入到层,您可以使用importONNXFunction
导入模型作为一个函数。为更多的信息关于如何选择一个ONNX导入功能,看看选择要导入的函数ONNX Pretrained网络。的
importNetworkFromPyTorch
一层PyTorch导入MATLAB函数通过这些步骤为:函数试图导入PyTorch层作为一个内置的MATLAB层。有关更多信息,请参见PyTorch转换层。
函数试图导入PyTorch层作为一个内置的MATLAB函数。有关更多信息,请参见PyTorch转换层。
函数试图导入PyTorch层作为一个自定义层。例如,看到的从PyTorch进口网络并找到生成自定义层。
函数导入PyTorch层作为一个自定义层与一个占位符的功能。有关更多信息,请参见占位符函数。
的importTensorFlowNetwork
,importTensorFlowLayers
,importONNXNetwork
,importONNXLayers
,importNetworkFromPyTorch
函数将自动生成自定义层保存到一个包在当前文件夹。定义层包的更多信息,请参阅PackageName
每个函数的名称参数。
占位符层
的importTensorFlowLayers
和importONNXLayers
功能插入TensorFlow层或占位符层ONNX运营商当这些条件应用:
函数不能转换TensorFlow层或ONNX运营商内置MATLAB层。列表TensorFlow层和ONNX运营商转换功能的支持,看到的金宝appTensorFlow-Keras层支持转换成内置金宝appMATLAB层和ONNX运营商支持转换成内置M金宝appATLAB层,分别。
函数不能生成自定义层的TensorFlow层或ONNX操作符函数不能转换为内置MATLAB层。
如果这些条件应用,importTensorFlowNetwork
和importONNXNetwork
函数返回一个错误。这些流程图描述这些工作流。
找到占位符的名称和指标层的层图,使用findPlaceholderLayers
函数。你可以替换一个占位符一层一层和一个内置的MATLAB,定制层,或functionLayer
对象。关于自定义层的更多信息,请参阅定义定制的深度学习层。用一个例子functionLayer
对象,看到替换支持Keras层金宝app和功能层。替换一个层,使用replaceLayer
。例如,看到的进口ONNX模型层图,一层一层的占位符。
的importNetworkFromPyTorch
函数生成一个定制的一层一层用一个占位符函数而不是一个占位符。有关更多信息,请参见占位符函数。
输入维度排序
输入数据的维度排序不同深度学习工具箱,TensorFlow, ONNX。这个表比较输入尺寸订购平台之间不同的输入类型。
输入类型 | 维度排序 | |||
---|---|---|---|---|
MATLAB | TensorFlow | PyTorch | ONNX | |
特性 | CN | 数控 | 数控 | 数控 |
二维图像 | HWCN | NHWC | NCHW | NCHW |
三维图像 | HWDCN | NHWDC | NCDHW | NCHWD |
向量序列 | CSN | 国家安全委员会 | SNC | 国家安全委员会 |
二维图像序列 | HWCSN | NSWHC | NCSHW | NSCHW |
三维图像序列 | HWDCSN | NSWHDC | NCSDHW | NSCHWD |
表中的变量名:
N——数量的观察
C——数量的特性或通道
H——图像的高度
W——图像的宽度
D——深度图像
年代——序列长度
预测的数据格式dlnetwork
的importTensorFlowNetwork
和importONNXNetwork
函数可以导入TensorFlow或ONNX模型DAGNetwork
或dlnetwork
对象。网络通过设置指定导入的类型TargetNetwork
名称-值参数。更多细节,请参阅TargetNetwork
为importTensorFlowNetwork
和TargetNetwork
为importONNXNetwork
。
的importNetworkFromPyTorch
进口PyTorch模型作为一个未初始化的函数dlnetwork
对象。在您使用网络之前,做以下之一:
添加一个输入层网络和初始化网络通过使用进口
addInputLayer
函数。例如,看到的从PyTorch并添加进口网络输入层。初始化网络使用
初始化
功能和设置适当的格式。例如,看到的从PyTorch并初始化导入网络。
预测使用dlnetwork
对象,你必须将输入数据转换成dlarray
对象与相应的数据格式。例如,看到的进口TensorFlow网络dlnetwork对图像进行分类。用这个表来选择正确的数据格式为每个输入类型和层。
输入类型 | 输入层* * | 输入格式* |
---|---|---|
特性 | featureInputLayer |
CB |
二维图像 | imageInputLayer |
SSCB |
三维图像 | image3dInputLayer |
SSCB |
向量序列 | sequenceInputLayer |
认知行为治疗 |
二维图像序列 | sequenceInputLayer |
SSCBT |
三维图像序列 | sequenceInputLayer |
SSSCBT |
*在深度学习工具箱,每个数据格式必须这些标签之一:
年代
——空间C
——频道B
——批观测T
——时间和顺序U
——未指明的
* *一dlnetwork
对象不需要一个输入层。网络的输入层可以推断出类型从输入数据格式。
有关数据格式的更多信息,请参阅dlarray
。
输入数据预处理
预处理数据是一种常见的深度学习工作流程的第一步准备数据网络可以接受的格式。你必须进行预处理以同样的方式输入数据作为训练数据。
pretrained深入学习网络的输入层可以在深度学习工具箱执行一些输入数据的预处理。例如,输入层pretrainedmobilenetv2
可实现图像的输入数据。显示归一化
网络的输入层的属性。
网= mobilenetv2;net.Layers (1) .Normalization
ans = ' zscore '
网络,你从TensorFlow进口或ONNX可能没有内置预处理输入层。例如,输入层的进口MobileNetV2
从TensorFlow不正常的输入图像。进口MobileNetV2
并显示归一化
网络的输入层的属性。
网= importTensorFlowNetwork (“MobileNetV2”,…OutputLayerType =“分类”);net.Layers (1) .Normalization
ans = '没有'
通常,开源库提供的信息所需的输入数据预处理。例如,请参见tf.keras.applications.mobilenet_v2.preprocess_input和ShuffleNet ONNX模型动物园。了解更多关于如何预处理图像和其他类型的数据深度学习工具箱,明白了预处理图像深度学习和预处理数据深层神经网络。
另请参阅
importTensorFlowNetwork
|importNetworkFromPyTorch
|importONNXNetwork
|importTensorFlowLayers
|importONNXLayers
|dlarray