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

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

相关推荐
万岳科技系统开发几秒前
教育培训小程序搭建中的AI题库功能解析
人工智能·小程序
是一个Bug1 分钟前
AI Agent 的沙箱是什么?它和 Docker / 虚拟机有什么区别?
人工智能·docker·容器
王小王-1233 分钟前
基于多种机器学习的豆瓣电影分析与可视化预测评估系统
人工智能·机器学习·flask·豆瓣电影·电影评分预测·影评分析·哪吒电影评论分析
宸津-代码粉碎机4 分钟前
Spring AI企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring
大山佬6 分钟前
从 bootloader 到 rootfs:嵌入式 Linux 系统的完整构建与启动链路剖析
人工智能
syc78901237 分钟前
Vibe Coding实战对比:终端迭代与可视化AI IDE的真实开发差异
大数据·ide·人工智能
aaaa954726658 分钟前
多轮实测对比,梳理适配自身开发流的AI编程工具选型心得
人工智能
尘汐筠竹10 分钟前
Day1-2 学习笔记:在 AMD 云环境上部署 Gemma 4 大模型
笔记·学习·datawhale·amdev
AI科技星11 分钟前
第四卷:橡皮泥江湖(拓扑学)――诸同奥义,九同立境贯拓扑
网络·人工智能·线性代数·架构·概率论·学习方法·拓扑学
lunzi_082612 分钟前
【AI 杂谈】AI正在进入“寡头时代“——模型、资本、成本的三重壁垒
人工智能