记一次pytorch训练loss异常的问题
问题描述
使用mmdetection框架训练时,某项loss出现异常大的值,比如1781232349724294.000。这个问题只在多卡训练时才会出现。
解决方法
在确认target和predction没有问题后,发现是在dataset中的数据处理出现了问题。在dataset中的__getitem__函数中,对数据进行了处理,但是在处理时,将数据转换为了numpy格式,而没有将其他dtype转换为float32,导致了数据类型不匹配,从而导致了loss异常。将数据转换为float32后,问题解决。
numpy生成的数据默认为float64,而pytorch默认为float32,所以在处理数据时,需要注意数据类型的转换。