代码详解
1.从类EfficientNet进入到网络当中,其中列表中的数据是一致的
其中MBConv1后面的数字对应的是倍率因子(exp_ratio),两图内容进行对比是相同的。
2.使用depth_coefficient来修改某一个stage所重复的次数
3.得到累计的blocks的数目,对于b1来说总共有23块结构
4.在这里对inverted_residual_setting残差块中的参数进行设置。其中在i>0的时候,就意味着这一块是这一个stage里面的第二块2,此时将会将其步长设置为1,并且输入通道等于输出通道数,也就是说,在i=0的时候,其输入通道和输出通道是不相同的,在后面都是相同的。
5.将inverted_residual_setting列表赋值之后,变为一个长度为23的列表,因为这里面一共有23个小块,多个小块又组成了stage。
6.图像经过stem_conv之后,从2402403变为22422432的图像,当s==1并且input和output相同的时候才会使用残差连接(所以每一个stage中的第一个block都不会使用残差连接,因为input!=output),这样子保证了图片大小不会发生改变才会进行相加。
7.cnf.expanded_c != cnf.input_c将会使用卷积核为1*1的普通卷积来改变通道数。其中cnf.expanded_c 是由ratio所决定的。如果cnf.expanded_c为1的,那么会执行,如果不是1将不会执行。
8.SE模块由两个Conv2d组成,11的卷积核,且通道数相同代替了全连接层,其实效果相同。之后接卷积核为11的普通卷积来改变通道数。