pytorch nan
判断方法:
if torch.any(torch.isnan(a)):
解决方法:
loss_t_conf=0
if target[target ==1].size()>torch.Size([0]):
loss_t_conf = self.bce_loss(out[target ==1], target[target ==1])
3.对于回归问题,可能出现了除0 的计算,加一个很小的余项可能可以解决
4.数据本身,是否存在Nan,可以用numpy.any(numpy.isnan(x))检查一下input和target
5.target本身应该是能够被loss函数计算的,比如sigmoid激活函数的target应该大于0,同样的需要检查数据集
这个会产生nan:
import torch
v = 0.5 # 1-0.0001
v1 = v - 0.01
a = torch.FloatTensor([])
b = torch.FloatTensor([])
loss_fn = torch.nn.BCELoss() #