【深度学习】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())
相关推荐
wordbaby1 小时前
Agent 不够用? 也许你差的不是模型
人工智能
双翌视觉1 小时前
可见光之外的视界,短波红外成像技术能做什么?
人工智能·计算机视觉·视觉检测
m0_547486661 小时前
《人工智能导论:深度学习大模型基础》全套PPT课件2026
人工智能·深度学习·大模型
ZhengEnCi1 小时前
为什么 DeepSeek V4 Flash 可以超过 V4 Pro Preview
人工智能
wordbaby1 小时前
别问实习生,看回执单——Agent 验证层的核心原则
人工智能
fivebliss1 小时前
取算存三步细化及延迟指标解析
人工智能·性能优化
武子康1 小时前
让不同大模型共享一个 Agent:Pi 如何统一 Provider 与 Context Handoff
人工智能
秦先生在广东1 小时前
`agent-skills`:用工程纪律驯化 AI 编程 Agent 的结构化实践
人工智能
月光船幽幽2 小时前
门控函数SHS阈值与调制机制解析
人工智能·python·算法
秦先生在广东2 小时前
Agency-Agents:用结构化「职业操作系统」替代临时 Prompt 的 AI 角色仓库
人工智能