Neuclic 2024-10-27 22:04 采纳率: 50%
浏览 9
已结题

卷积后输出结果为什么不是前一个输出通道数和后一个的输出通道数的乘积


 # 第一层卷积:输入通道数为 1,输出通道数为 32,卷积核大小为 5x5,padding 为 2(SAME)
        self.conv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=5, stride=1, padding=2)
        # 第一层池化:最大池化,核大小为 2x2,步长为 2
        self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        
        # 第二层卷积:输入通道数为 32,输出通道数为 64,卷积核大小为 5x5,padding 为 2(SAME)
        self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, stride=1, padding=2)
        # 第二层池化:最大池化,核大小为 2x2,步长为 2
        self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2)

为什么经过第二层卷积后的输出不是141432*64呢?对于32通道的输入,第二层卷积每个卷积核对于一个通道进行卷积会有64种结果,32个通道不应该相乘起来吗?

  • 写回答

1条回答 默认 最新

  • 放松吃羊肉 2024-10-28 01:21
    关注

    对于第二层卷积层,有 in_channels=32 和 out_channels=64,这意味着该层有64个卷积核,每个卷积核的尺寸为32x5x5。而每个输出通道对应一个卷积核,每个卷积核会在所有 32 个输入通道上进行卷积操作,并将结果累加,生成一个输出通道的特征图。最终,这 64 个卷积核会生成 64 个不同的输出特征图。换句话说,每个输出通道并不是单独依赖某一个输入通道,而是通过一个卷积核对所有输入通道进行加权求和的结果。画个图应该会清晰一些:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月27日