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.
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 usartorch.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 deComplexPyTorch
que estás utilizando y considerar abrir un problema en su repositorio de Github.