[DL]pytorch中部分损失函数粗解:NLLLoss与CrossEntropyLoss,BCELoss与CrossEntropyLoss,BCELoss与BCEWithLosgitsLoss之间的区别

1、NLLLoss与CrossEntropy之间的区别:

NLLLoss中是先做log-softmax处理后,再取负即可。

CrossEntropyLoss则直接计算损失,内部会自动进行softmax处理。

2、BCELoss与CrossEntropyLoss之间的区别:(交叉熵的计算公式不一样)

BCELoss的计算公式:

CrossEntropyLoss的计算公式:

 

3、BCELoss与BCEWithLogitsLoss之间的区别:

BCELoss:先做sigmoid再做交叉熵,然后先对行求均值,再对所有的均值求一个均值。

BCEWithLogitsLoss:直接做交叉熵和均值处理(函数内部会自动做sigmoid处理)

参考网址:

[1]https://blog.csdn.net/qq_22210253/article/details/85229988

[2]https://zhuanlan.zhihu.com/p/98785902

[3]https://www.jianshu.com/p/0062d04a2782

原文地址:https://www.cnblogs.com/mj-selina/p/13264087.html