如何在CNN中获取输入和输出通道?

时间:2018-07-04 19:56:58

标签: image-processing filter deep-learning conv-neural-network pytorch

我专门查看这里找到的AlexNet架构: https://github.com/pytorch/vision/blob/master/torchvision/models/alexnet.py

我对它们如何获得输入和输出通道感到困惑。根据我对AlexNet的阅读,我无法弄清楚它们从哪里得到 outputchannels = 64 (作为Conv2d函数的第二个参数)。即使 256 分配在2个GPU上,也应该给出 128 而不是 64 。根据我的假设,输入通道3最初代表颜色通道。但是,其他输入和输出通道对我也没有意义。

有人可以澄清输入和输出通道是什么吗?

类AlexNet(nn.Module):

def __init__(self, num_classes=1000):
    super(AlexNet, self).__init__()
    self.features = nn.Sequential(
        nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2), #why 64?
        nn.ReLU(inplace=True),
        nn.MaxPool2d(kernel_size=3, stride=2),
        nn.Conv2d(64, 192, kernel_size=5, padding=2),
        nn.ReLU(inplace=True),
        nn.MaxPool2d(kernel_size=3, stride=2),
        nn.Conv2d(192, 384, kernel_size=3, padding=1),
        nn.ReLU(inplace=True),
        nn.Conv2d(384, 256, kernel_size=3, padding=1),
        nn.ReLU(inplace=True),
        nn.Conv2d(256, 256, kernel_size=3, padding=1),
        nn.ReLU(inplace=True),
        nn.MaxPool2d(kernel_size=3, stride=2),

enter image description here

1 个答案:

答案 0 :(得分:2)

3是输入通道的数量(RGB)。 64是第一个卷积运算输出中的通道数(即 feature maps )。因此,第一转换层将彩色(RGB)图像用作输入,应用11x11跨度为4的内核,并输出64特征图。

我同意这与架构图(原始AlexNet实现)中的通道数量(每个GPU中的96,每个通道48个)不同。

但是,PyTorch没有实现原始的Alexnet体系结构。相反,它实现了本文所述的AlexNet实现的变体:One weird trick for parallelizing convolutional neural networks

另外,请参见cs231n - convolutional networks,了解有关在conv操作之后输入,过滤器,步幅和填充与输出相等的更多详细信息。


P.S:请参见pytorch/vision/issues/185