在本地运行无错的代码放到另外一台更好的设备上运行,在计算损失函数的时候出现如下的情形:
NaN or Inf found in input tensor
以及
Loss:nan(nan)
之后程序的计算指标出现断崖式下跌,梯度爆炸。
网上查询得出可能是
https://blog.csdn.net/ya6543/article/details/125616949
此时考虑,可能是程序包不兼容的问题:
在新设备上安装的包是TensorBoardX
新设备:TensorBoardX == 2.6.1
旧设备:TensorBoardX == 2.4.1
故将新设备上TensorBoardX版本下调至与旧设备一致,程序不再出现梯度爆炸现象。
TensorBoardX 2.6.1的Project description描述如下:
* Expose use_strict_trace parameter in add_graph (#694) * Upgrade to protobuf 4 * Fix git based package versioning * Fix GCS Connection Error #606 (#686)
推测问题出现在加粗行,但修改相关条目可能会衍生更多问题,故目前作版本回调以避免该问题发生。
总结:出现类似问题先检查TensorBoardX版本,将版本与正常运行设备上的版本保持一致。