【深度学习】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())
相关推荐
Bright1668几秒前
从零打造 Cursor 平替:基于 VS Code 二开的 AI 编程编辑器 CodexaX
人工智能·开源·编辑器
AI客栈几秒前
AI大模型微服务网关架构下的动态限频与负载均衡设计:生产环境突发故障排查与优化
人工智能
逻辑君几秒前
认知神经科学研究报告【20260087】
人工智能·深度学习·机器学习
A.说学逗唱的Coke3 分钟前
【大模型专题】AIOps + Loop 工程:从智能告警到自愈闭环的实战指南
运维·人工智能·devops
小丶舟5 分钟前
MiMo Code实测:5场景对标Claude Code,3个踩坑与选型指南
数据库·人工智能·数据挖掘
标书客8 分钟前
财政部明确:信用修复后重大违法记录仍会影响投标
人工智能
Black蜡笔小新8 分钟前
零代码私有化自动化AI算法训练服务器DLTM如何破解企业AI落地难题
人工智能·算法·自动化
lally.9 分钟前
思绪思维导图vip注册机成因分析
人工智能·安全架构
Swift社区9 分钟前
AI 接管操作系统:鸿蒙 PC AI Native OS 架构揭秘
人工智能·架构·harmonyos
大模型最新论文速读9 分钟前
TRUST:RL 时保留模型的不确定性,效果提升 8%
论文阅读·人工智能·深度学习·机器学习·自然语言处理