Red de conocimiento informático - Problemas con los teléfonos móviles - Utilizar torch.no_grad()

Utilizar torch.no_grad()

Antes de discutir el uso de torch.no_grad(), comencemos con require_grad

En pytorch, los tensores tienen un parámetro require_grad que, si se establece en True, se exporta automáticamente durante la retropropagación. El atributo require_grad de un tensor por defecto es "falso". Si el require_grad de un nodo (variable de hoja: tensor creado por usted mismo) se establece en "true", entonces el require_grad de todos los nodos que dependen de él debe ser "true" ( incluso si otras dependencias del tensor require_grad = "false")

Los tensores tienen un parámetro require_grad, si se establece en "true", la retropropagación derivará automáticamente para ese tensor. Falso)

Primero, tenga en cuenta que este uso se ha eliminado, pero aún es necesario explicar qué hace torch.no_grad para ilustrar este punto. En versiones anteriores, los tensores (o variables, en versiones anteriores, los tensores se convertirán en variables, esta función también se ha abandonado, solo use tensores directamente) también tiene un parámetro volátil, si un tensor volátil = Verdadero para una cantidad, entonces todos los tensores que dependen de él serán Verdaderos y la retropropagación no será autotransitiva, lo que ahorrará mucha memoria.

Dado que un tensor tiene require_grad y volatile, ¿qué sucede cuando estas dos configuraciones de parámetros entran en conflicto entre sí? volatile = True tiene prioridad sobre require_grad, lo que significa que cuando volatile = True, independientemente de require_grad, ni True ni False realizará retropropagación. volatile mejora la velocidad y ahorra la mitad de la memoria de video ya que no requiere guardar gradientes. (El valor predeterminado de volatile es Falso, por lo que si la retropropagación ocurre automáticamente depende de require_grad)

con torch.no_grad

Como se mencionó anteriormente, volatile ha quedado obsoleto y se reemplazó con With torch. no_grad, es similar a volátil en el sentido de que no se deriva automáticamente incluso si una tupla de tuplas se ha propagado hacia atrás. Similar a volátil, incluso si el tensor (llamado x) tiene requisitos_grad = True, el nuevo tensor (llamado w-escalar) obtenido de x tendrá requisitos_grad Falso y grad_fn es Ninguno, es decir, no se derivará para w grad_fn:/ weixin_43178406/article/details/89517008