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

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

相关文章:

  • Docker快速部署AnythingLLM全攻略
  • AlexNet,VGG,Inceptions, ResNet, MobileNet对比
  • Windows提权技术完全指南:从基础到高级实战
  • Catsxp 从Edge商店安装扩展
  • 香港国际金融通道中的资金行为建模探索
  • 数据库MySQL基础(3)
  • Elasticsearch中的文档(Document)介绍
  • Android apk装机编译类型: verify、speed-profile, speed与启动耗时
  • 2025年大模型平台落地实践研究报告|附75页PDF文件下载
  • Elasticsearch索引(Index)介绍,它与数据库中的表有什么区别?
  • Cursor 工具项目构建指南: Web Vue-Element UI 环境下的 Prompt Rules 约束(new Vue 方式)
  • 浅析EXCEL自动连接PowerBI的模板
  • AI基础知识(LLM、prompt、rag、embedding、rerank、mcp、agent、多模态)
  • Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
  • OpenCV C++ 学习笔记(六):绘制文本、几何绘图、查找/绘制轮廓
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • 数据标注与大模型的双向赋能:效率与性能的跃升
  • RPG21.创建敌人的AttributeSet,创建角色的GameplayEffect
  • 【Rust 高级trait】Rust trait的一些高级用法解密
  • 【算法深练】分组循环:“分”出条理,化繁为简
  • 做网站如何语音对话/怎样做好网络推广呀
  • 专业网站建设好不好/建网站费用
  • 网站建设企业宣传口号/工程建设数字化管理平台
  • 如何进行网站运营与规划/好看的seo网站
  • 网站推荐你了解我意思吧/软文接单平台
  • 网站后台百度商桥代码哪里安装/在线网络培训平台