image-processing - 如何获取 CNN 中的输入和输出 channel ?

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

我专门查看此处的 AlexNet 架构: https://github.com/pytorch/vision/blob/master/torchvision/models/alexnet.py

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

谁能解释一下输入和输出 channel 是什么?

class 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

最佳答案

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

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

但是,PyTorch 并未实现原始的 Alexnet 架构。相反,它实现了论文中描述的 AlexNet 实现的变体:One weird trick for parallelizing convolutional neural networks .

另请参阅 cs231n - convolutional networks有关输入、过滤器、步幅和填充如何等同于转换操作后的输出的更多详细信息。


附言:参见pytorch/vision/issues/185

关于image-processing - 如何获取 CNN 中的输入和输出 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180135/

相关文章:

database - 如何每天有效地存储 1B 的新行并有可能进行查询/索引?

opencv - 寻找手部图像中的谷点

matlab - 尺度不变特征变换 (SIFT) 在 Matlab 中的实现

maven-2 - 可以使用 maven 版本插入到过滤的资源文件中吗?

javascript - 为什么原生 JS FILTER 函数的输出会有所不同

javascript - AngularJS:按正则表达式过滤

tensorflow - 使用 GradientTape() 计算 TensorFlow v.2 中的雅可比矩阵

python - 如何使用 ImageGrab.grab().load() 函数或任何其他函数来获取像素更新?

python - 查找 RGB 颜色 channel 的变化-Python

deep-learning - 如何在 PyTorch 中实现时间分布密集 (TDD) 层