【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计算了从模型输出到真实标签的交叉熵损失。

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

相关推荐
圆圆讲门店3 分钟前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
揽秀亭长5 分钟前
论文降AI率有哪些方法?论文修改流程详解
人工智能·深度学习
爱上纯净的蓝天7 分钟前
只输出选项和概率的模型:判别层的接口契约与阈值工程
人工智能·大模型·llm·模型评估·架构设计
@呱呱爱学习10 分钟前
2026年09月28日 | 呱呱AI日报】GitHub 发布 Copilot WSL 教程,介绍在 Ubuntu 中运行编程 Agent
人工智能·github·copilot
lie..18 分钟前
30天从零开始学AI应用开发(Day 12):像产品一样稳:流式输出、报错重试、花钱控制
开发语言·人工智能·php
镜象科技36 分钟前
AI临床心理大模型:离临床最近的AI长什么样?
人工智能
zhanghaha131437 分钟前
AI Agent_4 Agent工作原理详解:从“会聊天“到“会办事“
人工智能
DeepAgent1 小时前
AI Agent 工程实践(49):一次真实优化——从 Agent v1 到 v2
开发语言·人工智能·agent
小蒋观天下1 小时前
两轮车检测AI摄像头——2026-2030年未来市场规模、增长逻辑与行业天花板
大数据·人工智能·安全·计算机视觉·ai大模型
美狐美颜sdk1 小时前
直播APP接入美颜SDK后出现卡顿怎么办?从性能瓶颈寻找解决方案
android·人工智能·音视频·美颜sdk·直播美颜sdk