pytorch中有哪些损失函数,以及相关的python案例

简介: 这里使用了一个简单的卷积神经网络来进行二分类图像分割,输出层使用了两个通道,分别代表两种类别(前景和背景)。损失函数为CrossEntropyLoss2d,用于计算每个像素点的预测结果与真实标签之间的交叉熵损失。除了以上列出的常见损失函数外,PyTorch还提供了许多其他类型的损失函数,如L1Loss、NLLLoss、KLDivLoss等,可以根据具体应用场景选择适合的损失函数。

PyTorch中提供了多种损失函数,涵盖了分类、回归和图像处理等不同领域的任务,以下是其中一些常用的损失函数及其使用示例:

  1. 交叉熵损失函数(CrossEntropyLoss)

适用于多分类任务,通常与Softmax层结合使用。

import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
    def __init__(self, num_classes):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, num_classes)
    def forward(self, x):
        x = nn.functional.relu(self.fc1(x))
        x = self.fc2(x)
        return x
# 创建模型实例、损失函数和优化器
net = Net(num_classes=3) # 假设有3个类别
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
  1. 均方误差损失函数(MSELoss)

适用于回归任务,用于度量模型输出和目标值之间的平均平方误差。

import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)
    def forward(self, x):
        x = nn.functional.relu(self.fc1(x))
        x = self.fc2(x)
        return x
# 创建模型实例、损失函数和优化器
net = Net()
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
  1. 平滑的L1损失函数(SmoothL1Loss)

适用于回归任务,与MSELoss不同,SmoothL1Loss对异常值更加鲁棒。

import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)
    def forward(self, x):
        x = nn.functional.relu(self.fc1(x))
        x = self.fc2(x)
        return x
# 创建模型实例、损失函数和优化器
net = Net()
criterion = nn.SmoothL1Loss()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
  1. 二分类交叉熵损失函数(BCELoss)

适用于二分类任务,将模型输出视为一个概率值,用于度量模型输出和目标值之间的交叉熵。

import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)
    def forward(self, x):
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.sigmoid(self.fc2(x))
        return x
# 创建模型实例、损失函数和优化器
net = Net()
criterion = nn.BCELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data)
loss= criterion(output, target) loss.backward() optimizer.step()


= criterion(output, target) loss.backward() optimizer.step()

import torch.nn as nn import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module): def init(self): super(Net, self).init() self.fc1 = nn.Linear(10, 5) self.fc2 = nn.Linear(5, 1)


def forward(self, x):
    x = nn.functional.relu(self.fc1(x))
    x = self.fc2(x)
    return x
# 创建模型实例、损失函数和优化器
net = Net() criterion = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([5.0])) optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data) loss = criterion(output, target) loss.backward() optimizer.step()

这里设置了一个正样本的权重为5,表示模型在训练时应该更加关注正样本。

  1. 像素级别交叉熵损失函数(CrossEntropyLoss2d)

适用于图像分割任务,将每个像素点的预测结果视为一个概率值,用于度量模型输出和目标值之间的交叉熵。

import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
    def __init__(self, num_classes):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
        self.conv2 = nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1)
        self.conv3 = nn.Conv2d(128, num_classes, kernel_size=3, stride=1, padding=1)
    def forward(self, x):
        x = nn.functional.relu(self.conv1(x))
        x = nn.functional.max_pool2d(x, kernel_size=2, stride=2)
        x = nn.functional.relu(self.conv2(x))
        x = nn.functional.max_pool2d(x, kernel_size=2, stride=2)
        x = self.conv3(x)
        return x
# 创建模型实例、损失函数和优化器
net = Net(num_classes=2) # 假设有2个类别
criterion = nn.CrossEntropyLoss2d()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 在每次迭代中,计算并反向传播损失
output = net(input_data)
loss = criterion(output, target)
loss.backward()
optimizer.step()


这里使用了一个简单的卷积神经网络来进行二分类图像分割,输出层使用了两个通道,分别代表两种类别(前景和背景)。损失函数为CrossEntropyLoss2d,用于计算每个像素点的预测结果与真实标签之间的交叉熵损失。

除了以上列出的常见损失函数外,PyTorch还提供了许多其他类型的损失函数,如L1Loss、NLLLoss、KLDivLoss等,可以根据具体应用场景选择适合的损失函数。

相关文章
|
1月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
1月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
|
8月前
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
614 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
|
2月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
2月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
105 0
|
2月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
170 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Python|【Pytorch】基于小波时频图与SwinTransformer的轴承故障诊断研究
Python|【Pytorch】基于小波时频图与SwinTransformer的轴承故障诊断研究
225 0
|
4月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
5月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
170 0
Python 3D数据可视化:7个实用案例助你快速上手
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
1557 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。

热门文章

最新文章