PyTorch中CrossEntropyLoss、BCELoss、BCEWithLogitsLoss的理解

import torch

predict =torch.Tensor([[0.5796,0.4403,0.9087],[-1.5673,-0.3150,1.6660]])

#predict =torch.Tensor([[0.5796,0.4403],[-1.5673,-0.3150]])

print(predict)

target =torch.tensor([0,2])

target_bce =torch.Tensor([[1,0,0],[0,0,1]])

ce_loss=torch.nn.CrossEntropyLoss()

soft_max=torch.nn.Softmax(dim=-1)

sig_max=torch.nn.Sigmoid()

soft_out=soft_max(predict)

sig_out=sig_max(predict)

bce_loss=torch.nn.BCELoss()

bce_loss1=torch.nn.BCEWithLogitsLoss()

print(ce_loss(predict,target))

print(bce_loss(soft_out,target_bce))

print(bce_loss(sig_out,target_bce))

print(bce_loss1(predict,target_bce))

输出:

#predict:

tensor([[ 0.5796, 0.4403, 0.9087],
[-1.5673, -0.3150, 1.6660]])

#print(ce_loss(predict,target)):

tensor(0.6725)

#print(bce_loss(soft_out,target_bce))
tensor(0.3950)

#print(bce_loss(sig_out,target_bce))

tensor(0.5900)

print(bce_loss1(predict,target_bce))
tensor(0.5900)

结论:

1.sigmoid激活+BCELoss等于BCEWithLogitsLoss

2.BCEWithLogitsLoss和CrossEntropyLoss不一样,但都可以不加激活

3.sigmoid激活+BCELoss和softmax激活+BCELoss有很大区别

相关推荐
孙同学要努力26 分钟前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
丕羽2 小时前
【Pytorch】基本语法
人工智能·pytorch·python
sniper_fandc2 小时前
深度学习基础—循环神经网络的梯度消失与解决
人工智能·rnn·深度学习
weixin_518285053 小时前
深度学习笔记10-多分类
人工智能·笔记·深度学习
阿_旭4 小时前
基于YOLO11/v10/v8/v5深度学习的维修工具检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·qt·ai
YRr YRr4 小时前
深度学习:Cross-attention详解
人工智能·深度学习
阿_旭4 小时前
基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·目标检测·yolo11
算家云5 小时前
如何在算家云搭建Aatrox-Bert-VITS2(音频生成)
人工智能·深度学习·aigc·模型搭建·音频生成·算家云
小言从不摸鱼6 小时前
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
人工智能·深度学习·神经网络·机器学习·自然语言处理·transformer·1024程序员节
湫ccc6 小时前
Bert框架详解(上)
人工智能·深度学习·bert