在 Pytorch 中对一个热向量使用交叉熵损失的正确方法

Proper way to use Cross entropy loss with one hot vector in Pytorch

我在网上搜索了很多建议,但我不明白正确的做法。 假设我的模型输出是 4 个神经元,目标标签是 1000 0100 0010 0001。

在tensorflow中,我在末尾添加了一个softmax层,并且model.fit带有CategoricalCrossEntropy。

在 pytorch 中正确的做法是什么?

现在,我所做的(及其工作)是插入我的模型输出,以及目标一个热向量的 torch.argmax()。 例如模型输出为(0.7,0.1,0.1,0.1),目标向量的torch.argmax为0。 我正在激活 nn.CrossEntropyLoss().

这是正确的方法吗?

另一种方法是使用 BCELoss(),这与交叉熵损失相同,只是预期目标向量在 [0,1] 范围内以及输出向量.这只是让您不必执行 torch.argmax() 步骤。