1
resposta

[Projeto] No script Treino-do-zero.ipynb implementamos a arquitetura da LeNet 5, com base na tabela que descreve as camadas que compõem a rede

import torch.nn as nn

vgg11 = nn.Sequential(
    # Bloco 1: Entrada 224x224x3 -> Saída 112x112x64
    nn.Conv2d(3, 64, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),

    # Bloco 2: Saída 56x56x128
    nn.Conv2d(64, 128, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),

    # Bloco 3: Saída 28x28x256 (Duas convoluções)
    nn.Conv2d(128, 256, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.Conv2d(256, 256, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),

    # Bloco 4: Saída 14x14x512 (Duas convoluções)
    nn.Conv2d(256, 512, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.Conv2d(512, 512, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),

    # Bloco 5: Saída 7x7x512 (Duas convoluções)
    nn.Conv2d(512, 512, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.Conv2d(512, 512, kernel_size=3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),

    # Cabeça de Classificação (Classifier)
    nn.Flatten(),
    nn.Linear(512 * 7 * 7, 4096),
    nn.ReLU(),
    nn.Linear(4096, 4096),
    nn.ReLU(),
    nn.Linear(4096, 10), # Ex: 10 classes para CIFAR-10
    nn.Softmax(dim=-1)
)
1 resposta

Oi, Moacir! Como vai?

Agradeço por compartilhar.

Gostei bastante da forma como você estruturou os blocos da VGG11 usando nn.Sequential. A organização por blocos com comentários mostrando as dimensões facilita muito o entendimento da arquitetura, principalmente ao comparar com modelos clássicos como a LeNet. Isso mostra atenção aos detalhes do fluxo dos dados na rede.

Você pode usar nn.Dropout na parte totalmente conectada para ajudar a evitar overfitting.


import torch.nn as nn

modelo = nn.Sequential(
    nn.Linear(512, 256),
    nn.ReLU(),
    nn.Dropout(0.5),
    nn.Linear(256, 10)
)

Esse código adiciona uma camada de dropout que desativa aleatoriamente neurônios durante o treino, ajudando o modelo a generalizar melhor.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!