Мне нужно создать образ моей нейронной сети в презентации, но я немного озадачен тем, какой слой следует за следующим. Моя модель это '' '
Модель класса (torch.nn.Module):
def __init__(self):
super(Model, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.conv3 = nn.Conv2d(20, 30, kernel_size=5)
self.conv3_drop = nn.Dropout2d()
self.fc1 = nn.Linear(30*4*4, 200) # 20*13*13
print(count_parameters(self.fc1))
self.fc2 = nn.Linear(200, 100)
print(count_parameters(self.fc2))
self.fc3 = nn.Linear(100, 50)
print(count_parameters(self.fc3))
self.fc4 = nn.Linear(50, 26)
print(count_parameters(self.fc4))
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = F.relu(F.max_pool2d(self.conv3_drop(self.conv3(x)), 2))
# Reshaping the tensor to BATCH_SIZE. Torch infers this from other dimensions when one of the parameter is -1.
#print(x.shape)
x = x.view(-1, 30*4*4) # 20*13*13 #30*4*4
#print(x.size())
x = F.relu(self.fc1(x))
#print(x.size())
x = F.relu(self.fc2(x))
#print(x.size())
x = F.dropout(x)
#print(x.size())
x = F.relu(self.fc3(x))
#print(x.size())
x = F.dropout(x)
#print(x.size())
x = self.fc4(x)
' '' Я думаю, что структура похожа на Input -> (Conv layer - > maxpool -> ReLu -> Линейный слой) -> (Conv layer -> maxpool -> ReLu -> dropout -> Linear layer) -> (Conv layer -> maxpool -> ReLu -> dropout -> Linear layer) -> Linear layer -> Output \
Может кто-нибудь подтвердить, правильная ли это архитектура или что-то не так в моем понимании