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

【动手学深度学习】第五课 softmax回归

目录一、softmax回归1. 独热编码2. 网络架构3. softmax运算4. 损失函数5. 模型预测与评估二、图像分类数据集1. 读取数据集2. 读取小批量3. 整合组件三、softmax的从0开始实现1. 初始化参数2. 定义softmax操作3. 定义模型4. 定义损失函数5. 验证精度6. 训练7. 预测回归预测“多少”分类预测“类别”。1. 我们只对样本的“硬性”类别感兴趣即属于哪个类别2. 我们希望得到“软性”类别即得到属于每个类别的概率。在模型训练的过程中我们根据模型输出的“软类别”来推导出硬类别。一、softmax回归1. 独热编码假设每次输入是一个2*2的灰度图像假设每个图像属于类别“猫”“鸡”和“狗”中的一个。 我们可以用一个标量表示每个像素值每个图像对应四个特征。独热编码是一个向量它的分量和类别一样多。 类别对应的分量设置为1其他所有分量设置为0。 在我们的例子中标签将是一个三维向量 其中100对应于“猫”、010对应于“鸡”、001对应于“狗”。2. 网络架构与回归不同的是softmax有多个输出即每个类别对应一个输出。由于我们有4个特征和3个输出所以需要12个标量表示权重3个标量表示偏置。下面为每个输入计算预测与线性回归一样softmax也是单层神经网络且由于每个输出由所有输入决定所以它的输出层也是全连接层。3. softmax运算未规范化的预测o不能直接作为输出因为它们的总和不是1且可能是负数。softmax函数能将其转化为非负数且总和为1。首先对每个预测求幂再将每个结果除以总和来保证最终输出的概率总和为1。4. 损失函数不好意思李沐老师截到了你的头5. 模型预测与评估在训练softmax回归模型后给出任何样本特征我们可以预测每个输出类别的概率。 通常我们使用预测概率最高的类别作为输出类别。 如果预测与实际类别标签一致则预测是正确的。 在接下来的实验中我们将使用精度来评估模型的性能。 精度等于正确预测数与预测总数之间的比率。二、图像分类数据集我们将使用Fashion-MNIST数据集。1. 读取数据集用pytorch的内置函数将数据集下载并读取到内存。做了两件事情通过ToTensor实例将图像数据从PIL类型变成32bit的浮点数格式除以255使得所有像素的数值在01之间Fashion-MNIST由10个类别的图像组成训练集和测试集分别包含60000和10000张图像。 测试数据集不会用于训练只用于评估模型性能。每个输入图像的高度和宽度均为28像素。 数据集由灰度图像组成其通道数为110个类别如下以下函数用于在数字标签索引及其文本名称之间进行转换可视化样本2. 读取小批量在每次迭代中数据加载器每次都会读取一小批量数据大小为batch_size。 通过内置数据迭代器我们可以随机打乱了所有样本从而无偏见地读取小批量。3. 整合组件现在我们定义load_data_fashion_mnist函数用于获取和读取Fashion-MNIST数据集。 这个函数返回训练集和验证集的数据迭代器。此外这个函数还接受一个可选参数resize用来将图像大小调整为另一种形状。三、softmax的从0开始实现softmax回归也是重要的基础我们有必要了解其实现的细节。我们使用Fashion-MNIST数据集 并设置数据迭代器的批量大小为256。1. 初始化参数1输入和输出softmax需要的输入是一个向量所以我们需要将图像拉长将每个28*28的图像看成长度为784的“直直”的向量。其实这种拉伸会损失很多空间信息但这个我们留给卷积神经网络解决了模型输入维度是784输出维度是10因为有十个类别。2参数w依旧初始化成一个符合高斯分布的向量shape78410b初始化为0shape1102. 定义softmax操作首先我们来回顾一下矩阵相加的操作然后定义softmax操作3. 定义模型定义softmax操作后我们可以实现softmax回归模型。 下面的代码定义了输入如何通过网络映射到输出。 注意将数据传递到模型之前我们使用reshape函数将每张原始图像展平为向量。4. 定义损失函数还是拿一个例子y_hat是一个数据样本包含2个样本在3个类别的预测概率。只需一行代码就可以实现交叉熵损失函数我们用上面的例子验证一下5. 验证精度同样对于任意数据迭代器data_iter可访问的数据集 我们可以评估在任意模型net的精度。这里定义一个实用程序类Accumulator用于对多个变量进行累加。 在上面的evaluate_accuracy函数中 我们在Accumulator实例中创建了2个变量 分别用于存储正确预测的数量和预测的总数量。 当我们遍历数据集时两者都将随着时间的推移而累加。6. 训练1首先我们定义一个函数来训练一个迭代周期。 请注意updater是更新模型参数的常用函数它接受批量大小作为参数。 它可以是d2l.sgd函数也可以是框架的内置优化函数。2接下来我们实现一个训练函数 它会在train_iter访问到的训练数据集上训练一个模型net。 该训练函数将会运行多个迭代周期由num_epochs指定。 在每个迭代周期结束时利用test_iter访问到的测试数据集对模型进行评估。 我们将利用Animator类来可视化训练进度。3使用中定义的小批量随机梯度下降来优化模型的损失函数设置学习率为0.1。4现在我们训练模型10个迭代周期。 请注意迭代周期num_epochs和学习率lr都是可调节的超参数。 通过更改它们的值我们可以提高模型的分类精度。7. 预测现在训练已经完成我们的模型已经准备好对图像进行分类预测。给定一系列图像我们比较实际标签文本输出的第一行和模型预测文本输出的第二行四、softmax的简单实现跟线性回归差不多不写了

