Qué es PyTorch: tensores, diferenciación automática y modelos
Código de PyTorch: backward frente a autograd.grad
Sigue accumulate_grad para distinguir almacenamiento y retorno de derivadas.
Qué aprenderás
- Comparar los contratos
- Localizar la llamada al motor
- Limitar la conclusión
Antes de empezar
- Python y cálculo básicos
- Entorno aislado para ejercicios posteriores
Compara derivadas analíticas y salidas observadas sin ocultar los fallos.
Conclusiones clave
- backward almacena gradientes.
- grad devuelve derivadas.
- Expectativa analítica no significa resultado medido.
Comparar los contratos
backward acumula derivadas en campos grad de las hojas, mientras autograd.grad devuelve las solicitadas. Decide primero dónde debe leer los resultados el siguiente paso del programa.
Con x igual a 3, la derivada del cuadrado debe ser 6. Tras obtenerla mediante autograd.grad, la expectativa para x.grad sigue siendo None.
Localizar la llamada al motor
La ruta ordinaria de grad en el commit fijado usa accumulate_grad=False; backward usa True. Estos argumentos conectan la documentación pública con su entrada de implementación.
La rama del repositorio puede incluir sobrecargas ausentes en el paquete instalado. Registra tanto commit como versión del runtime antes de interpretar una discrepancia como fallo.
Limitar la conclusión
El código siguiente no se ejecutó. Los valores 6 y None se deducen del cálculo y del contrato; una futura ejecución debe registrar las salidas por separado.
Extraer una función Python tampoco sustituye una prueba del motor nativo. Derivadas superiores, productos vectoriales por lotes y diferencias de dispositivo necesitan casos y criterios propios.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Elegir almacenamiento o retorno.
- 2
Revisar acumulación antes de repetir.
- 3
Verificar la versión instalada.
Ejemplo para copiar
import torch
x = torch.tensor(3.0, requires_grad=True)
(g,) = torch.autograd.grad(x*x, x)
print(g, x.grad) # Expectativa: 6 y NonePreguntas frecuentes
¿Por qué x.grad sigue vacío?
grad devuelve la derivada sin acumularla en ese campo.
¿Se probó el motor nativo?
No. Se revisó código y se propuso un ejercicio sin ejecutarlo.
Fuentes
- PyTorch / torch/autograd/__init__.pyFuente verificada 2026-09-23