主要内容

addparameter.

添加参数到ONNXParameters目的

    描述

    例子

    params = addParameter (参数个数姓名价值类型添加指定的网络参数姓名价值,类型ONNXParameters目的参数个数.返回的参数个数对象包含输入参数的模型参数参数个数与添加的参数一起,按顺序堆叠。添加参数姓名必须是唯一的,非空的,并且与参数个数

    params = addParameter (参数个数姓名价值类型numdimensions.添加指定的网络参数姓名价值类型,numdimensions.参数个数

    例子

    全部折叠

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

    导入pretrainedsimpleenet3fc.onnx.网络作为一个函数。simplenet3fc.是一个简单的卷积神经网络训练的数字图像数据。有关如何创建类似的网络的更多信息simplenet3fc., 看创建简单的图像分类网络

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

    params = importonnxfunction(“simplenet3fc.onnx”“simplenetFcn”);
    包含导入的ONNX网络的函数已保存到文件simpleenetfcn.m文件中。要了解如何使用此功能,请键入:帮助simplenetfcn。

    显示在培训期间更新的参数(参数个数。可学的)和训练过程中保持不变的参数(params.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]
    params.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_2fc_3.新的层可能会提高分类精度。

    来查看卷积层的参数fc_2fc_3,打开模型功能simplenetFcn

    打开simplenetFcn

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

    %conv:[权重,偏差,步幅,膨胀因子,填充,数据格式,numdim。fc_2] = prepareConvArgs (var。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:[权重,偏见,阶段,稀释性因子,填充,dataformat,numdims.fc_3] = prepareConvargs(vars.fc_3_w,vars.fc_3_b,vars.convstride1013,vars.convdilationfactor1014,vars.convpaddation1014,5,numdims.fc_2,numdims.fc_3_w);vars.fc_3 = dlconv(vars.fc_2,权重,偏见,'走吧'步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);

    命名新图层fc_4,因为每个添加的参数名称必须是唯一的。的addparameter.函数总是顺序地向参数个数。可学的params.nonlearnables.结构。模型函数中各层的顺序simplenetFcn确定网络层执行的顺序。参数的名称和顺序不影响执行顺序。

    添加一个新的完全连接的层fc_4具有相同的参数fc_2

    params = addParameter (params,“fc_4_W”params.Learnables.fc_2_W,“学习”);params = addParameter (params,“fc_4_B”params.Learnables.fc_2_B,“学习”);params = addParameter (params,'fc_4_stride'params.Nonlearnables.ConvStride1010,'非可爱');params = addParameter (params,“fc_4_DilationFactor”params.Nonlearnables.ConvDilationFactor1011,'非可爱');params = addParameter (params,'fc_4_padding'params.Nonlearnables.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_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]fc_4_W: [1×1×20×20 dlarray] fc_4_B: [20×1 dlarray]
    params.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_4_Stride: [2×1 dlarray] fc_4_DilationFactor: [2×1 dlarray] fc_4_Padding: [4×1 dlarray]

    修改模型函数的体系结构以反映更改参数个数因此,您可以使用网络与新参数或培训网络预测。打开模型功能simplenetFcn.然后,添加完全连接的图层fc_4在层之间fc_2fc_3,并更改卷积操作的输入数据dlconv对于第一层fc_3Vars.fc_4

    打开simplenetFcn

    下面的代码显示了新层fc_4在它的位置,以及层数fc_2fc_3

    %conv:[权重,偏差,步幅,膨胀因子,填充,数据格式,numdim。fc_2] = prepareConvArgs (var。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[权重,偏差,步幅,膨胀因子,填充,数据格式,numdim。fc_4] = prepareConvArgs (var。fc_4_W, var。fc_4_B, var。fc_4_Stride, Vars.fc_4_DilationFactor, Vars.fc_4_Padding, 1, NumDims.fc_2, NumDims.fc_4_W); Vars.fc_4 = dlconv(Vars.fc_2, weights, bias,'走吧'步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);%conv:[权重,偏见,阶段,稀释,填充,dataformat,numdims.fc_3] = prepareConvargs(vars.fc_3_w,vars.fc_3_b,vars.convstride1013,vars.convdilationfactor1014,vars.convpaddationfactor1014,vars.convpadding1015,1,numdims.fc_4,numdims.fc_3_w);vars.fc_3 = dlconv(vars.fc_4,权重,偏差,'走吧'步,“DilationFactor”dilationFactor,“填充”填充,“DataFormat”, dataFormat);

    输入参数

    全部折叠

    网络参数,指定为一个ONNXParameters对象。参数个数包含导入的Onnx™模型的网络参数。

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

    例子:'conv2_w'

    例子:'conv2_padding'

    参数的值,指定为数字阵列,字符向量或字符串标量。复制现有网络层(存储在参数个数),复制网络层的参数值。

    例子:params.Learnables.conv1_W

    例子:params.Nonlearnables.conv1_Padding

    数据类型:单身的||字符|细绳

    参数类型,指定为“学习”'非可爱', 或者“状态”

    • 价值“学习”指定网络在训练期间更新的参数(例如,卷积的权重和偏差)。

    • 价值'非可爱'指定在网络训练期间保持不变的参数(例如,填充)。

    • 价值“状态”指定包含在迭代之间的网络记住的信息的参数,并跨多个培训批次更新。

    数据类型:字符|细绳

    每个参数的维数,作为结构指定。numdimensions.包括尾随单例尺寸。

    例子:params.numdimensions.conv1_w

    例子:4.

    输出参数

    全部折叠

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

    介绍了R2020b