¿Cómo utilizar 'torch.no_grad' en PyTorch?

Como Utilizar Torch No Grad En Pytorch



El cálculo de gradientes para las capas de una red neuronal es una característica incorporada del marco PyTorch. Los usuarios pueden medir la conexión entre capas adyacentes cuando se calculan los gradientes en el paso hacia atrás. Sin embargo, esto sí pasa factura al hardware debido a los grandes volúmenes de datos que hay que procesar y, en este caso, el “ antorcha.no_grad El método 'se puede utilizar para detener el cálculo del gradiente cuando sea necesario.

En este blog, discutiremos cómo usar el “ antorcha.no_grad 'Método en PyTorch.

¿Qué es el método 'torch.no_grad' en PyTorch?

El ' antorcha.no_grad El método se utiliza para la gestión del contexto dentro del marco de desarrollo de PyTorch. Su propósito es detener el cálculo de gradientes para la conexión entre capas posteriores del modelo de aprendizaje profundo. La utilidad de este método es que cuando no se requieren gradientes en un modelo en particular, se pueden desactivar para asignar más recursos de hardware para el procesamiento del bucle de entrenamiento del modelo.







¿Cómo utilizar el método “torch.no_grad” en PyTorch?

Los gradientes se calculan dentro del paso hacia atrás en PyTorch. De forma predeterminada, PyTorch tiene activada la diferenciación automática para todos los modelos de aprendizaje automático. La desactivación del cálculo de gradientes es esencial para los desarrolladores que no cuentan con suficientes recursos de procesamiento de hardware.



Siga los pasos a continuación para aprender a utilizar el ' antorcha.no_grad Método para deshabilitar el cálculo de gradientes en PyTorch:







Paso 1: inicie el IDE de Colab

Google Colaboratory es una excelente opción de plataforma para el desarrollo de proyectos utilizando el marco PyTorch debido a sus GPU dedicadas. Ir a la colab sitio web y abre un “ Nuevo cuaderno ' como se muestra:



Paso 2: instalar e importar la biblioteca Torch

Toda la funcionalidad de PyTorch está encapsulada por el ' antorcha ' biblioteca. Su instalación e importación son imprescindibles antes de iniciar los trabajos. El ' !pepita El paquete de instalación de Python se utiliza para instalar bibliotecas y se importa al proyecto mediante el comando ' importar ' dominio:

!pip instalar antorcha
importar antorcha

Paso 3: definir un tensor de PyTorch con un degradado

Agregue un tensor de PyTorch al proyecto usando el botón ' antorcha.tensor() ' método. Luego, dale un gradiente válido usando el botón ' requiere_grad=Verdadero 'Método como se muestra en el siguiente código:

A = antorcha.tensor([5.0], requiere_grad=Verdadero)

Paso 4: utilice el método 'torch.no_grad' para eliminar el degradado

A continuación, elimine el gradiente del tensor previamente definido usando el botón ' antorcha.no_grad ' método:

con antorcha.no_grad():
B = A**2 + 16

El código anterior funciona de la siguiente manera:

  • El ' no_grad() 'El método se utiliza dentro de un' con ' bucle.
  • A cada tensor contenido dentro del bucle se le elimina el gradiente.
  • Por último, defina un cálculo aritmético de muestra utilizando el tensor previamente definido y asígnelo al ' B ”variable como se muestra arriba:

Paso 5: verificar la eliminación del degradado

El último paso es verificar lo que se acaba de hacer. El gradiente del tensor “ A 'Se eliminó y debe verificarse en la salida usando el botón ' imprimir() ' método:

print('Cálculo de gradiente con torch.no_grad: ', A.grad)
print('\nTensor original: ', A)
print('\nMuestra de cálculo aritmético: ', B)

El código anterior funciona de la siguiente manera:

  • El ' graduado 'El método nos da el gradiente del tensor' A ”. No muestra ninguno en el resultado a continuación porque el degradado se eliminó usando el botón ' antorcha.no_grad ' método.
  • El tensor original todavía muestra que tiene su gradiente como se ve desde el ' requiere_grad=Verdadero ”Declaración en la salida.
  • Por último, el cálculo aritmético de muestra muestra el resultado de la ecuación definida anteriormente:

Nota : Puede acceder a nuestro Colab Notebook en este enlace .

Consejo profesional

El ' antorcha.no_grad Este método es ideal cuando no se necesitan gradientes o cuando es necesario reducir la carga de procesamiento en el hardware. Otro uso de este método es durante la inferencia porque el modelo solo se usa para hacer predicciones basadas en datos nuevos. Dado que no implica ningún entrenamiento, tiene mucho sentido simplemente desactivar el cálculo de gradientes.

¡Éxito! Le hemos mostrado cómo utilizar el método 'torch.no_grad' para deshabilitar los gradientes en PyTorch.

Conclusión

Utilizar el ' antorcha.no_grad 'Método en PyTorch definiéndolo dentro de un' con ”bucle y se eliminará el gradiente de todos los tensores contenidos en él. Esto traerá mejoras en las velocidades de procesamiento y evitará la acumulación de gradientes dentro del ciclo de entrenamiento. En este blog, hemos mostrado cómo esto ' antorcha.no_grad El método 'se puede utilizar para deshabilitar los gradientes de los tensores seleccionados en PyTorch.