【问题标题】:Get list of true positives, false positives, false negatives and true negatives with tensorflow使用 tensorflow 获取真阳性、假阳性、假阴性和真阴性列表
【发布时间】:2020-05-19 14:03:04
【问题描述】:

这是我的工作:

  • 我已经注释了“活”细胞的图像(大约 8.000)和“死”细胞的图像(大约 2.000)(+ 800 和 200 用于测试集)
  • 我正在使用 CNN(使用 tensorflow 和 keras)将图像分类为“活”或“死”。
  • 我训练了我的模型:验证损失 = 0.35,召回 = 0.81,准确率 = 0.81。

问题来了:我怎样才能得到分类为“活”或“死”的图像列表,以便我可以检查它们(可能有些图像不在正确的文件夹中?或者模型有特定类型的问题图片?)

如果您有任何线索可以解决这个问题,请告诉我?

请你的。

【问题讨论】:

    标签: python tensorflow keras deep-learning conv-neural-network


    【解决方案1】:

    对于二元分类的情况,您可以获取真实标签向量和预测标签之间的差异。差异向量将包含正确分类的零,-1 表示误报,1 表示误报。然后,您可以例如使用np.where 来查找误报的索引等等。

    要获得误报和误报等的索引,您可以简单地执行以下操作:

    import numpy as np 
    
    real = np.array([1,0,0,1,1,1,1,1])
    predicted = np.array([1,1,0,0,1,1,0,1])
    
    diff = real-predicted
    print('diff: ',diff)
    
    # Correct is 0 
    # FP is -1 
    # FN is 1
    print('Correctly classified: ', np.where(diff == 0)[0])
    print('Incorrectly classified: ', np.where(diff != 0)[0])
    print('False positives: ', np.where(diff == -1)[0])
    print('False negatives: ', np.where(diff == 1)[0])
    

    输出:

    diff:  [ 0 -1  0  1  0  0  1  0]
    Correctly classified:  [0 2 4 5 7]
    Incorrectly classified:  [1 3 6]
    False positives:  [1]
    False negatives:  [3 6]
    

    【讨论】:

    • 你好@Naphat Amundsen!感谢您的快速答复。实际上,我已经设法绘制了我的混淆矩阵。但是,我想知道我的模型分类正确或错误的图像列表(以便我可以直观地检查它们)。
    • 非常抱歉!由于某种原因,我回答的时候头脑发热。我现在已经编辑了代码!
    • @NaphatAmundsen 如何检查多类分类(4 类)?在这种情况下,差异值是多少?
    • @keertikulkarni 我基本上只是循环并针对每个类执行上述过程,然后可能将结果存储在具有形状(n_classes,n_datapoints)的二维 numpy 数组中,然后从中工作。你基本上会有多个 diff 数组。我不知道您要解决的问题,因此它可能不是解决您的问题的最佳设置。您可以提交一个新问题,以便我(或其他人)可以根据您的需要正确地用代码回答您。
    • @NaphatAmundsen 谢谢。我提交了一个新问题。
    猜你喜欢
    • 2016-02-03
    • 2015-09-28
    • 1970-01-01
    • 2021-11-15
    • 2018-04-22
    • 1970-01-01
    • 2021-12-14
    • 2017-06-08
    相关资源
    最近更新 更多