卷积神经网络卷积后尺寸大小计算
1、无填充
1.1 公式1
H
′
=
(
H
−
K
[
0
]
)
S
[
0
]
+
1
W
’
=
(
W
−
K
[
1
]
)
S
[
1
]
+
1
\begin{aligned}\\ H' &= \frac{(H-K[0])}{S[0]} + 1 \\ \\ W’ &=\frac{(W-K[1])}{S[1]} + 1 \end{aligned}
H′W’=S[0](H−K[0])+1=S[1](W−K[1])+1
其中:
- K K K表示卷积核大小(kernel_size=(kernel_height,kernel_width))
- S S S表示步幅大小(stride_size=(stride_height, stride_width))
- H H H表示输入的张量的行长, H ′ H' H′表示输出张量的行长
- W W W表示输入的张量的列长, W ′ W' W′表示输出张量的列长
ps:这里的除法为向上取整
1.2 示例
2、有填充
2.1.1 公式2
H ′ = ( H − K [ 0 ] + 2 ∗ P a d [ 0 ] ) S [ 0 ] + 1 W ’ = ( W − K [ 1 ] + 2 ∗ P a d [ 1 ] ) S [ 1 ] + 1 \begin{aligned}\\ H' &= \frac{(H-K[0] + 2*Pad[0])}{S[0]} + 1 \\ \\ W’ &=\frac{(W-K[1] + 2*Pad[1])}{S[1]} + 1 \end{aligned} H′W’=S[0](H−K[0]+2∗Pad[0])+1=S[1](W−K[1]+2∗Pad[1])+1
其中:
- K K K表示卷积核大小(kernel_size=(kernel_height,kernel_width))
- S S S表示步幅大小(stride_size=(stride_height, stride_width))
- P a d Pad Pad表示填充大小(padding_size=(up_down, left_right))
- H H H表示输入的张量的行长, H ′ H' H′表示输出张量的行长
- W W W表示输入的张量的列长, W ′ W' W′表示输出张量的列长
ps:pytorch卷积操作中的默认填充方式为(上下、左右)对称0填充
,且具体操作流程为先填充后卷积
。
2.1.2 示例
2.2.1 公式3
H ′ = ( H − K [ 0 ] + P a d [ 0 ] + P a d [ 1 ] ) S [ 0 ] + 1 W ’ = ( W − K [ 1 ] + P a d [ 2 ] + P a d [ 3 ] ) S [ 1 ] + 1 \begin{aligned}\\ H' &= \frac{(H-K[0] + Pad[0] + Pad[1])}{S[0]} + 1 \\ \\ W’ &=\frac{(W-K[1] + Pad[2] + Pad[3])}{S[1]} + 1 \end{aligned} H′W’=S[0](H−K[0]+Pad[0]+Pad[1])+1=S[1](W−K[1]+Pad[2]+Pad[3])+1
其中:
- K K K表示卷积核大小(kernel_size=(kernel_height,kernel_width))
- S S S表示步幅大小(stride_size=(stride_height, stride_width))
- P a d Pad Pad表示填充大小(padding_size=(left, right, up, down))
- H H H表示输入的张量的行长, H ′ H' H′表示输出张量的行长
- W W W表示输入的张量的列长, W ′ W' W′表示输出张量的列长