Pytorch中分类回归常用的损失和优化器

Pytorch中分类回归常用的损失和优化器

在机器学习和深度学习中,分类任务和预测任务(回归任务)有不同的常用损失函数和优化器。下面将详细介绍这些常用的损失函数和优化器。

分类任务

1. 损失函数

  • 交叉熵损失(Cross-Entropy Loss)

    • 适用场景:多分类任务。
    • 实现nn.CrossEntropyLoss() 在 PyTorch 中自动计算 softmax 和交叉熵。
    criterion = nn.CrossEntropyLoss()
    
  • 二元交叉熵损失(Binary Cross-Entropy Loss)

    • 适用场景:二分类任务。
    • 实现nn.BCELoss() 需要配合 sigmoid 激活函数,nn.BCEWithLogitsLoss() 将 sigmoid 和二元交叉熵计算合二为一。
    criterion = nn.BCEWithLogitsLoss()
    
  • 稀疏分类交叉熵损失(Sparse Categorical Cross-Entropy Loss)

    • 适用场景:多分类任务,标签为整数索引而非 one-hot 编码。
    • 实现:在 TensorFlow 中通常使用 tf.keras.losses.SparseCategoricalCrossentropy()
    from tensorflow.keras.losses import SparseCategoricalCrossentropy
    criterion = SparseCategoricalCrossentropy(from_logits=True)
    

2. 优化器

  • 随机梯度下降(SGD)

    • 优点:简单易用,适用于一般的优化问题。
    • 实现optim.SGD()
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    
  • 自适应矩估计(Adam)

    • 优点:适应性学习率,通常能快速收敛,适用于大多数任务。
    • 实现optim.Adam()
    optimizer = optim.Adam(model.parameters(), lr=0.001)
    
  • 均方根传播(RMSprop)

    • 优点:适用于处理非平稳目标问题。
    • 实现optim.RMSprop()
    optimizer = optim.RMSprop(model.parameters(), lr=0.001)
    

回归任务

1. 损失函数

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

    • 适用场景:回归任务。
    • 实现nn.MSELoss()
    criterion = nn.MSELoss()
    
  • 平均绝对误差(Mean Absolute Error, MAE)

    • 适用场景:回归任务。
    • 实现:在 PyTorch 中通常需要自定义实现。
    class MAELoss(nn.Module):
        def __init__(self):
            super(MAELoss, self).__init__()
    
        def forward(self, output, target):
            return torch.mean(torch.abs(output - target))
            
    criterion = MAELoss()
    
  • Huber 损失

    • 优点:对异常值更鲁棒,是 MSE 和 MAE 的折中。
    • 实现nn.SmoothL1Loss()
    criterion = nn.SmoothL1Loss()
    

2. 优化器

  • 随机梯度下降(SGD)

    • 优点:简单易用,适用于一般的优化问题。
    • 实现optim.SGD()
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
    
  • 自适应矩估计(Adam)

    • 优点:适应性学习率,通常能快速收敛,适用于大多数任务。
    • 实现optim.Adam()
    optimizer = optim.Adam(model.parameters(), lr=0.001)
    
  • 均方根传播(RMSprop)

    • 优点:适用于处理非平稳目标问题。
    • 实现optim.RMSprop()
    optimizer = optim.RMSprop(model.parameters(), lr=0.001)
    

总结

  • 分类任务通常使用交叉熵损失(针对多分类和二分类任务),优化器可以选择 SGD、Adam 或 RMSprop。
  • 回归任务常用均方误差(MSE)和平均绝对误差(MAE),优化器也可以选择 SGD、Adam 或 RMSprop。

根据任务的具体需求和模型的表现,可以尝试不同的损失函数和优化器,选择最合适的组合。

相关推荐

  1. Pytorch分类回归常用损失优化

    2024-07-10 22:40:02       30 阅读
  2. 深度学习损失函数网络优化方法

    2024-07-10 22:40:02       18 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 22:40:02       100 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 22:40:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 22:40:02       90 阅读
  4. Python语言-面向对象

    2024-07-10 22:40:02       98 阅读

热门阅读

  1. 【Rust】Cargo介绍

    2024-07-10 22:40:02       28 阅读
  2. 搭建Spring Cloud项目思路

    2024-07-10 22:40:02       27 阅读
  3. C语言从头学32——字符串数组

    2024-07-10 22:40:02       31 阅读
  4. 7. 有奖猜谜

    2024-07-10 22:40:02       26 阅读
  5. 关于redis的运维面试题-2

    2024-07-10 22:40:02       23 阅读
  6. socketserver和WSGI服务端实现教程

    2024-07-10 22:40:02       28 阅读
  7. 数组常用的方法

    2024-07-10 22:40:02       23 阅读
  8. 设计模式实现思路介绍

    2024-07-10 22:40:02       33 阅读