ComeçarComece gratuitamente

Modelo do PyTorch

Você usará a abordagem OOP para definir a arquitetura do modelo. Lembre-se de que isso requer a configuração de uma classe de modelo e a definição de dois métodos dentro dela:

  • .__init__()na qual você define as camadas que deseja usar;

  • forward(), na qual você define o que acontece com as entradas do modelo depois que ele as recebe; é aqui que você passa as entradas por camadas predefinidas.

Vamos criar um modelo com três camadas lineares e ativações de ReLU. Após a última camada linear, você precisa de uma ativação sigmoide, que é adequada para tarefas de classificação binária, como o nosso problema de previsão de potabilidade da água. Aqui está o modelo definido usando nn.Sequential(), com o qual você talvez esteja mais familiarizado:

net = nn.Sequential(

  nn.Linear(9, 16),

  nn.ReLU(),

  nn.Linear(16, 8),

  nn.ReLU(),

  nn.Linear(8, 1),

  nn.Sigmoid(),

)

Vamos reescrever esse modelo como uma classe!

Este exercício faz parte do curso

Aprendizagem profunda intermediária com PyTorch

Ver Curso

Instruções de exercício

  • No método .__init__(), defina as três camadas lineares com dimensões correspondentes à definição de modelo fornecida e atribua-as a self.fc1, self.fc2 e self.fc3, respectivamente.
  • No método forward(), passe a entrada do modelo x por todas as camadas, lembrando-se de adicionar ativações em cima delas, da mesma forma como já foi feito para a primeira camada.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        # Define the three linear layers
        self.fc1 = ____
        self.fc2 = ____
        self.fc3 = ____
        
    def forward(self, x):
        # Pass x through linear layers adding activations
        x = nn.functional.relu(self.fc1(x))
        x = ____
        x = ____
        return x
Editar e executar código