pytorch 交叉熵nn.CrossEntropyLoss()
1.BCELoss和CrossEntropyLoss 区别
https://blog.csdn.net/f156207495/article/details/88874911
BCELoss是针对二分类的,CrossEntropyLoss是针对多分类的:
也就是使用的分类函数不同。二分类使用sigmoid,多分类使用softmax。
sigmoid和softmax都能将数据归一到【0,1】之间的。
1.1 CrossEntropyLoss 例子
https://zhuanlan.zhihu.com/p/98785902
import torch import torch.nn as nn x_input=torch.randn(3,3) print('x_input:\n',x_input) y_target=torch.tensor([1,2,0]) crossentropyloss=nn.CrossEntropyLoss() crossentropyloss_output=crossentropyloss(x_input,y_target) print('crossentropyloss_output:\n',crossentropyloss_output)
输出:
x_input: tensor([[ 1.3600, 2.8027, -0.6250], [-0.3889, 0.8074, -0.5111], [-1.4478, 0.5259, 0.1684]]) crossentropyloss_output: tensor(1.5300)
1.2 BCELoss例子
2.BCEWithLogitsLoss
https://blog.csdn.net/qq_22210253/article/details/85222093
BCEWithLogitsLoss就是把Sigmoid-BCELoss合成一步。