右侧有目录,可坐电梯直达
问题引入:
我这个计算方法,绝对是最准确的一个,而且卷积层的参数个数跟步长strides、padding是valid还是same都毫无关系,你可以对照着model.summary()后的Param列,一层一层验证过去,我这边举个我自己的例子
计算方法:
输入图像的通道数×卷积核的尺寸×卷积核的个数+偏置(数值上等于卷积核的个数)
举例:
模型搭建
为了方便大家验证,我直接说明下我每一层卷积层的参数情况:
第一层(对应下图的conv2d_1):
输入图像的通道数 | 3 |
卷积核的尺寸 | 11x11 |
卷积核的个数 | 48 |
偏置量(数值上等于卷积核的个数) | 48 |
计算:3x(11x11)x48+48=17472
验证:与生成的模型摘要里显示的Param一致
第二层(对应下图的conv2d_2):
输入图像的通道数 | 48 |
卷积核的尺寸 | 5x5 |
卷积核的个数 | 128 |
偏置量(数值上等于卷积核的个数) | 128 |
计算:48x(5x5)x128+128=153728
验证:与生成的模型摘要里显示的Param一致
第三层、第四层、第五层同理,你们可以自己验证一下,肯定一致
model.summary()生成的模型摘要:
拓展:
我搜过BN层参数的计算方法,基本没见过哪个博文提到过,基本都是在“详解BN”、“BN层有什么用”、……,这边我说一下我的理解,可以用来自己目测Trainable Params
计算方法:输入到该BN层的图像的通道数×4
为什么是乘4,原因(个人理解,如果有错,希望各位评论区指正,一起交流学习):
BN层做批量归一化处理时,应用类似权值共享的策略,把每张特征图当做一个神经元,每张特征图都要学习四个参数:均值、方差、伽马(放缩系数)、贝塔(平移系数)
因为特征图的数量,在数值上与卷积核的个数一致,那在数值上就等于输入到该BN层的图像的通道数。(注意:我的BN层是接在卷积层之后了)