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有很大区别

相关推荐
紫雾凌寒15 分钟前
解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”
人工智能·python·神经网络·算法·机器学习·卷积神经网络
zhengyawen66626 分钟前
深度学习之图像分类(一)
人工智能·深度学习·分类
不爱学英文的码字机器2 小时前
深度学习的力量:精准肿瘤检测从此不再遥远
人工智能·深度学习
tRNA做科研2 小时前
Pytorch深度学习教程_3_初识pytorch
人工智能·pytorch·深度学习
SylviaW082 小时前
神经网络八股(1)
人工智能·深度学习·神经网络
带娃的IT创业者3 小时前
机器学习实战(9):神经网络基础——从感知机到多层感知机
人工智能·神经网络·机器学习
AAIshangyanxiu3 小时前
从CNN到 Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
pytorch·cnn·卷积神经网络·transformer·遥感影像目标检测
Zhouqi_Hua4 小时前
LLM论文笔记 15: Transformers Can Achieve Length Generalization But Not Robustly
论文阅读·笔记·深度学习·语言模型·自然语言处理
冰淇淋百宝箱5 小时前
长文档处理痛点:GPT-4 Turbo引文提取优化策略与替代方案讨论
人工智能·深度学习·算法
HPC_fac130520678165 小时前
深度学习模型应用场景全解析:CNN、Transformer、BERT、RNN与GAN
rnn·深度学习·机器学习·数据挖掘·cnn·bert·transformer