我专门查看这里找到的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),
答案 0 :(得分:2)
3
是输入通道的数量(R
,G
,B
)。 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