一、全连接层参数的计算:
若输入大小为32×32×3的图片,第一层全连接层有500个节点,则地一层全连接网络的个参数量为:
32×32×3×500+500
约为150万个参数,参数量多,导致计算速度缓慢且容易造成过拟合
于是卷积操作便横空出世
二、卷积层参数的计算:
P_num = K_h × K_w × C_in × C_out + C_out (公式1)
或:P_num = (K_h × K_w × C_in + 1) × C_out
其中 :
K_h 和 K_w表示卷积核(过滤器)的大小
C_in表示输入的特征通道数
C_out表示输出的特征通道数
输出节点时,每个卷积核只有一个偏置项,做完每个通道的矩阵点乘,再对每个通道的点乘结果求和,最后再加上偏置项
三、卷积后图像大小的计算:
Out_length = [(In_length - filter_length +1) / stride_length] (方括号表示向上取整,不会打取整的符号)
Out_width = [(In_width - filter_width +1) / stride_width] (方括号表示向上取整,不会打取整的符号)
四、卷积层连接数的计算:
公式:P_num × Out_length × Out_width (公式2)
即参数个数 × 输出图像长 × 输出图像宽
五、举例进行计算:
前一层:大小 6@14×14 卷积核大小:5×5
后一层:16@10×10
卷积层参数个数:根据公式1有:(5×5×6+1)×16
连接数 : 根据公式2有: (5×5×6+1)×16 × 10 ×10
连接数计算:后一层共有 16 × 10 ×10 个节点,每一个节点与前一层的5 × 5 × 6个节点相连接(也就是对应前一层的这些区域),然后每一个节点连接一个偏置项。即为:(5×5×6+1)×16 × 10 ×10,而前面的(5×5×6+1)×16 正好为参数的个数,因此有了公式2
六、深度可分离卷积:
参考博客:https://blog.csdn.net/qq_21997625/article/details/87106152
由于最近笔试经常会被问道深度可分离卷积的参数量和传统卷积的参数量的计算,在这里详细解读一下深度可分离卷积的过程以及参数量的计算:
参数量公式:(K_h × K_w ×1 + 1)× C_in + (1×1× C_in + 1)× C_out
连接数公式:分两部分计算
直接上例子吧:
深度分离卷积示例: 输入图片大小为(6,6,3)
1、原卷积操作用(4,4,3,5)的卷积(卷积核大小为4x4,卷积核通道为3,卷积核数量为5,stride=1,
padding=0
输出的特征尺寸为 : (6-4)/1+1=3, 即输出的特征映射为(3,3,5)
参数个数为:(4×4×3+1)×5 = 245
连接数为:245 × 3 × 3 = 2205
2、对于深度分离卷积,把标准卷积(4,4,3,5)分解为:
深度卷积部分:大小为(4,4,1,3) ,作用在输入的每个通道上,输出特征映射为(3,3,3)
逐点卷积部分:大小为(1,1,3,5),作用在深度卷积的输出特征映射上,得到最终输出为(3,3,5)
(1)深度卷积部分
输入有3个通道,对应着有3个大小为(4,4,1) 的深度卷积核,卷积结果共有3个大小为(3,3,1) ,我们按顺序将这卷积按通道排列得到输出卷积结果(3,3,3) 。
深度卷积部分参数为:3 ×(4×4+1)
(2)逐点卷积部分
参数为:(1×1×3 +1)×5 = 20
3、总结:深度可分离卷积也就是将一个(K_h , K_w , C_in ,C_out)的卷积拆分成了先用一个
(K_h , K_w , 1 ,C_in)和一个(1 ,1 , C_in ,C_out)的卷积,在大大减少参数量的情况下精度也没有下降多少。