导入ONNX格式的网络作为函数,修改网络参数。
导入pretrainedsimpleenet3fc.onnx.
网络作为函数。simperenet3fc.
是一个简单的卷积神经网络训练的数字图像数据。有关如何创建类似的网络的更多信息simperenet3fc.
, 看创建简单的图像分类网络.
进口simpleenet3fc.onnx.
使用importonnxfunction.
,它返回一个onnxparameters.
包含网络参数的对象。该函数还在包含网络架构的当前文件夹中创建一个新的模型函数。指定模型函数的名称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]
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] commdilationfactor1014:[2×1 dlarray] convpaddated1015:[4×1 dlarray]
网络具有表示三个完全连接的图层的参数。查看卷积层的参数FC_1
那FC_2
,FC_3.
,打开模型功能simplenetFcn
.
向下滚动到函数中的层定义simplenetFcn
.下面的代码显示了层的定义FC_1
那FC_2
,FC_3.
.
%conv:[权重,偏置,阶段,稀释性,填充,dataformat,numdims.fc_1] = prepareConvargs(vars.fc_1_w,vars.fc_1_b,vars.convstride1007,vars.convdilationfactor1008,vars.convpadding1009,1,numdims.relu1001,numdims.fc_1_w);vars.fc_1 = dlconv(vars.relu1001,权重,偏见,'走吧'步,“DilationFactor”,稀释物,'填充',填充,“DataFormat”, dataFormat);%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”,稀释物,'填充',填充,“DataFormat”, dataFormat);%conv:[权重,偏见,阶段,稀释,填充,dataformat,numdims.fc_3] = prepareConvargs(vars.fc_3_w,vars.fc_3_b,vars.convstrive1013,vars.convdilationfactor1014,vars.convpaddation101014,vars.convpaddation1015,1,numdims.fc_2,numdims.fc_3_w);vars.fc_3 = dlconv(vars.fc_2,权重,偏见,'走吧'步,“DilationFactor”,稀释物,'填充',填充,“DataFormat”, dataFormat);
您可以删除完全连接图层的参数FC_2
以降低计算复杂度。在删除中间层之前,请检查上一层的输出尺寸和下一层的输入尺寸参数
.在这种情况下,前一层的输出大小FC_1
是20,然后是后续层的输入大小FC_3.
也是20。
删除图层的参数FC_2
通过使用removeParameter
.
显示更新的可读和非可爱参数。
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]
ANS =.结构体字段:CommonStride1004:[2×1 dlarray] concdilationfactor1005:[2×1 dlarray] convpaddation1006:[4×1 dlarray] commonstride1007:[2×1 dlarray] concdilationfactor1008:[2×1 dlarray] convpaddding1009:[4×1 dlarray] converstride1013:[2×1 dlarray] commdilationfactor1014:[2×1 dlarray] convpaddated1015:[4×1 dlarray]
修改模型函数的体系结构以反映更改参数
因此,您可以使用网络与新参数预测或培训网络。打开模型功能simplenetFcn
.然后,删除完全连接的图层FC_2
,并更改卷积操作的输入数据dlconv
对于层FC_3.
到Vars.fc_1
.
下面的代码显示了图层FC_1
和FC_3.
.
%conv:[权重,偏置,阶段,稀释性,填充,dataformat,numdims.fc_1] = prepareConvargs(vars.fc_1_w,vars.fc_1_b,vars.convstride1007,vars.convdilationfactor1008,vars.convpadding1009,1,numdims.relu1001,numdims.fc_1_w);vars.fc_1 = dlconv(vars.relu1001,权重,偏见,'走吧'步,“DilationFactor”,稀释物,'填充',填充,“DataFormat”, dataFormat);%conv:[权重,偏见,阶段,稀释,填充,dataformat,numdims.fc_3] = prepareConvargs(vars.fc_3_w,vars.fc_3_b,vars.convstrive1013,vars.convdilationfactor1014,vars.convpaddation101014,vars.convpaddation1015,1,numdims.fc_2,numdims.fc_3_w);var。FC_3.= dlconv(Vars.fc_1, weights, bias,'走吧'步,“DilationFactor”,稀释物,'填充',填充,“DataFormat”, dataFormat);