【深度学习】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())
相关推荐
guwentian7 小时前
一文搞懂 AI Agent 安全护栏:用 Python 手写工具网关,把越权挡在执行层
人工智能·python·安全
威视锐科技7 小时前
AI-RAN从架构愿景走向空口闭环:三条技术路径与SDR验证方法
人工智能·架构·威视锐·ai-ran
Wang201220137 小时前
我有个13代 i5cpu+16G内存的电脑,没有显卡,请问可以跑哪些模型,入门本地搭建AI用
人工智能
m0_380743877 小时前
API 密钥的工程化管理
人工智能
宋哥转AI7 小时前
深入理解 AI Agent · AGENT #03:从单 Agent 到多 Agent
人工智能·agent·ai编程
Zara_a47 小时前
从异常工单到质量闭环:制造企业 AI 协同平台的设计与实现
人工智能·制造
尤水就下7 小时前
聊聊 Prompt 是怎么一路进化到 Harness 的
前端·人工智能·ai编程
小白的成长路程7 小时前
移动版藏内容,AI爬虫直接跳过
人工智能·爬虫
赛逸会展s7 小时前
2027北京AI健康科技与智慧医疗展6月举办:全周期对接体系保障高转化率
大数据·人工智能·科技
武子康7 小时前
机器人接入 AI 连续语音后,端云架构要改什么?
人工智能·llm·agent