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

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

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

分类任务

1. 损失函数

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

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

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

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

2. 优化器

  • 随机梯度下降(SGD):

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

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

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

回归任务

1. 损失函数

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

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

    • 适用场景:回归任务。
    • 实现:在 PyTorch 中通常需要自定义实现。
    python 复制代码
    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()。
    python 复制代码
    criterion = nn.SmoothL1Loss()

2. 优化器

  • 随机梯度下降(SGD):

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

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

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

总结

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

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

相关推荐
超级架构师2 分钟前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran
fly-iot16 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
郝学胜-神的一滴20 分钟前
游戏设计:原型与开发 17:数字化系统里的思维体操
人工智能·游戏·游戏程序·游戏策划·游戏设计
腾讯云大数据31 分钟前
腾讯云发布一站式多模态数据处理与模型训推方案,助力Physical AI释放生产力
大数据·人工智能·云计算·腾讯云
GitCode官方1 小时前
从大语言模型到具身智能:百度百舸 LoongForge 入驻 AtomGit
人工智能·react native·百度·harmonyos·atomgit
Easy_API9 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo9 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
紧跟先前的步伐9 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
释厄62310 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
老金带你玩AI10 小时前
集万家所长,一键复制的Agent.md!
人工智能