【深度学习】CrossEntropyLoss需要手动softmax吗?

【深度学习】CrossEntropyLoss需要手动softmax吗?

问题:CrossEntropyLoss需要手动softmax吗?

之前用 pytorch 实现自己的网络时,使用CrossEntropyLoss的时候将网路输出经 softmax激活层后再计算CrossEntropyLoss。

答案:不需要

调用了损失函数CrossEntropyLoss,最后一层是不需要再加softmax函数激活的。

官方文档

官方文档链接:pytorch-crossentropyloss相当于在输入上应用LogSoftmax,然后NLLLoss

代码解释

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

criterion = nn.CrossEntropyLoss()

# 模拟网络输出(未经过softmax)
logits = torch.tensor([[0.2447, 3, 1]], requires_grad=True)
# 模拟目标标签
target = torch.tensor([0])

# 使用Softmax + CrossEntropyLoss计算损失
softmax_layer = nn.Softmax(dim=1)
softmax_output = softmax_layer(logits)
loss_softmax_cross_entropy = criterion(softmax_output, target)
print("softmax + CrossEntropyLoss:", loss_softmax_cross_entropy.item())

# 直接使用CrossEntropyLoss计算损失
loss_cross_entropy = criterion(logits, target)
print("CrossEntropyLoss:", loss_cross_entropy.item())

# 使用LogSoftmax + NLLLoss计算损失
softmax_output = torch.softmax(logits, dim=1)
log_softmax_output = torch.log(softmax_output)
log_softmax_nll = F.nll_loss(log_softmax_output, target)
print("LogSoftmax + NLLLoss:", log_softmax_nll.item())
相关推荐
一点 内容几秒前
智汇前沿,印创未来:2026中国五大专业印刷展会全景洞察与战略导航
大数据·人工智能·物联网
三万棵雪松2 分钟前
【AI小智硬件程序(九)】
c++·人工智能·嵌入式·esp32·ai小智
深圳佛手5 分钟前
未来已来,首款AI手机“豆包手机”问世
人工智能·智能手机
力学与人工智能6 分钟前
博士学位答辩PPT分享 | 基于机器学习的复杂流场预测方法研究
人工智能·机器学习·西北工业大学·航空航天·答辩·博士学位·ppt分享
视觉震撼6 分钟前
为大型语言模型(LLM)自动化知识图谱流水线:2026年手册
人工智能·算法·机器学习
Hi202402178 分钟前
使用星图AI算力平台训练PETRV2-BEV模型
人工智能·自动驾驶·gpu·机器视觉·bev·算力平台
Li emily9 分钟前
如何获取免费加密货币历史数据和实时行情接口
人工智能·api·美股
中科天工10 分钟前
解锁效率革命:智能包装的工业4.0实践
大数据·人工智能·智能
明明如月学长16 分钟前
别再神话 Claude Skills 了:这 12 个“致命”局限性你必须知道
人工智能
aigcapi17 分钟前
GPT API 哪家好?2026 企业级优选,4SAPI(星链引擎)凭四大核心优势领跑
大数据·人工智能·gpt