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.

Operación de tensor y gradiente

Estaba viendo algunos tutoriales en YouTube donde se utilizó el siguiente fragmento de código para explicar derivadas.

Crear tensores.

    x = torch.tensor(3.)

    w = torch.tensor(4., requires_grad=True)

    b = torch.tensor(5., requires_grad=True)

    x, w, b

Operaciones aritméticas

    y = w * x + b

    y

Calcular derivadas

    y.backward()

Mostrar gradientes

    print('dy/dx:', x.grad)

    print('dy/dw:', w.grad)

    print('dy/db:', b.grad)

OUTPUT

dy/dx: None

dy/dw: tensor(3.)

dy/db: tensor(1.)

¿Alguien podría explicarme cómo se obtiene tensor(3.) y tensor(1.) como salida del gradiente? Necesito entender cómo PyTorch realiza esta operación detrás de escena.

Cualquier ayuda sería apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En el código dado, estamos creando tensores x, w y b. x es un valor escalar de 3.0, mientras que w y b son tensores escalares de 4.0 y 5.0 respectivamente, con el argumento requires_grad establecido en True. Esto significa que PyTorch rastreará los gradientes de w y b para calcular las derivadas durante la retropropagación.

    A continuación, definimos un nuevo tensor y realizando operaciones aritméticas multiplicando w y x, luego sumando b. Este tensor y también es un tensor escalar.

    Después de definir y, realizamos la retropropagación llamando a y.backward(). Esto calcula los gradientes de y con respecto a todos los tensores que tienen requires_grad establecido en True, es decir, w y b en nuestro caso.

    Finalmente, imprimimos los gradientes de y con respecto a cada uno de los tensores usando el atributo grad de cada tensor. Aquí, x.grad es None ya que no establecimos requires_grad para el tensor x. Pero, w.grad y b.grad tendrían valores de tensor(3.0) y tensor(1.0) respectivamente.

    Esto se debe a que la derivada de y con respecto a w es x, es decir, 3.0 y la derivada de y con respecto a b es 1.0. Estos valores se obtienen de la regla de la cadena de la diferenciación.

    En resumen, PyTorch calcula los gradientes de los tensores con respecto a un escalar para la retropropagación durante el entrenamiento utilizando la regla de la cadena de la diferenciación.

Comments are closed.