ComenzarEmpieza gratis

Modelo PyTorch

Utilizarás el enfoque OOP para definir la arquitectura del modelo. Recuerda que para esto hay que crear una clase modelo y definir dos métodos dentro de ella:

  • .__init__(), en el que defines las capas que quieres utilizar.

  • forward(), en el que defines lo que ocurre con las entradas del modelo una vez que este las recibe; aquí es donde pasas las entradas a través de capas predefinidas.

Construyamos un modelo con tres capas lineales y activaciones ReLU. Después de la última capa lineal, necesitas en su lugar una activación sigmoidea, que viene muy bien para tareas de clasificación binaria como nuestro problema de predicción de la potabilidad del agua. Aquí tienes el modelo que se ha definido mediante nn.Sequential(), con el que quizá estés más familiarizado:

net = nn.Sequential(

  nn.Linear(9, 16),

  nn.ReLU(),

  nn.Linear(16, 8),

  nn.ReLU(),

  nn.Linear(8, 1),

  nn.Sigmoid(),

)

Reescribamos este modelo como una clase.

Este ejercicio forma parte del curso

Aprendizaje profundo intermedio con PyTorch

Ver curso

Instrucciones de ejercicio

  • En el método .__init__(), define las tres capas lineales con las dimensiones correspondientes a la definición proporcionada del modelo y asígnalas a self.fc1, self.fc2 y self.fc3, respectivamente.
  • En el método forward(), pasa la entrada del modelo x por todas las capas y acuérdate de añadir activaciones sobre ellas, de forma similar a como ya se ha hecho para la primera capa.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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 y ejecutar código