损失函数是深度学习中评估模型预测结果与真实值之间差异的重要工具。在 PyTorch 中,有多种损失函数可供选择,以适应不同的场景和需求。

常用损失函数

  • 均方误差 (Mean Squared Error, MSE)

    • 用于回归问题,计算预测值与真实值之间差的平方的平均值。
    • 公式:[ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 ]
    • 示例代码:MSE_loss = torch.nn.MSELoss()
  • 交叉熵损失 (CrossEntropyLoss)

    • 用于分类问题,通常与 softmax 函数结合使用。
    • 公式:[ CrossEntropyLoss = -\sum_{i=1}^{n} y_i \log(\hat{y}_i) ]
    • 示例代码:CrossEntropyLoss = torch.nn.CrossEntropyLoss()
  • 二元交叉熵损失 (BCELoss)

    • 用于二分类问题,计算预测概率与真实标签之间差异的损失。
    • 公式:[ BCELoss = -\sum_{i=1}^{n} y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) ]
    • 示例代码:BCELoss = torch.nn.BCELoss()

使用损失函数

在使用损失函数时,需要将其作为优化器的一部分传入。以下是一个简单的示例:

import torch
import torch.nn as nn
import torch.optim as optim

# 定义模型
model = nn.Linear(1, 1)

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练数据
x = torch.randn(10, 1)
y = torch.randn(10, 1)

# 训练模型
optimizer.zero_grad()
output = model(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()

print("训练后的模型输出:", output)
print("损失值:", loss.item())

扩展阅读

更多关于 PyTorch 损失函数的细节和使用方法,请参考官方文档:PyTorch 损失函数

[center]Loss_Functions