在 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()
步骤。
我在网上搜索了很多建议,但我不明白正确的做法。 假设我的模型输出是 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()
步骤。