主要内容

importONNXFunction

导入预训练的ONNX网络作为函数

    描述

    例子

    参数个数= importONNXFunction (modelfileNetworkFunctionName从文件中导入ONNX™(Open Neural Network Exchange)网络modelfile并返回一个ONNXParameters对象(参数个数),包含网络参数。该函数还创建一个模型函数,其名称为NetworkFunctionName包含网络架构。有关网络功能的详细信息,请参阅导入ONNX模型函数

    使用ONNXParameters对象和NetworkFunctionName模型函数执行常见的深度学习任务,如图像和序列数据分类、迁移学习、目标检测和图像分割。importONNXFunction在无法使用importONNXNetwork函数(例如,importONNXFunction可以导入YOLOv3),或者如果您想定义自己的自定义训练循环(更多细节,参见使用自定义训练循环训练网络).

    此函数需要ONNX模型格式的深度学习工具箱™转换器万博1manbetx支持包。如果没有安装此支万博1manbetx持包,则该函数将提供下载链接。

    例子

    全部折叠

    导入ONNX网络作为函数。该网络包含深度学习工具箱层不支持的ONNX操作符。万博1manbetx您可以将导入的模型函数用于深度学习任务,如预测和迁移学习。

    下载并安装ONNX模型格式支持包的深度学习工具箱转换器。万博1manbetx您可以输入importONNXFunction在命令行中检查支持包是否已安装。万博1manbetx如果没有安装,则该函数将提供到Add-On Explorer中所需的支持包的链接。万博1manbetx要安装支持包,请单击链接,然后万博1manbetx单击安装

    指定要导入的文件为shufflenet使用ONNX模型动物园中的操作符设置9。shufflenet是一个卷积神经网络,它根据来自ImageNet数据库的图像进行训练。

    modelfile =.“shufflenet - 9. onnx”

    推荐的做法是尝试通过使用importONNXNetwork.如果importONNXNetwork无法导入网络,因为不支持某些网络图层,您可以通过使用将网络作为图层导入万博1manbetximportONNXLayers,或作为一个函数使用importONNXFunction

    导入shufflenet网络层。该软件生成占位符层来代替不支持的层。万博1manbetx

    lgraph = importONNXLayers (modelfile,“OutputLayerType”“分类”);
    警告:无法导入一些ONNX操作符,因为它们不受支持。万博1manbetx它们已经被占位符层所取代。要查找这些层,调用返回对象上的函数findPlaceholderLayers。4个操作符:ONNX文件中的平均池层不包括填充。这可能会导致ONNX和MATLAB网络输出之间的小数值差异。32个操作符:只有在执行扁平化操作时才支持整形操作符。万博1manbetx16个操作符:不支持操作符'Transpose'。万博1manbetx要将ONNX网络作为一个函数导入,它可以支持大多数ONNX操作符,调用importONNXFunctio万博1manbetxn。

    查找占位符层并显示占位符层的数量。

    indPlaceholderLayers = findPlaceholderLayers (lgraph);元素个数(indPlaceholderLayers)
    ans = 48

    必须替换要使用的48个占位符层lgraph用于深度学习任务,比如预测。

    相反,将网络作为函数导入,以生成一个可以用于深度学习任务的模型函数。

    params = importONNXFunction (modelfile,“shufflenetFcn”
    一个包含导入的ONNX网络的函数'shufflenetFcn'已经保存到当前目录。要学习如何使用这个函数,输入:help shufflenetFcn
    params = ONNXParameters with properties: Learnables: [1×1 struct] Nonlearnables: [1×1 struct] State: [1×1 struct] NumDimensions: [1×1 struct] NetworkFunctionName: 'shufflenetFcn'

    importONNXFunction返回ONNXParameters对象参数个数,其中包含网络参数和模型函数shufflnetFcn,其中包含网络架构。importONNXFunction节省了shufflenetFcn在当前文件夹中。使用命令可以打开模型函数查看或编辑网络架构打开shufflenetFcn

    导入一个ONNX网络作为函数,使用预先训练好的网络来预测输入图像的类标签。

    指定要导入的文件为shufflenet使用ONNX模型动物园中的操作符设置9。shufflenet是一个卷积神经网络,训练了来自ImageNet数据库的100多万张图像。因此,该网络学习了丰富的特征表示范围广泛的图像。该网络可以将图像分为1000个对象类别,如键盘、鼠标、铅笔和许多动物。

    modelfile =.“shufflenet - 9. onnx”

    使用。导入预训练的ONNX网络作为函数importONNXFunction,它返回ONNXParameters对象参数个数.该节点包含网络参数。该函数还在包含网络架构的当前文件夹中创建了一个新的模型函数。指定模型函数的名称为shufflenetFcn

    params = importONNXFunction (modelfile,“shufflenetFcn”);
    已将包含导入的ONNX网络的函数保存到shuffle .m文件中。要学习如何使用这个函数,输入:help shufflenetFcn。

    阅读你想分类的图像,并显示图像的大小。图像是792 × 1056像素,有三个颜色通道(RGB)。

    我= imread (“peacock.jpg”);尺寸(i)
    ans =1×3792 1056 3

    将图像的大小调整为网络的输入大小。显示图像。

    I = imresize(I,[224 224]);imshow(我)

    的输入shufflenet需要进一步的预处理(更多细节,请参阅Shuffleenet在Onnx模型动物园).重新调节图像。对图像进行归一化,方法是减去训练图像的均值并除以训练图像的标准差。

    I =重新调节(0,1);meanIm = [0.485 0.456 0.406];stdIm = [0.229 0.224 0.225];I = (I -重塑(meanIm,[1 1 3]))。/重塑(stdIm [1 1 3]);imshow(我)

    从其中导入类名squeezenet,它也使用来自ImageNet数据库的图像进行训练。

    网= squeezenet;一会= net.Layers .ClassNames(结束);

    通过指定要分类的图像来计算类概率ONNXParameters对象参数个数作为模型函数的输入参数shufflenetFcn

    成绩= shufflenetFcn(我params);

    找到概率最高的类索引。显示输入图像的预测类和相应的分类得分。

    indMax =找到(分数= = max(分数));类名(indMax)
    ans =1×1个单元阵列{“孔雀”}
    scoreMax =分数(indMax)
    scoreMax = 0.7517

    导入squeezenet将卷积神经网络作为函数,用迁移学习对预先训练好的网络进行微调,对新的图像集合进行分类。

    这个例子使用了几个辅助函数。要查看这些函数的代码,请参见辅助函数

    将新图像解压并作为图像数据存储加载。imageDatastore自动标签的图像基于文件夹名称和存储数据作为ImageDatastore对象。图像数据存储使您能够存储大的图像数据,包括内存中不适合的数据,并在卷积神经网络训练期间有效地读取批量图像。指定小批量大小。

    解压缩(“MerchData.zip”);miniBatchSize = 8;imd = imageDatastore (“MerchData”...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”...“ReadSize”, miniBatchSize);

    这个数据集很小,只包含75张训练图像。显示一些示例图像。

    numImages =元素个数(imds.Labels);idx = randperm (numImages 16);数字i = 1:16 subplot(4,4,i) i = readimage(imds,idx(i));imshow(我)结束

    提取训练集,对分类标签进行一次性编码。

    XTrain = readall (imd);XTrain =单(cat (4, XTrain {:}));YTrain_categ =分类(imds.Labels);YTrain = onehotencode (YTrain_categ, 2) ';

    确定数据中类的数量。

    类=类别(YTrain_categ);numClasses =元素个数(类)
    numClasses = 5

    squeezenet是一个卷积神经网络,训练了来自ImageNet数据库的100多万张图像。因此,该网络学习了丰富的特征表示范围广泛的图像。该网络可以将图像分为1000个对象类别,如键盘、鼠标、铅笔和许多动物。

    导入pretrainedsqueezenet网络是一种功能。

    println () params = importONNXFunction(“squeezenet.onnx”“squeezenetFcn”
    已将包含导入的ONNX网络的函数保存到文件squeezenetFcn.m中。要学习如何使用这个功能,输入:help squeezenetFcn。
    Nonlearnables: [1×1 struct] State: [1×1 struct] NumDimensions: [1×1 struct] NetworkFunctionName: 'squeezenetFcn'

    参数个数是一个ONNXParameters包含网络参数的对象。squeezenetFcn是一个包含网络架构的模型功能。importONNXFunction节省了squeezenetFcn在当前文件夹中。

    计算新训练集上预训练网络的分类精度。

    accuracyBeforeTraining = getNetworkAccuracy (XTrain、YTrain params);流(' %。2f accuracy before transfer learning\n', accuracyBeforeTraining);
    转移学习前0.01精度

    精度很低。

    通过输入显示可学习的网络参数Params.Learnables..这些参数,例如权重(W)及偏见(B)的卷积层和全连接层,在训练时由网络更新。在训练过程中,不可学习的参数保持不变。

    预磨损网络的最后两个可读参数配置为1000类。

    conv10_W:(1×1×512×1000 dlarray]

    conv10_B(1000×1 dlarray):

    的参数conv10_Wconv10_B必须针对新的分类问题进行微调。通过初始化参数,将参数转换为5个类。

    params.Learnables。conv10_W= rand(1,1,512,5); params.Learnables.conv10_B = rand(5,1);

    冻结网络的所有参数,将它们转换为不可学习的参数。因为不需要计算冻结层的梯度,所以冻结许多初始层的权值可以显著加快网络训练。

    params = freezeParameters (params,“所有”);

    解冻网络的最后两个参数,将它们转换为可学习的参数。

    params = unfreezeParameters (params,“conv10_W”);params = unfreezeParameters (params,“conv10_B”);

    现在网络已经为培训做好了准备。初始化培训进度图。

    情节=“训练进步”如果情节= =“训练进步”figure lineLossTrain = animatedline;包含(“迭代”) ylabel (“损失”结束

    指定培训选项。

    速度= [];numEpochs = 5;miniBatchSize = 16;numObservations =大小(YTrain, 2);numIterationsPerEpoch =地板(numObservations. / miniBatchSize);initialLearnRate = 0.01;动量= 0.9;衰变= 0.01;

    培训网络。

    迭代= 0;开始=抽搐;executionEnvironment =“cpu”%将“gpu”改为在gpu上训练。%循环纪元。时代= 1:numEpochs%洗牌数据。idx = randperm (numObservations);XTrain = XTrain (:,:,:, idx);YTrain = YTrain (:, idx);%循环小批。i = 1:numIterationsPerEpoch iteration = iteration + 1;%读取小批数据。idx =(张)* miniBatchSize + 1:我* miniBatchSize;X = XTrain (:,:,:, idx);Y = YTrain (:, idx);%如果在GPU上训练,则将数据转换为gpuArray。如果(executionEnvironment = =“汽车”&& canUseGPU) || executionEnvironment ==“图形”X = gpuArray (X);结束使用dlfeval和%MACEMEGRADENTERS功能。(渐变、损失、状态)= dlfeval (@modelGradients, X, Y, params);参数个数。=状态;%确定基于时间的衰减学习率计划的学习率。learnRate = initialLearnRate/(1 +衰减*迭代);%使用SGDM优化器更新网络参数。(参数。可学的,速度]= sgdmupdate (params.Learnables、渐变速度);%显示训练进度。如果情节= =“训练进步”D =持续时间(0,0,toc(开始),“格式”“hh: mm: ss”);addpoints (lineLossTrain、迭代、双(收集(extractdata(损失))))标题(”时代:“+时代+”,过去:“+ drawnow字符串(D))结束结束结束

    计算网络经过微调后的分类精度。

    accuracyAfterTraining = getNetworkAccuracy (XTrain、YTrain params);流(' %。2f accuracy after transfer learning\n', accuracyAfterTraining);
    迁移学习后的准确性

    辅助函数

    本节提供本示例中使用的helper函数的代码。

    getNetworkAccuracy函数通过计算分类精度来评价网络性能。

    函数= getNetworkAccuracy(X,Y,onnxParams) N = size(X,4);onnxParams Ypred = squeezenetFcn (X,“培训”、假);[~, YIdx] = max (Y, [], 1);[~, YpredIdx] = max (Ypred [], 1);numIncorrect = sum(abs(YIdx-YpredIdx) > 0); / /输出精度= 1 - numIncorrect/N;结束

    大型摩托地函数计算损失和梯度。

    函数[grad, loss, state] = modelGradients(X,Y,onnxParams)“培训”,真正的);损失= crossentropy (y y“DataFormat”“CB”);研究生= dlgradient(损失、onnxParams.Learnables);结束

    squeezenetONNX的ONNX模型squeezenet网络。

    函数squeezenetonnx()excoodonnxnetwork(screezenet,“squeezenet.onnx”);结束

    导入ONNX长短期记忆(LSTM)网络作为函数,使用预先训练好的网络对序列数据进行分类。LSTM网络允许您将序列数据输入到网络中,并根据序列数据的单个时间步长进行预测。

    这个例子使用了helper函数preparePermutationVector.要查看此函数的代码,请参见Helper函数

    lstmNet具有与创建的LSTM网络相似的架构基于深度学习的序列分类lstmNet训练,以识别给定的时间序列数据,代表连续两个日本元音。培训数据包含九个扬声器的时间序列数据。每个序列具有12个特征,长度变化。

    指定lstmNet作为模型文件。

    modelfile =.“lstmNet.onnx”

    使用。导入预训练的ONNX网络作为函数importONNXFunction,它返回ONNXParameters对象参数个数包含网络参数。该函数还在包含网络架构的当前文件夹中创建了一个新的模型函数。指定模型函数的名称为lstmnetFcn

    params = importONNXFunction (modelfile,“lstmnetFcn”);
    已将包含导入的ONNX网络的函数保存到文件lstmnetFcn.m。要学习如何使用这个函数,输入:help lstmnetFcn。

    加载日语元音测试数据。XTest是一个单元格数组,包含370个长度为12的序列。欧美为标签“1”,“2”,…“9”,对应9个发言者。

    [xtest,ytest] = Japanesevowelstestdata;

    lstmNet使用序列长度相似的小批量进行训练。要以同样的方式组织测试数据,请按序列长度对测试数据进行排序。

    numobservationstest = numel(xtest);i=1:numObservationsTest序列= XTest{i};sequenceLengthsTest (i) =(序列,2)大小;结束[sequenceLengthsTest, idx] = (sequenceLengthsTest)进行排序;XTest = XTest (idx);欧美=欧美(idx);

    使用preparePermutationVector来计算排列向量inputPerm,将输入序列数据的维度排序置于导入的LSTM网络输入的维度排序。你可以键入帮助lstmnetFcn查看网络输入的维度顺序sequentInput.

    inputPerm = preparePermutationVector ([“FeaturesLength”“SequenceLength”“BatchSize”],...“SequenceLength”“BatchSize”“FeaturesLength”]);

    通过指定要分类的序列数据来计算类的概率XTestONNXParameters对象参数个数作为模型函数的输入参数lstmnetFcn.通过赋值数字向量自定义输入维度顺序inputPerm到name-value参数“InputDataPermutation”.返回分数在维数排序中通过网络输出的分配“没有”到name-value参数“OutputDataPermutation”

    i = 1:length(XTest) scores = lstmnetFcn(XTest{i},params,“InputDataPermutation”inputPerm,“OutputDataPermutation”“没有”);YPred (i) =找到(分数= = max(分数));结束YPred =分类(YPred ');

    计算预测的分类精度。

    acc = sum(YPred == YTest)./numel(YTest)
    acc = 0.9514

    Helper函数

    本节提供了辅助功能的代码preparePermutationVector在这个例子中使用。

    preparePermutationVector函数返回一个排列向量,它对维度进行排序fromDimOrder到维度排序toDimOrder.您可以指定输入参数fromDimOrdertoDimOrder例如字符向量、字符串标量、字符串数组、字符向量的单元格数组或数字向量。两个参数必须具有相同的类型和相同的唯一元素。例如,如果fromDimOrder为字符向量“hwcn”toDimOrder可以是字符向量吗“nchw”(hw,c分别对应图像的高度、宽度和通道数量,和n为观测次数)。

    函数perm = preparePermutationVector(fromDimOrder, toDimOrder)%检查fromDimOrder和toDimOrder是否都是向量。如果~isvector(fromDimOrder) || ~isvector(toDimOrder) error(message()“nnet_cnn_onnx: onnx: FPVtypes”));结束%从dimorder和toDimOrder转换为适当的类型。如果isscalar(fromDimOrder) fromDimOrder = char(fromDimOrder);结束如果isstring(toDimOrder) && isscalar(toDimOrder) toDimOrder = char(toDimOrder);结束%检查fromDimOrder和toDimOrder是否有唯一的元素。[fromSorted, ifrom] = unique(fromDimOrder);[toDimOrder, ~, iToInv] =唯一的(toDimOrder);如果numel(fromDimOrder) ~= numel(fromDimOrder) error(message())“nnet_cnn_onnx: onnx: FPVfromunique”));结束如果numel(toDimOrder) ~= numel(toDimOrder) error(message())“nnet_cnn_onnx: onnx: FPVtounique”));结束%检查fromDimOrder和toDimOrder是否有相同数量的元素。如果~ isequal (fromSorted toSorted)错误消息(“nnet_cnn_onnx: onnx: FPVsame”));结束计算排列向量。ifrom烫= (iToInv);烫=烫发(:)”;结束

    输入参数

    全部折叠

    包含网络的ONNX模型文件的名称,指定为字符向量或字符串标量。该文件必须在当前文件夹或MATLAB中的一个文件夹中®路径,否则必须包含文件的完整路径或相对路径。

    例子:“shufflenet.onnx”

    模型函数的名称,指定为字符向量或字符串标量。这个函数NetworkFunctionName包含导入的ONNX网络的架构。该文件保存在当前文件夹中的m文件中,或者您必须包含该文件的完整路径或相对路径。的NetworkFunctionName文件是使用网络所必需的。有关更多信息,请参见导入ONNX模型函数

    例子:“shufflenetFcn”

    输出参数

    全部折叠

    网络参数,作为ONNXParameters对象。参数个数包含导入的ONNX模型的网络参数。的属性使用点表示法参数个数.例如,Params.Learnables.显示网络可学习参数,如卷积层的权重。

    限制

    • importONNXFunction万博1manbetx支持这些ONNX版本:

      • ONNX中间表示版本6

      • ONNX操作符将7设置为13

    更多关于

    全部折叠

    进口onnx.模型函数

    importONNXFunction创建一个模型函数,该函数包含导入的ONNX模型的网络架构。指定名称NetworkFunctionName的输入参数importONNXFunction

    语法

    使用以下语法与导入的ONNX模型函数(NetworkFunctionName):

    • [Y,状态]= NetworkFunctionName (X,参数个数返回输出数据Y更新后的网络状态输入数据X

    • [Y,状态]= NetworkFunctionName (X,参数个数、名称、值)使用由一个或多个名称-值对参数指定的附加选项。

    • (Y1, Y2,…,Yn,状态] = NetworkFunctionName(X1,X2,...,Xn,参数个数返回多个输出数据(Y1, Y2,…,Yn)和更新后的网络状态对于多个输入数据(X1, X2,…,Xn).

    • (Y1, Y2,…,Yn,状态] = NetworkFunctionName(X1,X2,...,Xn,参数个数、名称、值)使用由一个或多个名称-值对参数为多个输入和输出指定的附加选项。

    输入参数
    争论 描述
    X 输入数据,指定为数组或dlarray
    参数个数 网络参数,指定为ONNXParameters对象。
    名称-值对的观点
    参数名称 描述
    “培训”

    培训选项,指定为“假”(默认)或“真正的”

    “InputDataPermutation”

    应用于输入维度排序的排列X,指定为“汽车”(默认),“没有”、数字向量或单元格数组。

    为名称-值对参数赋值“InputDataPermutation”将输入数据按导入的ONNX模型所需的维度顺序排列。

    • 指定的值“汽车”根据对公共输入数据的假设应用自动排列X.有关详细信息,请参见自动输入数据排列

    • 指定的值“没有”通过X按原来的顺序排列。

    • 分配数字矢量值以自定义输入维度排序;例如,[4 3 1 2].例如,请参见使用导入的ONNX函数进行序列分类

    • 为多个输入分配单元格数组值;例如,{(3 2 1),“没有一个”}

    “OutputDataPermutation”

    用于输出维数排序的排列Y,指定为“汽车”(默认),“没有”、数字向量或单元格数组。

    为名称-值对参数赋值“OutputDataPermutation”以匹配导入的ONNX模型的维度顺序。

    • 指定的值“汽车”返回Y在深度学习工具箱排序。有关详细信息,请参见自动输出数据排列

    • 指定的值“没有”返回Y在ONNX排序。例如,请参见使用导入的ONNX函数进行序列分类

    • 指定一个数字向量值以自定义输出维度顺序;例如,[3 4 2 1]

    • 为多个输出分配单元数组值;例如,{(3 2 1),“没有一个”}

    输出参数
    争论 描述
    Y

    输出数据,作为数组或dlarray

    • 如果X是数组还是你用的ONNXFunction预测,Y是一个数组。

    • 如果X是一个dlarray或者你使用ONNXFunction的培训,Y是一个dlarray

    状态

    更新的网络状态,指定为结构。

    网络状态包含在迭代之间的网络记住的信息,并跨多个培训批次更新。

    对输入论证的解释X和输出参数Y不同型号之间可能有差异。有关模型输入和输出参数的更多信息,请参阅帮助用于导入的模型函数NetworkFunctionName,或参考ONNX文档[1]

    自动排列导入的模型功能

    默认情况下,NetworkFunctionName自动允许输入和输出数据以促进图像分类任务。自动排列可能不适合其他任务,例如对象检测和时间序列分类。

    自动输入数据排列

    要自动改变输入,NetworkFunctionName根据导入的ONNX网络指定的输入维度,假设如下。

    ONNX模型输入维数 输入数据的解释 ONNX标准尺寸排序 深度学习工具箱标准尺寸排序 输入的自动排列
    4 二维图像

    NCHW

    HW,C分别对应图像的高度、宽度和通道数量,和N为观察次数。

    HWCN

    HW,C分别对应图像的高度、宽度和通道数量,和N为观察次数。

    [4 3 1 2]

    如果输入的尺寸不是4,NetworkFunctionName指定输入参数“InputDataPermutation”作为“没有”

    自动输出数据排列

    要自动排列输出,NetworkFunctionName根据导入的ONNX网络指定的输出维度,假设如下。

    ONNX模型输出维度的数量 输出数据解释 ONNX标准尺寸排序 深度学习工具箱标准尺寸排序 自动排列输出
    2 二维图像分类评分

    NK

    K班级的数量是多少N为观察次数。

    KN

    K班级的数量是多少N为观察次数。

    [2 1]
    4 二维图像像素分类评分

    NKHW

    HW分别对应于图像的高度和宽度,K是班数,和N为观察次数。

    HWKN

    HW分别对应于图像的高度和宽度,K是班数,和N为观察次数。

    [3 4 2 1]

    如果输出尺寸的大小不是2或4,NetworkFunctionName指定输入参数“OutputDataPermutation”作为“没有”

    onnx.操作符importONNXFunction万博1manbetx支持

    importONNXFunction万博1manbetx支持下列ONNX操作符,但有一些限制。将这些操作符与支持的操作符进行比较万博1manbetximportONNXNetworkimportONNXLayers用于转换成等效的内置MATLAB层。

    ONNX操作符万博1manbetximportONNXFunction importONNXNetworkimportONNXLayers万博1manbetx
    腹肌 没有

    添加

    是的
    没有
    ArgMax 没有

    AveragePool

    是的

    BatchNormalization

    是的
    没有
    装天花板 没有

    剪辑

    是的
    压缩 没有

    Concat

    是的

    常数

    是的
    ConstantOfShape 没有

    Conv

    是的

    ConvTranspose

    是的
    DepthToSpace 是的

    Div

    是的

    退出

    是的
    平等的 没有
    经验值 没有
    扩大 没有

    是的
    地面 没有
    收集 没有

    Gemm

    是的

    GlobalAveragePool

    是的

    较大

    是的
    Hardmax 没有

    身份

    是的
    如果 没有
    InstanceNormalization 是的

    LeakyRelu

    是的
    没有
    LessOrEqual 没有
    日志 没有
    循环 没有

    LRN

    是的

    LSTM

    是的

    MatMul

    是的

    MaxPool

    是的

    Mul

    是的
    负的 没有
    NonMaxSuppression 没有
    非零 没有
    没有
    OneHot 没有
    没有
    没有
    战俘 没有

    PRELU.

    是的
    RandomUniform 没有
    范围 没有
    互惠 没有
    ReduceMax 没有
    ReduceMean 没有
    ReduceMin 没有
    ReduceProd 没有
    ReduceSum 没有

    线性整流函数(Rectified Linear Unit)

    是的

    重塑

    是的
    调整 是的
    RoiAlign 没有
    没有
    扫描 没有
    分散 没有
    ScatterElements 没有
    SequenceAt 没有
    形状 没有

    乙状结肠

    是的
    没有

    Softmax

    是的
    SpaceToDepth 是的
    分裂 没有
    SplitToSequence 没有
    √6 没有
    挤压 没有

    是的

    总和

    是的

    双曲正切

    是的
    瓷砖 没有
    TopK 没有
    转置 没有
    Unsqueeze 没有
    Upsample 没有
    在哪里 没有

    提示

    • 请参阅每个模型的ONNX文档,了解所需的网络输入预处理。例如,您需要调整大小(使用imresize),重新调节,并将输入图像归一化到使用ImageNet数据集训练的网络(如AlexNet、GoogleNet、ShuffleNet和SqueezeNet)。

    选择功能

    importONNXFunction当您无法使用预先导入预折叠的ONNX网络时很有用importONNXNetwork.如果您想为预先训练的网络生成代码,请使用importONNXLayers.使用。查找并替换生成的占位符层findPlaceholderLayersreplaceLayer,分别。然后,用汇编返回一个DAGNetwork对象。你可以为训练有素的人生成代码DAGNetwork.有关最适合不同场景的导入函数的更多信息,请参见选择“功能导入ONNX预训练网络”

    参考

    [1]开放式神经网络交换https://github.com/onnx/

    [2]onnx.https://onnx.ai/

    介绍了R2020b