前言
这里将着重介绍网络的结构构成,不涉及原理讲解。
一.ResNet18结构
层数: 71
连接数: 78
结构M
%添加层分支 %将网络分支添加到层次图中。每个分支均为一个线性层组。 tempLayers = [ imageInputLayer([224 224 3],"Name","data","Normalization","zscore") convolution2dLayer([7 7],64,"Name","conv1","BiasLearnRateFactor",0,"Padding",[3 3 3 3],"Stride",[2 2]) batchNormalizationLayer("Name","bn_conv1") reluLayer("Name","conv1_relu") maxPooling2dLayer([3 3],"Name","pool1","Padding",[1 1 1 1],"Stride",[2 2])]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],64,"Name","res2a_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn2a_branch2a") reluLayer("Name","res2a_branch2a_relu") convolution2dLayer([3 3],64,"Name","res2a_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn2a_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res2a") reluLayer("Name","res2a_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],64,"Name","res2b_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn2b_branch2a") reluLayer("Name","res2b_branch2a_relu") convolution2dLayer([3 3],64,"Name","res2b_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn2b_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res2b") reluLayer("Name","res2b_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],128,"Name","res3a_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1],"Stride",[2 2]) batchNormalizationLayer("Name","bn3a_branch2a") reluLayer("Name","res3a_branch2a_relu") convolution2dLayer([3 3],128,"Name","res3a_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn3a_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],128,"Name","res3a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn3a_branch1")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res3a") reluLayer("Name","res3a_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],128,"Name","res3b_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn3b_branch2a") reluLayer("Name","res3b_branch2a_relu") convolution2dLayer([3 3],128,"Name","res3b_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn3b_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res3b") reluLayer("Name","res3b_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],256,"Name","res4a_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1],"Stride",[2 2]) batchNormalizationLayer("Name","bn4a_branch2a") reluLayer("Name","res4a_branch2a_relu") convolution2dLayer([3 3],256,"Name","res4a_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn4a_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn4a_branch1")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res4a") reluLayer("Name","res4a_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],256,"Name","res4b_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn4b_branch2a") reluLayer("Name","res4b_branch2a_relu") convolution2dLayer([3 3],256,"Name","res4b_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn4b_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res4b") reluLayer("Name","res4b_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],512,"Name","res5a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn5a_branch1")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],512,"Name","res5a_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1],"Stride",[2 2]) batchNormalizationLayer("Name","bn5a_branch2a") reluLayer("Name","res5a_branch2a_relu") convolution2dLayer([3 3],512,"Name","res5a_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn5a_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res5a") reluLayer("Name","res5a_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([3 3],512,"Name","res5b_branch2a","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn5b_branch2a") reluLayer("Name","res5b_branch2a_relu") convolution2dLayer([3 3],512,"Name","res5b_branch2b","BiasLearnRateFactor",0,"Padding",[1 1 1 1]) batchNormalizationLayer("Name","bn5b_branch2b")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","res5b") reluLayer("Name","res5b_relu") globalAveragePooling2dLayer("Name","pool5") fullyConnectedLayer(1000,"Name","fc1000") softmaxLayer("Name","prob") classificationLayer("Name","ClassificationLayer_predictions")]; lgraph = addLayers(lgraph,tempLayers); % 清理辅助函数变量 clear tempLayers; 连接层分支 连接网络的所有分支以创建网络图。 lgraph = connectLayers(lgraph,"pool1","res2a_branch2a"); lgraph = connectLayers(lgraph,"pool1","res2a/in2"); lgraph = connectLayers(lgraph,"bn2a_branch2b","res2a/in1"); lgraph = connectLayers(lgraph,"res2a_relu","res2b_branch2a"); lgraph = connectLayers(lgraph,"res2a_relu","res2b/in2"); lgraph = connectLayers(lgraph,"bn2b_branch2b","res2b/in1"); lgraph = connectLayers(lgraph,"res2b_relu","res3a_branch2a"); lgraph = connectLayers(lgraph,"res2b_relu","res3a_branch1"); lgraph = connectLayers(lgraph,"bn3a_branch1","res3a/in2"); lgraph = connectLayers(lgraph,"bn3a_branch2b","res3a/in1"); lgraph = connectLayers(lgraph,"res3a_relu","res3b_branch2a"); lgraph = connectLayers(lgraph,"res3a_relu","res3b/in2"); lgraph = connectLayers(lgraph,"bn3b_branch2b","res3b/in1"); lgraph = connectLayers(lgraph,"res3b_relu","res4a_branch2a"); lgraph = connectLayers(lgraph,"res3b_relu","res4a_branch1"); lgraph = connectLayers(lgraph,"bn4a_branch1","res4a/in2"); lgraph = connectLayers(lgraph,"bn4a_branch2b","res4a/in1"); lgraph = connectLayers(lgraph,"res4a_relu","res4b_branch2a"); lgraph = connectLayers(lgraph,"res4a_relu","res4b/in2"); lgraph = connectLayers(lgraph,"bn4b_branch2b","res4b/in1"); lgraph = connectLayers(lgraph,"res4b_relu","res5a_branch1"); lgraph = connectLayers(lgraph,"res4b_relu","res5a_branch2a"); lgraph = connectLayers(lgraph,"bn5a_branch1","res5a/in2"); lgraph = connectLayers(lgraph,"bn5a_branch2b","res5a/in1"); lgraph = connectLayers(lgraph,"res5a_relu","res5b_branch2a"); lgraph = connectLayers(lgraph,"res5a_relu","res5b/in2"); lgraph = connectLayers(lgraph,"bn5b_branch2b","res5b/in1"); %绘制层 plot(lgraph);
结构图内部参数计
算图
二.ResNet 50结构
层数: 177
连接数: 192
结构m:
%创建层次图 %创建层次图变量以包含网络层。 lgraph = layerGraph(); %添加层分支 %将网络分支添加到层次图中。每个分支均为一个线性层组。 tempLayers = [ imageInputLayer([224 224 3],"Name","input_1") convolution2dLayer([7 7],64,"Name","conv1","Padding",[3 3 3 3],"Stride",[2 2]) batchNormalizationLayer("Name","bn_conv1","Epsilon",0.001) reluLayer("Name","activation_1_relu") maxPooling2dLayer([3 3],"Name","max_pooling2d_1","Padding",[1 1 1 1],"Stride",[2 2])]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res2a_branch1","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2a_branch1","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],64,"Name","res2a_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2a_branch2a","Epsilon",0.001) reluLayer("Name","activation_2_relu") convolution2dLayer([3 3],64,"Name","res2a_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn2a_branch2b","Epsilon",0.001) reluLayer("Name","activation_3_relu") convolution2dLayer([1 1],256,"Name","res2a_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2a_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_1") reluLayer("Name","activation_4_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],64,"Name","res2b_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2b_branch2a","Epsilon",0.001) reluLayer("Name","activation_5_relu") convolution2dLayer([3 3],64,"Name","res2b_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn2b_branch2b","Epsilon",0.001) reluLayer("Name","activation_6_relu") convolution2dLayer([1 1],256,"Name","res2b_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2b_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_2") reluLayer("Name","activation_7_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],64,"Name","res2c_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2c_branch2a","Epsilon",0.001) reluLayer("Name","activation_8_relu") convolution2dLayer([3 3],64,"Name","res2c_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn2c_branch2b","Epsilon",0.001) reluLayer("Name","activation_9_relu") convolution2dLayer([1 1],256,"Name","res2c_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn2c_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_3") reluLayer("Name","activation_10_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],128,"Name","res3a_branch2a","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn3a_branch2a","Epsilon",0.001) reluLayer("Name","activation_11_relu") convolution2dLayer([3 3],128,"Name","res3a_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn3a_branch2b","Epsilon",0.001) reluLayer("Name","activation_12_relu") convolution2dLayer([1 1],512,"Name","res3a_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3a_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],512,"Name","res3a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn3a_branch1","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_4") reluLayer("Name","activation_13_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],128,"Name","res3b_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3b_branch2a","Epsilon",0.001) reluLayer("Name","activation_14_relu") convolution2dLayer([3 3],128,"Name","res3b_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn3b_branch2b","Epsilon",0.001) reluLayer("Name","activation_15_relu") convolution2dLayer([1 1],512,"Name","res3b_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3b_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_5") reluLayer("Name","activation_16_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],128,"Name","res3c_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3c_branch2a","Epsilon",0.001) reluLayer("Name","activation_17_relu") convolution2dLayer([3 3],128,"Name","res3c_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn3c_branch2b","Epsilon",0.001) reluLayer("Name","activation_18_relu") convolution2dLayer([1 1],512,"Name","res3c_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3c_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_6") reluLayer("Name","activation_19_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],128,"Name","res3d_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3d_branch2a","Epsilon",0.001) reluLayer("Name","activation_20_relu") convolution2dLayer([3 3],128,"Name","res3d_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn3d_branch2b","Epsilon",0.001) reluLayer("Name","activation_21_relu") convolution2dLayer([1 1],512,"Name","res3d_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn3d_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_7") reluLayer("Name","activation_22_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],1024,"Name","res4a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn4a_branch1","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4a_branch2a","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn4a_branch2a","Epsilon",0.001) reluLayer("Name","activation_23_relu") convolution2dLayer([3 3],256,"Name","res4a_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4a_branch2b","Epsilon",0.001) reluLayer("Name","activation_24_relu") convolution2dLayer([1 1],1024,"Name","res4a_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4a_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_8") reluLayer("Name","activation_25_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4b_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4b_branch2a","Epsilon",0.001) reluLayer("Name","activation_26_relu") convolution2dLayer([3 3],256,"Name","res4b_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4b_branch2b","Epsilon",0.001) reluLayer("Name","activation_27_relu") convolution2dLayer([1 1],1024,"Name","res4b_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4b_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_9") reluLayer("Name","activation_28_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4c_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4c_branch2a","Epsilon",0.001) reluLayer("Name","activation_29_relu") convolution2dLayer([3 3],256,"Name","res4c_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4c_branch2b","Epsilon",0.001) reluLayer("Name","activation_30_relu") convolution2dLayer([1 1],1024,"Name","res4c_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4c_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_10") reluLayer("Name","activation_31_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4d_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4d_branch2a","Epsilon",0.001) reluLayer("Name","activation_32_relu") convolution2dLayer([3 3],256,"Name","res4d_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4d_branch2b","Epsilon",0.001) reluLayer("Name","activation_33_relu") convolution2dLayer([1 1],1024,"Name","res4d_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4d_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_11") reluLayer("Name","activation_34_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4e_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4e_branch2a","Epsilon",0.001) reluLayer("Name","activation_35_relu") convolution2dLayer([3 3],256,"Name","res4e_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4e_branch2b","Epsilon",0.001) reluLayer("Name","activation_36_relu") convolution2dLayer([1 1],1024,"Name","res4e_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4e_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_12") reluLayer("Name","activation_37_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],256,"Name","res4f_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4f_branch2a","Epsilon",0.001) reluLayer("Name","activation_38_relu") convolution2dLayer([3 3],256,"Name","res4f_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn4f_branch2b","Epsilon",0.001) reluLayer("Name","activation_39_relu") convolution2dLayer([1 1],1024,"Name","res4f_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn4f_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_13") reluLayer("Name","activation_40_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],2048,"Name","res5a_branch1","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn5a_branch1","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],512,"Name","res5a_branch2a","BiasLearnRateFactor",0,"Stride",[2 2]) batchNormalizationLayer("Name","bn5a_branch2a","Epsilon",0.001) reluLayer("Name","activation_41_relu") convolution2dLayer([3 3],512,"Name","res5a_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn5a_branch2b","Epsilon",0.001) reluLayer("Name","activation_42_relu") convolution2dLayer([1 1],2048,"Name","res5a_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn5a_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_14") reluLayer("Name","activation_43_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],512,"Name","res5b_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn5b_branch2a","Epsilon",0.001) reluLayer("Name","activation_44_relu") convolution2dLayer([3 3],512,"Name","res5b_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn5b_branch2b","Epsilon",0.001) reluLayer("Name","activation_45_relu") convolution2dLayer([1 1],2048,"Name","res5b_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn5b_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_15") reluLayer("Name","activation_46_relu")]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ convolution2dLayer([1 1],512,"Name","res5c_branch2a","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn5c_branch2a","Epsilon",0.001) reluLayer("Name","activation_47_relu") convolution2dLayer([3 3],512,"Name","res5c_branch2b","BiasLearnRateFactor",0,"Padding","same") batchNormalizationLayer("Name","bn5c_branch2b","Epsilon",0.001) reluLayer("Name","activation_48_relu") convolution2dLayer([1 1],2048,"Name","res5c_branch2c","BiasLearnRateFactor",0) batchNormalizationLayer("Name","bn5c_branch2c","Epsilon",0.001)]; lgraph = addLayers(lgraph,tempLayers); tempLayers = [ additionLayer(2,"Name","add_16") reluLayer("Name","activation_49_relu") globalAveragePooling2dLayer("Name","avg_pool") fullyConnectedLayer(1000,"Name","fc1000","BiasLearnRateFactor",0) softmaxLayer("Name","fc1000_softmax") classificationLayer("Name","ClassificationLayer_fc1000")]; lgraph = addLayers(lgraph,tempLayers); % 清理辅助函数变量 clear tempLayers; %连接层分支 %连接网络的所有分支以创建网络图。 lgraph = connectLayers(lgraph,"max_pooling2d_1","res2a_branch1"); lgraph = connectLayers(lgraph,"max_pooling2d_1","res2a_branch2a"); lgraph = connectLayers(lgraph,"bn2a_branch1","add_1/in2"); lgraph = connectLayers(lgraph,"bn2a_branch2c","add_1/in1"); lgraph = connectLayers(lgraph,"activation_4_relu","res2b_branch2a"); lgraph = connectLayers(lgraph,"activation_4_relu","add_2/in2"); lgraph = connectLayers(lgraph,"bn2b_branch2c","add_2/in1"); lgraph = connectLayers(lgraph,"activation_7_relu","res2c_branch2a"); lgraph = connectLayers(lgraph,"activation_7_relu","add_3/in2"); lgraph = connectLayers(lgraph,"bn2c_branch2c","add_3/in1"); lgraph = connectLayers(lgraph,"activation_10_relu","res3a_branch2a"); lgraph = connectLayers(lgraph,"activation_10_relu","res3a_branch1"); lgraph = connectLayers(lgraph,"bn3a_branch2c","add_4/in1"); lgraph = connectLayers(lgraph,"bn3a_branch1","add_4/in2"); lgraph = connectLayers(lgraph,"activation_13_relu","res3b_branch2a"); lgraph = connectLayers(lgraph,"activation_13_relu","add_5/in2"); lgraph = connectLayers(lgraph,"bn3b_branch2c","add_5/in1"); lgraph = connectLayers(lgraph,"activation_16_relu","res3c_branch2a"); lgraph = connectLayers(lgraph,"activation_16_relu","add_6/in2"); lgraph = connectLayers(lgraph,"bn3c_branch2c","add_6/in1"); lgraph = connectLayers(lgraph,"activation_19_relu","res3d_branch2a"); lgraph = connectLayers(lgraph,"activation_19_relu","add_7/in2"); lgraph = connectLayers(lgraph,"bn3d_branch2c","add_7/in1"); lgraph = connectLayers(lgraph,"activation_22_relu","res4a_branch1"); lgraph = connectLayers(lgraph,"activation_22_relu","res4a_branch2a"); lgraph = connectLayers(lgraph,"bn4a_branch1","add_8/in2"); lgraph = connectLayers(lgraph,"bn4a_branch2c","add_8/in1"); lgraph = connectLayers(lgraph,"activation_25_relu","res4b_branch2a"); lgraph = connectLayers(lgraph,"activation_25_relu","add_9/in2"); lgraph = connectLayers(lgraph,"bn4b_branch2c","add_9/in1"); lgraph = connectLayers(lgraph,"activation_28_relu","res4c_branch2a"); lgraph = connectLayers(lgraph,"activation_28_relu","add_10/in2"); lgraph = connectLayers(lgraph,"bn4c_branch2c","add_10/in1"); lgraph = connectLayers(lgraph,"activation_31_relu","res4d_branch2a"); lgraph = connectLayers(lgraph,"activation_31_relu","add_11/in2"); lgraph = connectLayers(lgraph,"bn4d_branch2c","add_11/in1"); lgraph = connectLayers(lgraph,"activation_34_relu","res4e_branch2a"); lgraph = connectLayers(lgraph,"activation_34_relu","add_12/in2"); lgraph = connectLayers(lgraph,"bn4e_branch2c","add_12/in1"); lgraph = connectLayers(lgraph,"activation_37_relu","res4f_branch2a"); lgraph = connectLayers(lgraph,"activation_37_relu","add_13/in2"); lgraph = connectLayers(lgraph,"bn4f_branch2c","add_13/in1"); lgraph = connectLayers(lgraph,"activation_40_relu","res5a_branch1"); lgraph = connectLayers(lgraph,"activation_40_relu","res5a_branch2a"); lgraph = connectLayers(lgraph,"bn5a_branch1","add_14/in2"); lgraph = connectLayers(lgraph,"bn5a_branch2c","add_14/in1"); lgraph = connectLayers(lgraph,"activation_43_relu","res5b_branch2a"); lgraph = connectLayers(lgraph,"activation_43_relu","add_15/in2"); lgraph = connectLayers(lgraph,"bn5b_branch2c","add_15/in1"); lgraph = connectLayers(lgraph,"activation_46_relu","res5c_branch2a"); lgraph = connectLayers(lgraph,"activation_46_relu","add_16/in2"); lgraph = connectLayers(lgraph,"bn5c_branch2c","add_16/in1"); %绘制层 plot(lgraph);
结构图内部参数计算图