【问题标题】:CNN: taking the most confident prediction among manyCNN:在众多预测中做出最自信的预测
【发布时间】:2019-08-09 12:11:44
【问题描述】:

我正在训练一个用于图像分类的 CNN。相同的对象(然后具有相同的标签)在测试集中出现两次(如两个视点)。我想在预测课程时利用这一点。

现在最后一层是Linear 层(PyTorch),我使用交叉熵作为损失函数。我想知道对每个对象进行最自信预测的最佳方法是什么。我应该先计算LogSoftMax 并取概率最高的类(在两个预测数组中),还是应该直接取logits?

【问题讨论】:

    标签: conv-neural-network pytorch


    【解决方案1】:

    由于LogSoftMax 保持顺序,最大的logit 将始终对应于最高的置信度。因此,如果您感兴趣的只是找到最自信类的索引,则无需执行该操作。

    获得最自信类的索引的最简单方法可能是使用torch.argmax

    例如

    batch_size = 5
    num_logits = 10
    y = torch.randn(batch_size, num_logits)
    preds = torch.argmax(y, dim=1)
    

    在这种情况下会导致

    >>> print(preds)
    tensor([9, 7, 2, 4, 6])
    

    【讨论】:

    • 谢谢。好吧,好吧,那就没用了……我还想知道是否有一种方法可以将两个预测数组结合起来,这实际上对提高网络的信心是有意义的。
    • 您通常在推理期间或仅在训练期间有这样的已知配对吗?
    • 我一直都知道这对图像。
    • 那么一种直接的方法是在计算损失函数之前对这些对/元组的 logits 进行平均。有更复杂的方法,但在很多情况下,这往往工作得非常好。在推理期间,您还将平均已知元组的 logits。
    猜你喜欢
    • 2020-11-14
    • 2018-12-13
    • 2018-11-03
    • 2019-04-19
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2020-11-10
    相关资源
    最近更新 更多