【深度学习】CNN 网络中的参数计算
本文最后更新于135 天前,其中的信息可能已经过时,如有错误请发送邮件到fupcode@outlook.com

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

功能:提取局部特征。

符号含义

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

输出维度:$$H_{\text{out}} = \frac{H_{\text{in}} – K + 2P}{S} + 1, \quad W_{\text{out}} = \frac{W_{\text{in}} – K + 2P}{S} + 1, \quad C_{out}​=N$$ $W$为图片宽度,$H$为图片高度,$C$为图片通道数。

计算时向下取整,可以想象滑动窗口滑到最后一步时,还剩余一部分无法卷积。

same模式:当$P=(K-1)/2$时,$H_{\text{out}}=H_{\text{in}}/S$,结果向上取整,注意此时$K$必须为奇数,$K$也通常为奇数。Pytorch中当$S=1$时可指定padding='same'以保证图片尺寸不变。

参数数量

$$
\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)、图像重建(如去噪)以及语义分割任务中。

符号含义

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

输出维度

$$
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
$$

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

same模式:当$P=(K-1)/2$且$O=S-1$时,$H_{\text{out}}=H_{\text{in}}\times S$,当$S\ne 1$时,以same模式做卷积和反卷积后,图片尺寸可能变化,这是因为卷积时图片尺寸不能整除$S$,此时需要微调$O$.

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

$$
\text{weights} = K \times K \times C_{\text{out}} \times C_{\text{in}}, \quad
\text{bias} = C_{\text{out}}
$$

池化层(Pooling Layer, POOL-K)

  • 功能:降低特征图的尺寸,增强特征的平移不变性。
  • 输出维度:$$H_{\text{out}} = \frac{H_{\text{in}}}{K}, \quad W_{\text{out}} = \frac{W_{\text{in}}}{K}, \quad C_{out}​=C_{in}$$ 同样向下取整。
  • 参数数量:$$\text{weights} = 0, \quad \text{bias} = 0$$

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

  • 功能:将特征图展平后与全连接层的每个神经元相连,用于最终分类或回归。
  • 输出维度:$$\text{Output} = O$$ 根据实际分类需求有关
  • 参数数量:$$\text{weights} = I \times O, \quad \text{bias} = O$$ $\text{weights}$是一个输入到输出的线性变换矩阵,$\text{bias}$是和输出维度相同的偏置。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