相关文章:

【动手学深度学习】第五课 softmax回归

目录 一、softmax回归 1. 独热编码 2. 网络架构 3. softmax运算 4. 损失函数 5. 模型预测与评估 二、图像分类数据集 1. 读取数据集 2. 读取小批量 3. 整合组件 三、softmax的从0开始实现 1. 初始化参数 2. 定义softmax操作 3. 定义模型 4. 定义损失函…...

Kimi LeetCode 552.学生出勒记录|| public int checkRecord(int n)

我来为你详细解析 LeetCode 552. 学生出勤记录 II 这道动态规划题目。 题目分析 出勤记录规则: P (Present):出席A (Absent):缺勤L (Late):迟到 奖励条件: 缺勤次数 严格少于 2 次(即 A 的个数 ≤ 1&#x…...

如何解决 CAS 的 ABA 问题:从版本号机制到 AtomicStampedReference 深度解析

文章目录问题一、 什么是 ABA 问题?二、 为什么不能通过“加锁”来解决?三、 核心方案:引入版本号四、 推荐实现:AtomicStampedReference1. 内部类 Pair2. CAS 对象引用五、 实战演示:拦截 ABA 过程六、 延伸&#xff…...

...........

.................

Linux基础操作——学习记录

Linux的文件结构是多叉树,叶子节点是普通文件或空目录,非叶子节一定是一个非空目录基础操作clear:清屏AITENTER:全屏/退出全屏adduser 用户名: 创建新用户passwd 用户名 : 重置密码userdel -r 用户名&#…...

AI 时代的程序员生存指南:我是如何用 AI 提升 10 倍开发效率的

AI 时代的程序员生存指南:我是如何用 AI 提升 10 倍开发效率的从"抗拒 AI"到"离不开 AI",我的思维转变和实操经验全部分享引言:一个程序员的焦虑去年这个时候,程序员都特别焦虑。因为那段时间,AI …...

vim使用verible插件进行verilog语法检查

github上下载verible后,可在不联网的情况下,在vim中检查verilog语法,或者格式优化(自动缩进等),verible下还有其他插件,待探索(xxx --helpfull)...

2025_NIPS_Praxis-VLM: Vision-Grounded Decision Making via Text-Driven Reinforcement Learning

一、主要内容总结 1. 研究背景与问题 现有视觉语言模型(VLMs)在多模态任务中表现出色,但缺乏复杂场景下的情境推理能力,难以支撑机器人、交互式助手等领域的决策需求。传统增强VLMs推理能力的方法依赖大规模图文配对数据,这类数据标注成本高、获取难度大,尤其在多样化现…...

OpenClaw 超级 AI 实战专栏【模型推理与实战】(五)推理参数调优:精度、速度、显存平衡

目录 一、核心认知:OpenClaw 推理的 “三角平衡” 逻辑 二、OpenClaw 核心推理参数详解(按优先级排序) 三、分场景调优策略(附 OpenClaw 实战代码) 场景 1:低配显卡(4G/6G 显存,如 GTX 1050/1650) 场景 2:中高配显卡(8G/12G/16G 显存,如 RTX 3060/3090/A100)…...

2025_NIPS_IR-OptSet: An Optimization-Sensitive Dataset for Advancing LLM-Based IR Optimizer

文章核心总结与创新点 主要内容 本文针对传统编译器依赖手工优化规则、扩展性差的问题,提出首个公开的优化敏感数据集IR-OptSet,用于提升基于大语言模型(LLMs)的中间表示(IR)优化器性能。该数据集包含170K条LLVM IR样本,源自8个优化领域的1704个开源仓库,定义了代码分…...

Java对象头:深入理解对象存储的核心机制

Java对象结构 实例化一个Java对象之后,该对象在内存中的结构是怎么样的?Java对象(Object实例)结构包括三部分:对象头、对象体和对齐字节,具体下图所示Java对象的三部分 对象头 对象头包括三个字段&#xff…...

Swift构造过程介绍

Swift 构造过程概述Swift 的构造过程是实例化类、结构体或枚举时的重要机制。构造过程通过构造器(init)实现,确保实例在首次使用前完成正确的初始化。Swift 的构造器无需返回值,其主要任务是初始化存储属性。默认构造器如果结构体…...

Pytorch之torch.nn.Conv2d详解

卷积层是卷积神经网络(CNN)的核心组件,而torch.nn.Conv2d作为 PyTorch 中实现二维卷积的核心类,广泛应用于图像分类、目标检测、语义分割等计算机视觉任务。本文将从基础概念、参数详解、使用示例到核心原理,全方位拆解…...

ROS2 -03-工作空间与功能包

文章目录ROS2 工作空间与功能包完全指南一、ROS2 工作空间(Workspace)1. 什么是工作空间?2. 工作空间的目录结构3. 工作空间的类型:Overlay 与 Underlay4. 创建工作空间5. 编译工作空间二、ROS2 功能包(Package&#x…...

MTP管理培训

MTP管理培训 这个是纯管理课程,技术管理还有不同 该套课程以“理”为核心,从“可实操性”入手,阐述了不因人是否天生具有管理特质,也能做好管理。 MTP(Management Training Program/Plan),原义为…...

OBS怎么调美颜?OBS怎么打开美颜功能?

OBS Studio 实现美颜主要有内置滤镜、第三方插件、摄像头硬件美颜三种方式,今天主要介绍第三方插件的用法: 一、基础准备 确保已安装 OBS Studio 最新版(推荐 29.1.3 及以上,稳定性更佳)。 摄像头已连接并正常识别&a…...

计算机毕业设计springboot中药材仓储管理系统的分析与实现 基于SpringBoot框架的中药饮片智能库存与质量追溯平台 中医药材冷链物流与数字化仓储运营管理系统

计算机毕业设计springboot中药材仓储管理系统的分析与实现0j9h07d8(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着中医药的全球化推广和国内市场需求的增长,中药…...

LeetCode 11:盛最多水的容器(C语言实现)

题目描述给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。请你找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。注意: 你不能倾斜容器。示…...

Unreal Engine5 笔记(持续更新)

C Debug及UE_Log debugPrint GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, "Begin play"); 含参print int a 100; GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, FString::Printf(TEXT("%d"), a));绘制调制函数 #include &qu…...

基于航空影像的道路异常状态识别 无人机道路阻断巡检 道路减速带识别 无人机道路施工巡检 无人机斑马线监测 道路场景计算机视觉数据集Yolo第10552期

道路场景计算机视觉数据集 README数据集核心信息概览(多数为背景)项目内容类别数量4类类别中文名称阻断道路、减速带、施工中、斑马线图像数量800数据集格式YOLO格式核心应用价值基于航空影像的道路异常状态实例分割,支撑智能交通管理与道路运维决策 往期热门主题 主…...

计算机毕业设计springboot社区便民服务平台 基于SpringBoot框架的智慧社区综合服务运营平台 城市社区数字化生活与多元服务集成管理系统

计算机毕业设计springboot社区便民服务平台9pqty086(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在快速城市化的进程中,社区作为城市的基本单元,其服务…...

基于STC8H8K64U的光学仪器协同采集平台设计

1. 项目概述本项目面向高校及科研院所实验室场景,构建一套基于STC8H8K64U单片机的多光学仪器协同控制与远程数据采集平台。其核心目标并非替代专用仪器控制器,而是作为轻量级、可扩展的“仪器粘合层”,解决实验室中多品牌、多协议光学设备&am…...

ROS2功能包构建与文件结构解析:从colcon编译到项目部署

1. 从零开始:理解ROS2功能包与工作空间 如果你刚开始接触ROS2,可能会被一堆新名词搞得有点懵:功能包、工作空间、colcon、ament……别担心,这很正常。我刚开始用ROS2的时候,也花了不少时间才把这些概念理清楚。今天&am…...

Nacos 3.0新特性解析:为什么控制台端口独立为8080?

Nacos 3.0架构演进:控制台端口独立背后的深度安全与运维考量 如果你是一位长期使用Nacos的开发者,从1.x版本一路升级过来,可能会对端口号的变化感到一丝困惑。最初,访问http://localhost:8848/nacos就能搞定一切;到了2…...

新媒体内容创作:使用DeOldify为历史题材短视频生成彩色素材

新媒体内容创作:使用DeOldify为历史题材短视频生成彩色素材 最近刷短视频,是不是经常看到一些老电影片段、历史纪录片被“上色”了?黑白画面一下子变得色彩鲜活,人物和场景都生动了起来,点赞和评论量往往也特别高。作…...

WuliArt Qwen-Image Turbo避坑指南:解决黑图、显存不足等常见问题

WuliArt Qwen-Image Turbo避坑指南:解决黑图、显存不足等常见问题 1. 为什么你的第一张图总是“黑屏”或“爆显存”? 你满怀期待地部署好WuliArt Qwen-Image Turbo,输入精心构思的Prompt,点击生成,然后……屏幕右侧一…...

C语言文件操作实战:读写二进制图片数据调用DeOldify服务

C语言文件操作实战:读写二进制图片数据调用DeOldify服务 你是不是也好奇,那些老照片上色服务背后是怎么运作的?作为一个C/C开发者,可能更想知道,如何用我们最熟悉的语言,从底层去实现图片的读取、发送和保…...

AI论文投稿指南:如何选择最适合你的CCF-A/B/C类期刊(附审稿周期对比)

AI论文投稿实战指南:从期刊选择到录用提速的深度策略 每次打开投稿系统,看着长长的期刊列表,你是不是也感到一丝迷茫?投顶刊怕周期太长耽误毕业,投普通期刊又担心影响力不够。在人工智能这个快速迭代的领域&#xff0c…...

ESP32开发新篇——VSCode插件助力ESP-IDF环境一键配置与实战

1. 为什么你需要VSCode插件开发ESP32? 第一次接触ESP32开发的朋友,往往会被官方推荐的ESP-IDF开发环境吓到。传统的安装方式需要手动配置Python、Git、CMake、Ninja等一堆工具链,光是环境变量配置就能劝退不少新手。我至今记得三年前第一次搭…...

Phi-4-reasoning-vision-15B企业级部署:supervisor托管+健康检查全链路

Phi-4-reasoning-vision-15B企业级部署:supervisor托管健康检查全链路 1. 引言:为什么需要企业级部署? 想象一下这个场景:你费了九牛二虎之力,终于把最新的视觉大模型部署到了服务器上。它运行得不错,能看…...