【问题标题】:Confusion about the output channels of convolution neural network卷积神经网络输出通道的困惑
【发布时间】:2021-06-07 09:07:21
【问题描述】:
我对卷积神经网络中的多通道场景感到困惑。
假设我有一个 10(width) * 5(height) * 6(channels) 图像,我将其输入到默认的二维卷积层,其中 stride=1 和 padding=0 期望输出为 8(width) * 3(height) * 16(channels)。
我知道内核的大小是3(width) * 3(height),但我不知道到底有多少个内核,以及如何应用于输入数据以提供最后 16 个通道。
有人可以帮帮我。
【问题讨论】:
标签:
deep-learning
pytorch
convolution
【解决方案1】:
2D 卷积层的每个输入通道、每个输出通道都包含一个内核。所以在你的情况下,这将是6*16=96 内核。对于 3x3 内核,这对应于 3*3*96 = 864 参数。
>>> import torch
>>> conv = torch.nn.Conv2d(6, 16, (3, 3))
>>> torch.numel(conv.weight)
864
对于一张图像,每个输入通道首先应用一个内核。在您的情况下,这会产生 6 个特征图,它们加在一起(+ 可能的偏差)以形成输出通道的 1 个。然后,重复 15 次,形成其他 15 个输出通道。