当前位置: 首页 > article >正文

PyTorch——损失函数与反向传播(8)

Loss Functions 越小越好


L1loss


MSELoss 损失函数


CrossEntyopyLoss 损失函数

import torch
from torch.nn import L1Loss
from torch import nn# 创建输入和目标张量,用于后续的损失计算
inputs =  torch.tensor([1,2,3],dtype=torch.float32)
targets = torch.tensor([1,2,5],dtype=torch.float32)# 将输入张量重塑为四维张量,形状为 (批量大小=1, 通道数=1, 高度=1, 宽度=3)
# 这一操作是为了满足某些损失函数对输入维度的要求
# 例如在图像任务中,数据通常以四维张量形式存在
inputs = torch.reshape(inputs, (1, 1, 1, 3))# 计算L1损失(平均绝对误差),使用sum reduction策略
# 这里会计算每个对应元素的绝对差,然后求和得到总损失
loss = L1Loss(reduction='sum')
result = loss(inputs, targets)# 计算MSE损失(均方误差)
# 计算每个对应元素的平方差的平均值
loss_mse = nn.MSELoss()
result_mse = loss_mse(inputs, targets)print(f"L1 Loss (Sum): {result}")  # 输出L1损失结果
print(f"MSE Loss: {result_mse}")   # 输出MSE损失结果# 创建用于交叉熵损失计算的输入和目标
# 输入x表示三个类别的预测分数
# 目标y表示真实类别标签(这里是类别1)
x = torch.tensor([0.1, 0.2, 0.3])
y = torch.tensor([1])# 将输入x重塑为形状(1, 3),表示批量大小为1,有3个类别
x = torch.reshape(x, (1, 3))# 计算交叉熵损失
# 交叉熵损失结合了softmax激活和负对数似然损失
# 它衡量的是预测概率分布与真实分布之间的差异
loss_cross = nn.CrossEntropyLoss()
result_cross = loss_cross(x, y)print(f"Cross Entropy Loss: {result_cross}")  # 输出交叉熵损失结果


import torchvision
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.data import DataLoader# 加载CIFAR10测试数据集,将图像转换为Tensor格式
dataset = torchvision.datasets.CIFAR10("./data", train=False, transform=torchvision.transforms.ToTensor(),download=True)
# 创建数据加载器,设置批量大小为64
dataloader = DataLoader(dataset, batch_size=64)# 定义一个名为TY的神经网络模型类
class TY(nn.Module):def __init__(self):super(TY, self).__init__()# 定义神经网络结构self.model1 = Sequential(Conv2d(3, 32, 5, padding=2),  # 卷积层:输入3通道,输出32通道,卷积核5x5,填充2MaxPool2d(2),                 # 最大池化层:池化窗口2x2Conv2d(32, 32, 5, padding=2), # 卷积层:输入32通道,输出32通道,卷积核5x5,填充2MaxPool2d(2),                 # 最大池化层Conv2d(32, 64, 5, padding=2), # 卷积层:输入32通道,输出64通道,卷积核5x5,填充2MaxPool2d(2),                 # 最大池化层Flatten(),                    # 将多维张量展平为一维向量Linear(1024, 64),             # 全连接层:输入1024维,输出64维Linear(64, 10),               # 全连接层:输入64维,输出10维(对应10个类别))def forward(self, x):# 定义数据在前向传播中的流动过程x = self.model1(x)return x# 定义交叉熵损失函数,用于多分类问题
loss = nn.CrossEntropyLoss()
# 实例化模型
ty = TY()
# 遍历数据加载器中的每个批次数据
for data in dataloader:# 获取图像数据和对应的标签imgs, targets = data# 将图像数据输入模型,得到预测结果outputs = ty(imgs)# 计算预测结果与真实标签之间的损失result_loss = loss(outputs, targets)# 打印每个批次的损失值print(result_loss)


梯度下降  grad descent

http://www.lryc.cn/news/2405050.html

相关文章:

  • macOS 升级 bash 到最新版本
  • Linux下如何查看一个端口被什么进程占用? 该进程又打开了哪些文件?
  • 力扣面试150题--课程表
  • 用通俗的话解释下MCP是个啥?
  • LeetCode 高频 SQL 50 题(基础版)之 【子查询】· 上
  • Spark流水线+Gravitino+Marquez数据血缘采集
  • 一个完整的时间序列异常检测系统,使用Flask作为后端框架,实现了AE(自编码器)、TimesNet和LSTM三种模型,并提供可视化展示
  • 深度学习在非线性场景中的核心应用领域及向量/张量数据处理案例,结合工业、金融等领域的实际落地场景分析
  • 基于微信小程序的车位共享平台的设计与实现源码数据库文档
  • 多模态大语言模型arxiv论文略读(111)
  • 网页端 VUE+C#/FastAPI获取客户端IP和hostname
  • 一个自动反汇编脚本
  • 函数与数列的交汇融合
  • 怎么让自己ip显示外省?一文说清操作
  • 【Docker】容器安全之非root用户运行
  • 汽车车载软件平台化项目规模颗粒度选择的一些探讨
  • 【八股消消乐】构建微服务架构体系—服务注册与发现
  • 大数据+智能零售:数字化变革下的“智慧新零售”密码
  • C++_核心编程_菱形继承
  • 掌握Git核心:版本控制、分支管理与远程操作
  • c#,Powershell,mmsys.cpl,使用Win32 API展示音频设备属性对话框
  • STM标准库-TIM旋转编码器
  • 深入解析JVM工作原理:从字节码到机器指令的全过程
  • MCP通信方式之Streamable HTTP
  • 第七十三篇 从电影院售票到停车场计数:生活场景解析Java原子类精髓
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • C++----剖析list
  • 纳米AI搜索与百度AI搜、豆包的核心差异解析
  • 不到 2 个月,OpenAI 火速用 Rust 重写 AI 编程工具。尤雨溪也觉得 Rust 香!
  • 人工智能:网络安全的“智能守护者”