深度学习中卷积&池化&全连接层及其参数量和计算量

1.卷积&池化&全连接层介绍

  • valid卷积:不填充padding
  • same卷积:填充padding,使得输出和输入大小一致
  • 多维卷积:过滤器的最后一个数字通道必须和输入图片的通道数匹配,过滤器的多少,决定最后输出图片的通道数
    输出公式(向下取整):
    深度学习中卷积&池化&全连接层及其参数量和计算量_第1张图片
    池化:输入通道数和输出通道数相同,也就是池化的过滤器通道数为1

2.参数量计算

深度学习中卷积&池化&全连接层及其参数量和计算量_第2张图片

【卷积层的参数量】
输入:224 * 224 * 3,64个 3 * 3 * 3 filter,输出feature map 224 * 224 * 64,卷积层的参数量为:(3 * 3 * 3 +1 )* 64=1792
计算公式:参数量=(filter size + 1)* 当前层filter数量
【全连接层的参数量】
VGG-16最后一次池化得到的feature map为 7 * 7 * 512 ,全连接层是将feature map展开成一维向量 1 * 4096 。实际上,我们就是用4096个7 * 7 * 512 的filter去做卷积(可以理解为是一个卷积层)。我们就可以计算第一个FC的参数量 (7 * 7 * 512 + 1 )* 4096=102764544
注:如果准确来计算的话,还需要加上偏置b。

3.计算量

【卷积层的计算量】
输入:224 * 224 * 3,64个 3 * 3 * 3 filter,输出feature map 224 * 224 * 64,future map中的每个一像素点都是3 * 3 * 3的filter在原图上计算一次得到的,所以它的计算量为3 * 3 * 3=27
已经知道单个像素的计算量,那么乘以feature map所有像素,就是一次卷积的计算量:224 * 224 * 64 * 3 * 3 * 3
计算量 = 输出的feature map * 当前层filter_size
这仅仅是单个样本前向传播计算量,实际计算量还应乘以batch size。

【全连接层的计算量】
其实和卷积层计算量的计算方法是一样的。
VGG-16最后一次卷积得到的feature map为7 * 7 * 512 ,全连接层是将feature map展开成一维向量 1 * 4096。则FC层的计算量为 1 * 4096 * 7 * 7 * 512=102760448
通过以上讨论可以发现:我们需要减少网络参数时主要针对全连接层;进行计算优化时,重点放在卷积层。

你可能感兴趣的:(人工智能,人工智能,深度学习)