我在寻找Pytorch中的交叉熵损失函数,它类似于Tensorflow中的分类交叉熵损失
我的标签是热编码的,预测是softmax层的输出。例如(每个样本属于一个类):
targets = [0, 0, 1]
predictions = [0.1, 0.2, 0.7]
我想计算softmax值上的(分类)交叉熵,而不是将预测的最大值作为标签,然后计算交叉熵。不幸的是,我没有找到合适的解决方案,因为Pytorch的交叉熵不是我想要的,它的BCELoss也不是我需要的(不是吗?)
有人知道在Pytorch中使用哪个损失函数或如何处理它吗? 非常感谢
我认为Tensorflow的
CategoricalCrossEntropyLoss
等同于PyTorch的CrossEntropyLoss
,但似乎不是。前者接受OHEs,而后者也接受标签。然而,进口差异似乎是:torch.nn.CrossEntropyLoss
是torch.nn.LogSoftmax
和torch.nn.NLLLoss()
的组合:tf.keras.losses.CategoricalCrossEntropyLoss
类似于:你的预测已经通过了sotfmax。因此,只需要应用负对数似然。我可能错了,但根据讨论的内容here,您可以尝试以下方法:
上面的预测向量从一个热编码转换为带有
torch.argmax
的标签如果这是正确的,为什么不首先使用
torch.nn.CrossEntropyLoss
?您只需删除模型最后一层上的softmax并转换目标标签相关问题 更多 >
编程相关推荐