Open jacke121 opened 4 years ago
您好,我只训练一个类别时,训练几个epoch后,就出现了loss nan的情况,减小学习率也不行
发现是这3根loss中有的数据为nan, ciou_loss = ciou_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的ciou_loss,再求平均值 conf_loss = conf_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的conf_loss,再求平均值 prob_loss = prob_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的prob_loss,再求平均值
我把数据加1e-8也不行 pos_loss = respond_bbox (0 - T.log(pred_conf+1e-8)) neg_loss = respond_bgd (0 - T.log(1 - pred_conf+1e-8))
后来:我把为nan的数据过滤掉,结果loss全部为0了
ciou_loss = ciou_loss[(ciou_loss != ciou_loss) == False].sum() # 每个样本单独计算自己的ciou_loss,再求平均值 conf_loss = conf_loss[(conf_loss != conf_loss) == False].sum() # 每个样本单独计算自己的conf_loss,再求平均值 prob_loss = prob_loss[(prob_loss != prob_loss) == False].sum() # 每个样本单独计算自己的prob_loss,再求平均值 请问一下,这个有办法吗?
不介意的话群里找我把数据集发我试试
您好,我只训练一个类别时,训练几个epoch后,就出现了loss nan的情况,减小学习率也不行
发现是这3根loss中有的数据为nan, ciou_loss = ciou_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的ciou_loss,再求平均值 conf_loss = conf_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的conf_loss,再求平均值 prob_loss = prob_loss.sum((1, 2, 3, 4)).mean() # 每个样本单独计算自己的prob_loss,再求平均值
我把数据加1e-8也不行 pos_loss = respond_bbox (0 - T.log(pred_conf+1e-8)) neg_loss = respond_bgd (0 - T.log(1 - pred_conf+1e-8))
后来:我把为nan的数据过滤掉,结果loss全部为0了
ciou_loss = ciou_loss[(ciou_loss != ciou_loss) == False].sum() # 每个样本单独计算自己的ciou_loss,再求平均值 conf_loss = conf_loss[(conf_loss != conf_loss) == False].sum() # 每个样本单独计算自己的conf_loss,再求平均值 prob_loss = prob_loss[(prob_loss != prob_loss) == False].sum() # 每个样本单独计算自己的prob_loss,再求平均值 请问一下,这个有办法吗?