Pytorch tensor判断nan与inf的实现方式
作者:普通攻击往后拉
在pytorch训练中遇到nan或inf值怎么办?本文告诉你常见原因如分母为零、softmax除法等,并教你使用tensor.isnan()和tensor.isinf()结合any()或all()方法快速定位问题,让你的模型训练更稳定
在用torch搭建深度学习模型时
很容易在数据中存在inf与nan的情况,对应的数据类型分别时torch.inf与torch.nan。
大多数情况下:
产生nan数据的原因基本上是出现了分母为0的情况,所以需要检查张量计算过程中是否有除法运算,比如softmax就有除法。
判断一个张量中是否有nan值
torch.isnan(tensor).any()
其中,
tensor.any()方法代表tensor中有一个True则全部都为True,any代表一个都不行;
与之相对tensor.all()表示tensor中全部为True才为True,all代表都行才行。
与之类似,
用tensor.isinf()方法也可以查看有没有无穷数在张量里。
torch.isinf(tensor).any()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
