Я пытаюсь выучить PyTorch. Но я действительно растерялся из-за формы в полностью связанном слое после свертки и максимального объединения.
Случай 1. Как мы вычисляем число 5408 в nn.Linear
Я думаю, 5408 = 32 *m * m, где 32 взято из nn.Conv2d(3, **32**, kernel_size=7, stride=2)
, но тогда m будет равно 13. Однако откуда взято 13?
simple_model = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=7, stride=2),
nn.ReLU(inplace=True),
Flatten(), # see above for explanation
nn.Linear(5408, 10), # affine layer
)
Случай 2 Как мы получаемчисло 4 * 4 в fc = nn.Linear(64*4*4, 10)
, та же проблема, что и в случае 1. Я не знаю, откуда исходит число 4 ...
# (conv -> batchnorm -> relu -> maxpool) * 3 -> fc
layer1 = nn.Sequential(
nn.Conv2d(3, 16, kernel_size = 5, padding = 2),
nn.BatchNorm2d(16),
nn.ReLU(),
nn.MaxPool2d(2)
)
layer2 = nn.Sequential(
nn.Conv2d(16, 32, kernel_size = 3, padding = 1),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.MaxPool2d(2)
)
layer3 = nn.Sequential(
nn.Conv2d(32, 64, kernel_size = 3, padding = 1),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(2)
)
fc = nn.Linear(64*4*4, 10)