主要内容

removeParameter

删除参数ONNXParameters对象

    描述

    例子

    params = removeParameter(参数个数的名字方法指定的参数的名字ONNXParameters对象参数个数

    例子

    全部折叠

    将ONNX格式的网络导入为函数,并修改网络参数。

    引进经过培训的人员simplenet3fc.onnx网络是一种功能。simplenet3fc是一个简单的卷积神经网络训练数字图像数据。有关如何创建类似的网络的更多信息simplenet3fc,请参阅创建简单的图像分类网络

    进口simplenet3fc.onnx使用importONNXFunction,它返回ONNXParameters对象,该对象包含网络参数。该函数还在包含网络体系结构的当前文件夹中创建一个新的模型函数。指定模型函数的名称为simplenetFcn

    params = importONNXFunction(“simplenet3fc.onnx”“simplenetFcn”);
    包含导入ONNX网络的函数已保存到文件simplenetFcn.m中。要学习如何使用此函数,输入:help simplenetFcn。

    显示训练期间更新的参数(参数个数。可学的)和训练期间保持不变的参数(参数个数。Nonlearnables).

    参数个数。可学的
    ans =带有字段的结构:imageinput_Mean:[1×1 dlarray] conv_W:[5×5×1×20 dlarray] conv_B:[20×1 dlarray] batchnorm_scale:[20×1 dlarray] batchnorm_B:[20×1 dlarray] fc_1_W:[24×24×20×20 dlarray] fc_1_B:[20×1 dlarray] fc_2_W:[1×1×20×20 dlarray] fc_2_B:[20×1 dlarray] fc_3_W:[1×1×20×10 dlarray] fc_3_B:[10×1 dlarray]
    参数个数。Nonlearnables
    ans =带有字段的结构:ConvStride1004:[2×1 dlarray] ConvDilationFactor1005:[2×1 dlarray] ConvPadding1006:[4×1 dlarray] ConvStride1007:[2×1 dlarray] ConvDilationFactor1008:[2×1 dlarray] ConvPadding1009:[4×1 dlarray] ConvStride1010:[2×1 dlarray] ConvDilationFactor1011:[2×1 dlarray] ConvPadding1012:[4×1 dlarray] ConvStride1013:[2×1 dlarray] ConvDilationFactor1014:[2×1 dlarray] ConvPadding1015:[4×1 dlarray]

    网络的参数表示三个完全连接的层。可以看到卷积层的参数fc_1fc_2,fc_3,打开模型函数simplenetFcn

    开放simplenetFcn

    向下滚动到函数中的层定义simplenetFcn.下面的代码显示了层的定义fc_1fc_2,fc_3

    % Conv:[weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.]fc_1] = prepareConvArgs(Vars. fc_1)fc_1_W, var。fc_1_B, var。ConvStride1007, var。ConvDilationFactor1008, var。ConvPadding1009, 1, NumDims。relu1001 NumDims.fc_1_W);Vars.fc_1= dlconv(Vars.relu1001, weights, bias,“步”步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);% Conv:[weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.]fc_2] = prepareConvArgs(Vars. fc_2)fc_2_W, var。fc_2_B, var。ConvStride1010, var。ConvDilationFactor1011, var。ConvPadding1012, 1, NumDims。fc_1 NumDims.fc_2_W);var。fc_2= dlconv(Vars.fc_1, weights, bias,“步”步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);% Conv:[weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.]fc_3] = prepareConvArgs(Vars. fc_3)fc_3_W, var。fc_3_B, var。ConvStride1013, var。ConvDilationFactor1014, var。ConvPadding1015, 1, NumDims。fc_2 NumDims.fc_3_W);var。fc_3= dlconv(Vars.fc_2, weights, bias,“步”步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);

    可以删除全连通层的参数fc_2减少计算复杂度。在删除中间层之前,检查上一层的输出尺寸和后续层的输入尺寸参数个数.在本例中,是前一层的输出大小fc_1是20,后面一层的输入大小fc_3也是20。

    删除层的参数fc_2通过使用removeParameter

    params = removeParameter(params,“fc_2_B”);params = removeParameter(params,“fc_2_W”);params = removeParameter(params,“ConvStride1010”);params = removeParameter(params,“ConvDilationFactor1011”);params = removeParameter(params,“ConvPadding1012”);

    显示更新后的可学习和不可学习参数。

    参数个数。可学的
    ans =带有字段的结构:imageinput_Mean: [1×1 dlarray] conv_W: [5×5×1×20 dlarray] conv_B: [20×1 dlarray] batchnorm_scale: [20×1 dlarray] batchnorm_B: [20×1 dlarray] fc_1_W: [24×24×20×20 dlarray] fc_1_B: [20×1 dlarray] fc_3_W: [1×1×20×10 dlarray] fc_3_B: [10×1 dlarray]
    参数个数。Nonlearnables
    ans =带有字段的结构:ConvStride1004: [2×1 dlarray] ConvDilationFactor1005: [2×1 dlarray] ConvPadding1006: [4×1 dlarray] ConvStride1007: [2×1 dlarray] ConvDilationFactor1008: [2×1 dlarray] ConvPadding1009: [4×1 dlarray] ConvStride1013: [2×1 dlarray] ConvDilationFactor1014: [2×1 dlarray] ConvPadding1015: [4×1 dlarray]

    修改模型函数的体系结构,以反映参数个数因此,你可以使用网络进行预测与新参数或重新训练网络。打开模型函数simplenetFcn.然后,删除全连接层fc_2,改变卷积运算的输入数据dlconv为层fc_3Vars.fc_1

    开放simplenetFcn

    下面的代码显示了层fc_1而且fc_3

    % Conv:[weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.]fc_1] = prepareConvArgs(Vars. fc_1)fc_1_W, var。fc_1_B, var。ConvStride1007, var。ConvDilationFactor1008, var。ConvPadding1009, 1, NumDims。relu1001 NumDims.fc_1_W);Vars.fc_1= dlconv(Vars.relu1001, weights, bias,“步”步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);% Conv:[weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.]fc_3] = prepareConvArgs(Vars. fc_3)fc_3_W, var。fc_3_B, var。ConvStride1013, var。ConvDilationFactor1014, var。ConvPadding1015, 1, NumDims。fc_2 NumDims.fc_3_W);var。fc_3= dlconv(Vars.fc_1, weights, bias,“步”步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);

    输入参数

    全部折叠

    网络参数,用ONNXParameters对象。参数个数包含导入的ONNX™模型的网络参数。

    参数的名称,指定为字符向量或字符串标量。

    例子:“conv2_W”

    例子:“conv2_Padding”

    输出参数

    全部折叠

    网络参数,返回为ONNXParameters对象。参数个数包含由更新的网络参数removeParameter

    版本历史

    在R2020b中引入