深度学习(15)——label 问题犯大忌

深度学习(15)——label 问题犯大忌

最近在训练训练模型的时候出现了一个问题,前期训练的过程中loss下降,但是后来loss出现上升并且波折的状况,而且自认为检查过数据觉得是没有问题的,但是就是觉得哪里不对劲。今天重新检查了一下label,made,发现一个大问题,自己写label的时候触了大忌,把正样本赋值为0,负样本赋值是1,但是在后面做sigmod后判断的条件是gt(0.5),这显然即使预测是正样本的数据,最终被赋值为1的label。就是如果模型预测的概率值正常处理后和真实的label相同,但是由于使用gt()会让预测的结果和label完全相反。这这这!被自己蠢到了。啊啊啊~
当然如果最后全连接层使用两个神经元,使用softmax那么无妨,因为softmax是根据最后的最大值所对应的交表进行判断的,但是使用一个神经元判断是否,那一定要注意正负样本的问题和最后预测得到的概率值在sigmod后的判断条件。如果使用正样本赋值为0,负样本赋值为1,则判断的时候应该是sigmod后的值小于0.5为1!

full_imgs_path= glob.glob(fr'/home/yangjy/data/full/{
      
      grade}/train/*/*.jpg')
species = ['no','yes']
def get_all_labels(species,img_path):
    species_to_id = dict((c, i) for i, c in enumerate(species))
    all_labels = []
    for img in img_path:
        for i, c in enumerate(species):
            if c in img:
                all_labels.append(i)
    return all_labels,species_to_id

pred = model_con(full_images.to(device), part_images.to(device))
pred_classes = torch.sigmoid(pred).gt(0.5).int()
accu_num += torch.eq(pred_classes.squeeze(1), labels.to(device)).sum()

请添加图片描述
所以大家一定注意!别再像我这样犯大忌!我准备晚一点整一下softmax,和这个不太一样,softmax不会有影响。

猜你喜欢

转载自blog.csdn.net/qq_43368987/article/details/128094301
今日推荐