卷积神经网络卷积后尺寸大小计算

卷积神经网络卷积后尺寸大小计算

  • 1、无填充
    • 1.1 公式1
    • 1.2 示例
  • 2、有填充
    • 2.1.1 公式2
    • 2.1.2 示例
    • 2.2.1 公式3
    • 2.2.2 示例

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} HW=S[0](HK[0])+1=S[1](WK[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 示例

卷积神经网络卷积后尺寸大小计算_第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} HW=S[0](HK[0]+2Pad[0])+1=S[1](WK[1]+2Pad[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 示例

卷积神经网络卷积后尺寸大小计算_第3张图片

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} HW=S[0](HK[0]+Pad[0]+Pad[1])+1=S[1](WK[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表示输出张量的列长

2.2.2 示例

卷积神经网络卷积后尺寸大小计算_第4张图片

你可能感兴趣的:(人工智能,神经网络,pytorch,深度学习)