gpt4 book ai didi

python - 在 Pytorch 上使用 sigmoid 输出进行交叉熵损失

转载 作者:行者123 更新时间:2023-12-02 02:39:00 25 4
gpt4 key购买 nike

我正在尝试修改 Yolo v1 以处理我的任务,其中每个对象只有 1 个类。 (例如:一个对象不能同时是猫和狗)

由于架构的原因(诸如本地化预测之类的其他输出必须使用回归),因此 sigmoid 被应用于模型的最后一个输出(f.sigmoid(nearly_last_output))。而对于分类,yolo 1 也使用 MSE 作为损失。但据我所知,与我想要的 one-hot 的交叉熵相比,MSE 有时表现不佳。

具体的:GT是这样的:0 0 0 0 1(假设我们总共只有5个类,每个类只有1个类,所以其中只有一个数字1,当然这是本例中为第 5 类)

分类部分的输出模型:0.1 0.1 0.9 0.2 0.1

我发现一些建议使用 nn.BCE/nn.BCEWithLogitsLoss 但我认为我应该在这里要求更正确的信息,因为我不擅长数学,也许我有些地方错了,所以只是要求了解更多信息,并确定我应该正确使用什么?

最佳答案

  1. MSE损失通常用于回归问题。

  2. 对于二元分类,您可以使用 BCEBCEWithLogitsLossBCEWithLogitsLoss 将 sigmoid 和 BCE loss 结合起来,因此如果最后一层应用了 sigmoid,则可以直接使用 BCE

  3. 您的案例中提到的 GT 指的是“多类”分类问题,并且显示的输出并不真正对应于多类分类。因此,在这种情况下,您可以应用 CrossEntropyLoss,它结合了 softmax 和对数损失,适合“多类”分类问题。

关于python - 在 Pytorch 上使用 sigmoid 输出进行交叉熵损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63914849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com