在用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()