美文网首页
(12)实验中一些指标的计算

(12)实验中一些指标的计算

作者: 顽皮的石头7788121 | 来源:发表于2019-02-22 11:25 被阅读0次

        在使用深度学习方法进行学习任务的过程中,经常需要输出一些指标来判断学习的情况,并通过tensorboard等工具进行可视化展示。

        常见的需要查看的内容有学习率、损失变化情况(分为在训练集和验证集上的损失)、准确率(在训练集和验证集上的损失),灵敏度,特异度,查准率和查全率等。这里将这些指标的代码获取方法进行总结,方便以后使用。

    (1)深度学习中的输出结果和标签

            score = model(val_input) #得到模型输出结果 

            probability = t.nn.functional.softmax(score,dim=1) #通过 softmax 函数将输出结果归一化到0-1之间

            loss = loss_func(probability, val_label)# 计算模型的损失 

            这里的probability 基本是浮点型的小数。

            使用probablity 和标签可以画出相应的ROC曲线 

            画图方法见https://www.jianshu.com/p/0daccdb80a62

    (2)准确率

            train_acc =0

            val_num =1

            _, predicted = torch.max(probability,1)#返回输入Tensor中每行的最大值,并转换成指定的dim(维度)

            train_correct = (predicted == val_label).sum()#统计预测结果和标签一致的数目

            train_acc += train_correct.item()

            accuracy = train_acc/val_num

    (3)灵敏度、特异度、查准率、查全率

            TP =0 #(真阳性)被正确诊断为患病的病人。

            TN =0 # (真阴性)被正确诊断为健康的健康人。

            FP =0 #(假阳性)被错误诊断为患病的健康人。

            FN =0 #(假阴性)被错误诊断为健康的病人。

            #计算每次迭代过程中的值并叠加

            TP += (val_label[predicted==1]==1).type(torch.cuda.FloatTensor).sum()

            TN += (val_label[predicted==0]==0).type(torch.cuda.FloatTensor).sum()

            FP += (val_label[predicted ==1] ==0).type(torch.cuda.FloatTensor).sum()

            FN += (val_label[predicted ==0] ==1).type(torch.cuda.FloatTensor).sum()

            print("敏感度为:")

            print(TP/(TP + FN))

            print("特异度为:")

            print(TN/(TN + FP))

            print("查准率为:")

    print( TP/(TP + FP))

    print("查全率为:")

    print(TP/(TP + FN))

            

    相关文章

      网友评论

          本文标题:(12)实验中一些指标的计算

          本文链接:https://www.haomeiwen.com/subject/ddvsyqtx.html