代码之家  ›  专栏  ›  技术社区  ›  aa1

如何在cnn中获得输入和输出频道?

  •  1
  • aa1  · 技术社区  · 6 年前

    我特别关注这里的AlexNet架构: https://github.com/pytorch/vision/blob/master/torchvision/models/alexnet.py

    我对他们如何获得输入和输出通道感到困惑。根据我对Alexnet的阅读,我不知道他们在哪里 输出通道=64 从(作为第二个参数到 Conv2d 函数)。即使 二百五十六 平均分为2个GPU 一百二十八 而不是 六十四 。根据我的假设,3的输入通道最初表示颜色通道。但是,其他的输入和输出通道对我也没有意义。

    有谁能解释一下输入和输出通道是什么吗?

    类AlexNet(nn.模块):

    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 回复  |  直到 6 年前
        1
  •  2
  •   kmario23 Mazdak    6 年前

    这个 3 是输入通道的数目( R , G , B )那 64 是频道数(即 特征映射 )在第一卷积运算的输出中。因此,第一个conv层以彩色(rgb)图像作为输入,应用 11x11 一个跨距为4的内核,并输出 六十四 功能图。

    我同意这和频道数量不同( 96 ,每个gpu 48个)在架构图中(原始alexnet实现的)。

    然而,pytorch并没有实现最初的alexnet架构。相反,它实现了本文中描述的alexnet实现的变体: One weird trick for parallelizing convolutional neural networks .

    此外,参见 cs231n - convolutional networks 有关如何在conv操作后将输入、筛选器、跨距和填充等同于输出的详细信息。


    参见: pytorch/vision/issues/185