es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿A qué se refiere “self” en este método de la clase nn.Module derivada de PyTorch?

Estoy siguiendo este tutorial para Pytorch en el enlace “https://jovian.ai/aakashns/03-logistic-regression” y hay una línea de código que no tiene sentido para mí en la clase derivada “MnistModule” en el método “training_step” de la clase “nn.Module”.

La línea es:
out = self(images)

¿Alguien puede explicarme qué está sucediendo aquí? ¿Es esto correcto o no y si esto es una convención a seguir?

Gracias.

Aquí está el fragmento:

class MnistModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = nn.Linear(tamaño_entrada, num_clases)

    def forward(self, xb):
        xb = xb.reshape(-1, 784)
        out = self.linear(xb)
        return out

    def training_step(self, batch):
        images, labels = batch 
        out = self(images)                  # Generar predicciones
        loss = F.cross_entropy(out, labels) # Calcular pérdida
        print(type(out))
        return loss
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La línea de código out = self(images) dentro del método training_step de la clase MnistModule es correcta y sigue la convención.

    En Pytorch, la clase nn.Module es la clase base para todos los módulos de redes neuronales y proporciona los métodos necesarios para definir y entrenar una red neuronal. Uno de estos métodos es el método forward, que es responsable de definir el pase hacia adelante de la red neuronal.

    El método training_step se utiliza para calcular la pérdida para un lote dado de datos de entrada durante el proceso de entrenamiento. Dentro de este método, self(images) llama al método forward de la instancia actual de la clase MnistModule con la entrada images para generar predicciones. Estas predicciones se utilizan luego para calcular la pérdida utilizando la función de pérdida de entropía cruzada (F.cross_entropy(out, labels)).

    Por lo tanto, la línea de código out = self(images) dentro del método training_step es correcta y necesaria para generar predicciones durante el proceso de entrenamiento.

Comments are closed.