如何计算卷积层的参数个数

一般文献中卷积过程多是对一个通道的图像进行卷积, 但实际中图篇是多通道的,卷积核个数也大于1。比如10个卷积核,得到10个feature map, 那么输入图像为RGB三个通道呢,输出就为 30个feature map 吗, 答案肯定不是的。 输出的个数依然是 卷积核的个数,仍然是10个featuremap, 每一层输出feature map 个数 就是该层卷积核的个数。

实际上,卷积操作通过卷积核的个数可以灵活的将数据映射到更高维或更低维。

卷积神经网络

如何计算卷积层的参数个数

多通道多个卷积核

下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个2*2的卷积核,这4个2*2的卷积核上的参数是不一样的,之所以说它是1个卷积核,是因为把它看成了一个4*2*2的卷积核,4代表一开始卷积的通道数,2*2是卷积核的尺寸,实际卷积的时候其实就是4个2*2的卷积核(这四个2*2的卷积核的参数是不同的)分别去卷积对应的4个通道,然后相加,再加上偏置b,注意b对于这四通道而言是共享的,所以b的个数是和最终的featuremap的个数相同的,先将w2忽略,只看w1,那么在通道的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加,再加上偏置b1,然后再取**函数值得到的。 所以最后得到两个feature map, 即输出层的卷积核个数为 feature map 的个数。也就是说

  • 卷积核的个数=最终的featuremap的个数
  • 卷积核的大小=开始进行卷积的通道数×每个通道上进行卷积的二维卷积核的尺寸
  • 参数的个数=卷积核个数×(卷积核大小+1)

    此处就是参数W的个数是4*(2*2)),b(偏置)的个数=卷积核的个数=featuremap的个数。

下图中k代表featuremap的个数,W的大小是(4*2*2)
如何计算卷积层的参数个数
卷积神经网络
如何计算卷积层的参数个数

所以,在上图由4个通道卷积得到2个通道的过程中,参数的数目为4×(2×2)×2+2个,其中4表示4个通道,第一个2*2表示卷积核的大小,第三个2表示featuremap个数,也就是生成的通道数,最后的2代表偏置b的个数。

同理,经典的LeNet中,箭头所处的转换所用的卷积核张量为16*6*10*10,即16个6*10*10的卷积核,卷积核的大小为10*10。 参数的数目为16*(6*10*10+1)个。
如何计算卷积层的参数个数

参考:
https://blog.****.net/dulingtingzi/article/details/79819513