【PyTorch笔记 04】F.cross_entropy的使用

torch.nn.functional.cross_entropy是PyTorch中用于计算交叉熵损失的函数,非常适合用于多分类问题。这个函数结合了log_softmax操作和nll_loss(负对数似然损失)的计算,因此输入得分(即模型输出)不需要事先经过softmax处理。

下面是一个使用torch.nn.functional.cross_entropy的示例,展示了如何在一个简单的神经网络模型中应用它来计算损失:

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

# 假设我们有一个简单的模型
class SimpleModel(nn.Module):
    def __init__(self, input_size, num_classes):
        super(SimpleModel, self).__init__()
        self.linear = nn.Linear(input_size, num_classes)
    
    def forward(self, x):
        return self.linear(x)

# 创建模型实例
model = SimpleModel(input_size=10, num_classes=3)

# 模拟一批输入数据和标签
inputs = torch.randn(5, 10)  # 假设批大小为5,输入特征大小为10
labels = torch.tensor([0, 2, 1, 0, 2])  # 真实标签

# 模型前向传播
outputs = model(inputs)

# 计算交叉熵损失
# outputs: torch.Size([5, 3])
# labels: torch.Size([5]), 注意这个参数必须为long型的
loss = F.cross_entropy(outputs, labels)

print("Loss:", loss.item())

在这个示例中:

  • SimpleModel是一个简单的线性模型,其输出大小等于类别数。
  • 我们创建了一批输入inputs和对应的标签labels
  • 模型的输出outputs是直接传递给F.cross_entropy的,不需要额外的softmax层,因为cross_entropy内部已经处理了这部分。
  • labels应该是每个样本的类别索引形式,而不是one-hot编码。
  • F.cross_entropy计算了从模型输出到真实标签的交叉熵损失。

这种方式使得实现多分类问题的模型训练变得简单而直接。

相关推荐
senmuleishi6 分钟前
持续发力嵌入式AI IDE,攻坚大科学装置电源解决方案
ide·人工智能
刘婉晴9 分钟前
【大模型安全】OWASP 大语言模型十大风险
人工智能·安全·语言模型
mlidongfeng11 分钟前
[AI][C++26] SIMD 编程模型思考
开发语言·c++·人工智能
关于不上作者榜就原神启动那件事18 分钟前
从 MDC 到 Agent:我手搓的文档路由协议,在 Spring AI Alibaba 里找到了正式实现
java·人工智能·spring·ai·agent
大模型真好玩21 分钟前
LangChain DeepAgents 速通指南(十二)——一文详解生产级智能体的命令体系和工程设计
人工智能·langchain·agent
m0_5474866622 分钟前
人工智能通识题库及答案2025版 PDF
人工智能
其实防守也摸鱼26 分钟前
HackBar 工具完全指南:信息探测、漏洞验证与安全测试实战
开发语言·人工智能·学习·安全·网络安全·安全威胁分析·安全性测试
ACP广源盛1392462567328 分钟前
Qwen3.8-Max 开源预期下@ACP#企业级终端硬件演进机遇与 PCIe 交换芯片落地分析
大数据·人工智能·分布式·单片机·嵌入式硬件
happyprince28 分钟前
篇3:bitsandbytes-深刻观-哲学与升华
人工智能·算法
测试者家园31 分钟前
Harness由浅入深:CI/CD流水线里的质量门禁怎么设计
软件测试·人工智能·ci/cd·混沌测试·智能化测试·harness·质量门禁