我专门查看此处的 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),
)
最佳答案
3
是输入 channel 数(R
,G
,B
)。 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有关输入、过滤器、步幅和填充如何等同于转换操作后的输出的更多详细信息。
关于image-processing - 如何获取 CNN 中的输入和输出 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180135/