主要内容

选择Function导入ONNX预训练网络

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

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

选择ONNX导入功能流程图

请注意

默认情况下,importONNXNetwork而且importONNXLayers当软件无法将ONNX操作符转换为等效的内置MATLAB时,尝试生成自定义层®层。有关软件支持转换的运算符列表,请参见金宝appONNX操作符支持转换为内置M金宝appATLAB层

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

importONNXNetwork而且importONNXLayers不会为每个不支持转换为内置MATLAB层的ONNX操作符自动生成自定义层。金宝app

决定

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

决定 描述
是否所有的ONNX操作符都支持转换为等效的内置MATL金宝appAB层或软件可以自动生成自定义层?
  • 如果导入的网络包含不支持转换为内置MATLAB层的ONNX操作符(请参阅金宝appONNX操作符支持转换为内置M金宝appATLAB层),importONNXNetwork不生成自定义层,然后importONNXNetwork返回一个错误。

  • 如果导入的网络包含不支持转换为内置MATLAB层的ONNX操作符和金宝appimportONNXLayers不生成自定义层,然后importONNXLayers在不受支持的层中插入一个占位符层。金宝app

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

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

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

  • 使用importONNXLayersTargetNetwork指定为“dlnetwork”将网络导入为LayerGraph对象。dlnetwork对象。然后将图层图转换为adlnetwork通过使用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

另请参阅

||||||

相关的话题