【深度学习】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())
相关推荐
亚马逊云开发者3 分钟前
相得益彰:Mem0 记忆框架与亚马逊云科技的企业级 AI 实践
人工智能
龙腾AI白云9 分钟前
具身智能-高层任务规划(High-level Task Planning)
深度学习·数据挖掘
AAA修煤气灶刘哥12 分钟前
Y-Agent Studio :打破 DAG 的“无环”铁律?揭秘有向有环图如何让智能体真正“活”起来
人工智能·低代码·agent
WWZZ202518 分钟前
快速上手大模型:深度学习9(池化层、卷积神经网络1)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
__如果22 分钟前
Surgical Video Understanding LLM
人工智能
吴佳浩22 分钟前
LangChain 入门指南:核心概念与理论框架
人工智能
深圳市快瞳科技有限公司1 小时前
宠物识别丨基于弱监督学习的宠物视频内容自动标注技术实践
人工智能·计算机视觉·目标跟踪
算家计算1 小时前
解决AI任务排队难题:基于Slurm的优先级调度与资源抢占策略配置详解
人工智能·云计算
落叶,听雪1 小时前
权威解读:软件测试报告、中软测试报告、登记测试报告,三者如何区分?
人工智能·科技·软著·软著申请
算家计算1 小时前
黄仁勋马斯克罕见同台!定调AI未来三大关键词:算力、货币失效与泡沫
人工智能·nvidia·资讯