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.

PyTorch Lightning: la salida del entrenamiento de la CNN con valores complejos arroja NaN después de 1 lote.

He construido una CNN con valores complejos utilizando ComplexPyTorch, donde las capas están envueltas en un torch.ModuleList. Cuando ejecuto la red, pasa correctamente la comprobación de validación y 1 lote del entrenamiento, pero luego mi pérdida devuelve NaNs. Al registrar los gradientes en on_after_backward, se muestran NaNs inmediatamente. ¿Alguien tiene alguna sugerencia de cómo puedo solucionar este problema?

Tengo una versión de la red con valores reales donde no utilizo ComplexPyTorch y todo funciona bien, así que no puedo evitar sentir que durante el paso de retropropagación de la red hay un problema con mis capas estando en un torch.ModuleList. Además, codifiqué la red sin un torch.ModuleList y tampoco tuve este problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté relacionado con el uso de torch.ModuleList. Una posible solución es verificar si los gradientes son realmente NaNs agregando algunas instrucciones de impresión en el paso de retroceso. Como alternativa, puedes intentar re-implementar la red sin usar torch.ModuleList para ver si el problema persiste. Otra sugerencia es intentar reducir el tamaño del lote para ver si eso ayuda a identificar la fuente del problema. Si ninguna de estas sugerencias funciona, puede que valga la pena verificar la versión de ComplexPyTorch que estás utilizando y considerar abrir un problema en su repositorio de Github.

Comments are closed.