欢迎访问宙启技术站
智能推送

如何在torch.nn.modules中使用交叉熵损失函数

发布时间:2024-01-02 02:13:49

在PyTorch的torch.nn.modules中,可以使用交叉熵损失函数来计算分类任务中的损失。交叉熵损失函数常用于多分类问题,通过比较实际标签和预测标签的差异来衡量模型的性能。

首先,需要导入相关的库和类:

import torch
import torch.nn as nn

接下来,创建一个样本:

inputs = torch.tensor([0.5, 0.2, 0.3]) # 输入
targets = torch.tensor([1]) # 实际标签

然后,定义一个模型来进行分类任务:

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.fc = nn.Linear(3, 2) # 全连接层
        
    def forward(self, x):
        x = self.fc(x) # 前向传播
        return x

model = Model()

接下来,在模型的输出上应用一个softmax函数,以获得预测概率:

output = torch.softmax(model(inputs), dim=0) # 预测概率

然后,使用交叉熵损失函数计算损失:

loss_fn = nn.CrossEntropyLoss() # 定义损失函数
loss = loss_fn(output.unsqueeze(0), targets) # 计算损失

最后,根据损失进行更新:

optimizer = torch.optim.SGD(model.parameters(), lr=0.1) # 定义优化器
optimizer.zero_grad() # 清空梯度
loss.backward() # 反向传播计算梯度
optimizer.step() # 更新参数

这是一个基本的使用交叉熵损失函数的例子。在实际应用中,可能需要更复杂的模型、更大的数据集和更多的训练迭代。但是以上的例子可以帮助您理解如何在PyTorch中使用交叉熵损失函数。