CNN 网络中的参数计算

目录

卷积层(Convolutional Layer, CONV-K-N)

功能:提取局部特征。

符号含义:

  • KK — 滤波器尺寸(Kernel size):卷积滤波器的宽度和高度,通常为正方形,表示为 K×KK \times K。
  • NN — 滤波器个数(Number of filters):卷积层中滤波器的数量,决定了该层的 输出通道数 (Cout=NC_{out} = N)。
  • PP — 填充(Padding):在输入特征图的边缘补充像素,以保证输入和输出的特征图尺寸满足特定需求。
  • SS — 步幅(Stride):卷积核每次移动的步长,定义了滤波器如何滑动覆盖输入特征图。

输出维度:

Hout=⌊Hin−K+2PS+1⌋,Wout=⌊Win−K+2PS+1⌋,Cout=N H_{\text{out}} = \lfloor \frac{H_{\text{in}} - K + 2P}{S} + 1 \rfloor, \quad W_{\text{out}} = \lfloor \frac{W_{\text{in}} - K + 2P}{S} + 1 \rfloor, \quad C_{out} = N

⌊X⌋\lfloor X \rfloor 表示向下取整,可以想象滑动窗口滑到最后一步时,还剩余一部分无法卷积。

same模式:当 P=(K−1)/2P=(K-1)/2 时,

Hout=⌈Hin/S⌉,Wout=⌈Win/S⌉ H_{\text{out}}= \lceil H_{\text{in}}/S \rceil, \quad W_{\text{out}}= \lceil W_{\text{in}}/S \rceil

⌈X⌉\lceil X \rceil 表示向上取整,注意此时 KK 必须为奇数。Pytorch 中当 S=1S=1 时可指定 padding='same' 以保证图片尺寸不变。

参数数量:

weights=K×K×Cout×Cin,bias=Cout \text{weights} = K \times K \times C_{\text{out}} \times C_{\text{in}}, \quad \text{bias} = C_{\text{out}}

反卷积层(Transposed Convolutional Layer, DECONV-K-N)

功能:反卷积层用于在卷积操作的基础上执行空间维度的上采样,恢复特征图的分辨率,同时保留原始的局部特征。它被广泛应用于生成式模型(如 GANs)、图像重建(如去噪)以及语义分割任务中。

符号含义:

  • KK — 滤波器尺寸(Kernel size),与卷积层相同。
  • NN — 滤波器个数,决定反卷积的 输出通道数 (Cout=NC_{out}=N)。
  • PP — 填充(Padding),影响输出的大小。
  • SS — 步幅(Stride),定义输出的特征图增长速率。
  • OO — 输出填充(Output Padding),用于调整上采样结果的尺寸,尤其当目标尺寸不是反卷积层计算出的标准尺寸时。

输出维度:

Hout=S⋅(Hin−1)−2P+K+O,Wout=S⋅(Win−1)−2P+K+O H_{\text{out}} = S \cdot (H_{\text{in}} - 1) - 2P + K + O, \quad W_{\text{out}} = S \cdot (W_{\text{in}} - 1) - 2P + K + O

其中 OO 是输出填充,用于微调输出尺寸。

same模式:当 P=(K−1)/2P=(K-1)/2 且 O=S−1O=S-1 时,

Hout=Hin×S,Wout=Win×S H_{\text{out}}=H_{\text{in}} \times S, \quad W_{\text{out}}=W_{\text{in}} \times S

当 S≠1S\ne 1 时,以 same 模式做卷积和反卷积后,图片尺寸可能变化,这是因为卷积时图片尺寸不能整除 SS,此时需要微调 OO。

参数数量:反卷积层的参数数量与标准卷积层相同:

weights=K×K×Cout×Cin,bias=Cout \text{weights} = K \times K \times C_{\text{out}} \times C_{\text{in}}, \quad \text{bias} = C_{\text{out}}

池化层(Pooling Layer, POOL-K)

  • 功能:降低特征图的尺寸,增强特征的平移不变性。
  • 输出维度:
Hout=⌊Hin/K⌋,Wout=⌊Win/K⌋,Cout=Cin H_{\text{out}} = \lfloor H_{\text{in}}/K \rfloor, \quad W_{\text{out}} = \lfloor W_{\text{in}}/K \rfloor, \quad C_{out} = C_{in}
  • 参数数量:
weights=0,bias=0 \text{weights} = 0, \quad \text{bias} = 0

全连接层(Fully Connected Layer, FC-N)

  • 功能:将特征图展平后与全连接层的每个神经元相连,用于最终分类或回归。
  • 输出维度:
Output=O \text{Output} = O

根据实际分类需求而定。

  • 参数数量:
weights=I×O,bias=O \text{weights} = I \times O, \quad \text{bias} = O

weights\text{weights} 是一个输入到输出的线性变换矩阵,bias\text{bias} 是和输出维度相同的偏置。

发现新版本

当前站点有新版本可用。