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合成一步。

 

posted @ 2021-07-02 14:01  lypbendlf  阅读(132)  评论(0编辑  收藏  举报