6x6
происходит от высоты и ширины x
после того, как он прошел через ваши свертки и maxpools.
Вот упрощенная версия, где вы можете увидеть, как форма меняется в каждой точке,Это может помочь распечатать формы в их примере, чтобы вы могли точно видеть, как все меняется.
import torch
import torch.nn as nn
import torch.nn.functional as F
conv1 = nn.Conv2d(1, 6, 3)
conv2 = nn.Conv2d(6, 16, 3)
# Making a pretend input similar to theirs.
# We define an input with 1 batch, 1 channel, height 32, width 32
x = torch.ones((1,1,32,32))
# Simulating forward()
x = F.max_pool2d(F.relu(conv1(x)), (2, 2))
print(x.shape) # torch.Size([1, 6, 15, 15]) 1 batch, 6 channels, height 15, width 15
x = F.max_pool2d(F.relu(conv2(x)), 2)
print(x.shape) # torch.Size([1, 16, 6, 6]) 1 batch, 16 channels, height 6, width 6
Затем они сглаживают x
и пропускают его через fc1
, который принимает 16*6*6
и производит 120
выходы.