主要内容

选择“功能导入ONNX预训练网络”

深度学习工具箱™转换器的ONNX™模型格式提供三个功能来导入经过训练的ONNX(开放神经网络交换)网络:importONNXNetworkimportONNXLayers,importONNXFunction

这个流程图说明了哪个导入函数最适合不同的场景。

选择ONNX导入功能流程图

请注意

默认情况下,importONNXNetworkimportONNXLayers当软件不能将ONNX操作符转换成等效的内置MATLAB时,尝试生成一个自定义层®层。有关软件支持转换的操作符列表,请参见金宝appONNX操作符支持转换到内置的金宝appMATLAB层

importONNXNetworkimportONNXLayers将生成的自定义层保存在包中+PackageName在当前文件夹中。

importONNXNetworkimportONNXLayers不自动生成每个ONNX操作符的自定义层,不支持转换到内置的MATLAB层。金宝app

决定

这个表描述了工作流中选择ONNX导入函数的每个决策。

决定 描述
是否支持所有的ONNX操作符转换成等效的内置MATLA金宝appB层,或者软件可以自动生成自定义层?
  • 如果导入的网络包含一个不支持转换到内置MATLAB层的ONNX操作符(见金宝appONNX操作符支持转换到内置的金宝appMATLAB层),importONNXNetwork没有生成自定义层,那么importONNXNetwork返回一个错误。

  • 如果导入的网络包含一个ONNX操作符不支持转换到内置的MATLAB层和金宝appimportONNXLayers没有生成自定义层,那么importONNXLayers插入一个占位符层来代替不支持的层。金宝app

  • importONNXFunction金宝app支持大多数ONNX操作符。有关详细信息,请参见importONNXFunction支持的ONNX操作符金宝app

您会部署导入的网络吗? 如果你使用importONNXNetworkimportONNXLayers,您可以为导入的网络生成代码。创建一个DAGNetwork对象以生成代码,请参见加载预训练的代码生成网络(MATLAB编码器)
你会用深度网络设计器加载导入的网络吗? 如果你使用importONNXNetworkimportONNXLayers,可以使用深层网络设计师应用程序。
如果您重新培训导入的网络,您会使用自定义的培训循环吗?
  • 如果你使用importONNXFunction,您可以只使用自定义的训练循环来重新训练导入的网络。例如,请参见使用自定义训练循环训练导入的ONNX函数

  • 使用importONNXNetworkTargetNetwork指定为“dlnetwork”将网络导入为dlnetwork对象。一个dlnetwork使用自动区分启用金宝app对自定义训练循环的支持。

  • 使用importONNXLayersTargetNetwork指定为“dlnetwork”将网络导入为LayerGraph对象兼容dlnetwork对象。然后将图层图转换为dlnetwork通过使用dlnetwork

  • 有关培训选项的详细信息,请参见MATLAB中训练深度学习模型

行动

这个表描述了工作流中选择ONNX导入函数的每个操作。

行动 描述
使用importONNXNetwork importONNXNetwork返回一个DAGNetworkdlnetwork对象,该对象可以用于预测(有关更多信息,请参见TargetNetwork名称-值参数)。类来预测类标签分类功能上的DAGNetwork对象或预测功能上的dlnetwork对象。
使用importONNXLayers importONNXLayers返回一个LayerGraph对象兼容DAGNetworkdlnetwork对象(有关更多信息,请参见TargetNetwork名称-值参数)。importONNXLayers在不支持的层的位置插入占位符层。金宝app找到并替换占位符层。然后,使用assembleNetwork,返回DAGNetwork对象,或将层图形转换为dlnetwork对象的使用dlnetwork
使用importONNXFunction importONNXFunction返回一个ONNXParameters对象,该对象包含网络参数和模型函数(请参见导入的ONNX模型功能),其中包含网络架构。的ONNXParameters对象和模型函数都可以用于预测。例如,请参见使用导入的ONNX函数进行预测
找到并替换占位符层 要查找导入网络中的占位符层的名称和索引,请使用findPlaceholderLayers函数。然后,您可以将占位符层替换为您定义的新层。要替换一个层,使用replaceLayer

另请参阅

||||||

相关的话题