动手学深度学习pytorch

参考地址:https://zh.d2l.ai/

文章目录

  • 动手学深度学习pytorch
    • 1-第03章-线性神经网络
      • 1. 线性回归
        • 1.1 什么是线性回归?
        • 1.2 如何表示线性回归的预测公式?
      • 2. 损失函数
        • 2.1 什么是损失函数?
        • 2.2 如何表示整个训练集的平均损失?
      • 3. 解析解
        • 3.1 什么是解析解?
        • 3.2 解析解的局限性是什么?
      • 4. 小批量随机梯度下降(SGD)
        • 4.1 SGD一次更新步骤的伪代码?
        • 4.2 超参数有哪些?
      • 5. 从线性回归到单层神经网络
        • 5.1 如何把线性回归视为神经网络?
        • 5.2 全连接层的定义?
      • 6. Softmax 回归(多类分类)
        • 6.1 什么是 Softmax 函数?
        • 6.2 交叉熵损失如何定义?
      • 7. 从零实现 vs 简洁实现(PyTorch)
        • 7.1 从零实现的关键步骤?
        • 7.2 简洁实现用到的 PyTorch 高级 API?
      • 8. 矢量化加速
        • 8.1 为什么矢量化重要?
        • 8.2 示例:向量相加
      • 9. 信息论视角的交叉熵
        • 9.1 熵 H(P) 的公式?
        • 9.2 交叉熵 H(P,Q) 的公式?
      • 10. Fashion-MNIST 数据集
        • 10.1 数据集规模?
        • 10.2 如何用 PyTorch 加载?


1-第03章-线性神经网络

1. 线性回归

1.1 什么是线性回归?

线性回归(linear regression)是一种经典的统计学习方法,用于建立自变量 x 和因变量 y 之间的线性关系模型,即假设 y 可以表示为 x 中元素的加权和,再加上一个偏置项 b。

1.2 如何表示线性回归的预测公式?

对于单样本特征向量 x∈ℝᵈ,预测值 ŷ 的向量化公式为
y^=w⊤x+b\hat y = w^\top x + by^=wx+b
其中 w 为权重向量,b 为偏置标量。


2. 损失函数

2.1 什么是损失函数?

损失函数(loss function)用来量化模型预测值与真实值之间的差距。在线性回归中,最常用的损失函数是平方误差(均方误差):

l(i)(w,b)=12(y^(i)−y(i))2l^{(i)}(w,b)=\frac12\bigl(\hat y^{(i)}-y^{(i)}\bigr)^2l(i)(w,b)=21(y^(i)y(i))2

2.2 如何表示整个训练集的平均损失?

L(w,b)=1n∑i=1nl(i)(w,b)=12n∑i=1n(w⊤x(i)+b−y(i))2L(w,b)=\frac1n\sum_{i=1}^n l^{(i)}(w,b)=\frac1{2n}\sum_{i=1}^n\bigl(w^\top x^{(i)}+b-y^{(i)}\bigr)^2L(w,b)=n1i=1nl(i)(w,b)=2n1i=1n(wx(i)+by(i))2


3. 解析解

3.1 什么是解析解?

解析解(analytical solution)指通过数学公式一次性求得的参数最优值,无需迭代优化。
线性回归的解析解为
w∗=(X⊤X)−1X⊤yw^*=(X^\top X)^{-1}X^\top yw=(XX)1Xy
其中 X 为 n×d 的设计矩阵,y 为 n×1 的标签向量。

3.2 解析解的局限性是什么?

仅适用于能写成闭合形式的问题;对大规模数据或复杂模型(如深度网络)难以直接应用。


4. 小批量随机梯度下降(SGD)

4.1 SGD一次更新步骤的伪代码?
  1. 随机采样小批量 B(大小 |B|)。
  2. 计算平均梯度:
    g←1∣B∣∑i∈B∇w,bl(i)(w,b)g \leftarrow \frac1{|B|}\sum_{i\in B}\nabla_{w,b}\,l^{(i)}(w,b)gB1iBw,bl(i)(w,b)
  3. 更新参数:
    w←w−ηgw,b←b−ηgbw \leftarrow w - \eta\,g_w,\quad b \leftarrow b - \eta\,g_bwwηgw,bbηgb
4.2 超参数有哪些?
  • 学习率 η
  • 批量大小 |B|(batch size)

5. 从线性回归到单层神经网络

5.1 如何把线性回归视为神经网络?

把输入视为输入层(d 个神经元),计算层为单个全连接(Dense)层,权重矩阵 W∈ℝ^{1×d},偏置 b∈ℝ,因此网络层数为 1。

5.2 全连接层的定义?

每个输入特征都与每个输出单元相连,计算为
oj=∑ixiwij+bjo_j = \sum_i x_i w_{ij} + b_joj=ixiwij+bj


6. Softmax 回归(多类分类)

6.1 什么是 Softmax 函数?

把未规范化的 logit 向量 o∈ℝ^q 映射为概率分布:

y^j=eoj∑k=1qeok\hat y_j = \frac{e^{o_j}}{\sum_{k=1}^q e^{o_k}}y^j=k=1qeokeoj

保证 0 ≤ ŷ_j ≤ 1 且 Σ_j ŷ_j = 1。

6.2 交叉熵损失如何定义?

对于独热标签 y 和预测概率 ŷ:

l(y,y^)=−∑j=1qyjlog⁡y^jl(y,\hat y)=-\sum_{j=1}^q y_j\log\hat y_jl(y,y^)=j=1qyjlogy^j


7. 从零实现 vs 简洁实现(PyTorch)

7.1 从零实现的关键步骤?
  1. 生成/加载数据
  2. 初始化参数
  3. 定义模型 linreg(X,w,b)net(X)
  4. 定义损失 squared_loss / cross_entropy
  5. 定义优化器 sgd
  6. 循环 for epoch / for batch 训练
7.2 简洁实现用到的 PyTorch 高级 API?
  • nn.Sequential(nn.Linear(...)) 定义模型
  • nn.MSELoss() / nn.CrossEntropyLoss() 定义损失
  • torch.optim.SGD 定义优化器
  • data.DataLoader 构建高效数据迭代器

8. 矢量化加速

8.1 为什么矢量化重要?

利用 GPU/CPU 的并行矩阵运算,避免 Python for-loop,可带来数量级加速。

8.2 示例:向量相加
# 慢
c = torch.zeros(n)
for i in range(n):c[i] = a[i] + b[i]# 快
d = a + b

9. 信息论视角的交叉熵

9.1 熵 H§ 的公式?

H(P)=−∑jP(j)log⁡P(j)H(P)=-\sum_j P(j)\log P(j)H(P)=jP(j)logP(j)
表示真实分布 P 的不确定性。

9.2 交叉熵 H(P,Q) 的公式?

H(P,Q)=−∑jP(j)log⁡Q(j)H(P,Q)=-\sum_j P(j)\log Q(j)H(P,Q)=jP(j)logQ(j)
衡量用模型分布 Q 编码真实分布 P 所需的平均比特数。模型越准,H(P,Q) 越接近 H§。


10. Fashion-MNIST 数据集

10.1 数据集规模?
  • 训练集:60 000 张 28×28 灰度图
  • 测试集:10 000 张
  • 10 个类别:T-shirt、Trouser、Pullover、Dress、Coat、Sandal、Shirt、Sneaker、Bag、Ankle boot
10.2 如何用 PyTorch 加载?
trans = transforms.ToTensor()
train_ds = torchvision.datasets.FashionMNIST(root='../data', train=True, transform=trans, download=True)
train_iter = torch.utils.data.DataLoader(train_ds, batch_size=256, shuffle=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94386.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94386.shtml
英文地址,请注明出处:http://en.pswp.cn/web/94386.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何安全解密受限制的PDF文件

当你需要从PDF中复制一段文字用于报告或引用时,如果文件被禁止复制,解密后即可轻松提取内容,避免手动输入的麻烦。它解压后双击主程序即可运行,无需安装,即开即用,十分便捷。建议先将界面语言切换为中文&am…

利用DeepSeek辅助编译c#项目tinyxlsx生成xlsx文件

继续在寻找比较快的xlsx写入库,从https://github.com/TinyXlsx/TinyXlsx/ 看到它的测试结果,比c的openXLSX快几倍,就想试用一下,仔细一看,它是个c#项目,需要.NET 8.0。 于是上微软网站下载了.NET 8.0 SDK&a…

构建现代高并发服务器:从内核机制到架构实践

引言:高并发的挑战与演进 在当今互联网时代,高并发处理能力已成为服务器的核心竞争力。传统的"一个连接一个线程"(Thread-per-Connection)模型由于资源消耗巨大、上下文切换成本高和可扩展性差,早已无法应对数万甚至百万级的并发连接需求。现代高并发服务器基于…

1SG10MHN3F74C2LG Intel Stratix 10 系列 FPGA

1SG10MHN3F74C2LG 是 Intel 推出的 Stratix 10 系列 FPGA 家族中的高端型号,它基于 Intel 与 TSMC 合作的 14 纳米 FinFET 工艺制造,是面向超高性能计算、数据中心加速、5G 通信基础设施、以及高端网络设备的旗舰级可编程逻辑器件。这颗 FPGA 以极高的逻…

IIS访问报错:HTTP 错误 500.19 - Internal Server Error

无法访问请求的页面,因为该页的相关配置数据无效。 由于权限不足而无法读取配置文件解决办法:文件夹添加用户权限Everyone文件夹->鼠标右键->属性->安全->组或用户名->编辑->添加->录入Everyone->检查名称->一路点确定

AI对口型唱演:科技赋能,开启虚拟歌者新篇章

最近在短视频平台闲逛,发现不少朋友都在玩“AI对口型唱演”,这类视频简直成了新晋流量密码。从热门歌曲到经典台词,配上夸张的口型和表情,分分钟就能冲上排行榜前排。不过问题也来了——市面上这么多专用软件,到底哪家…

爬虫逆向--Day16Day17--核心逆向案例3(拦截器关键字、路径关键字、请求堆栈、连续请求)

一、入口定位入口定位-- 关键字搜索-- 方法关键字--最简单,最高效的 排第一-- encrypt 加密-- decrypt 解密-- JSON.stringify 给一个JS对象做Json字符串处理的把一个对象转换为Json字符串JSON.stringify({a:1,b:"2"}){"a":"1…

RuoYi-Vue3项目中Swagger接口测试404,端口问题解析排查

一 问题概述版本:ruoyi前后端分离版,ruoyi版本3.9.0 前端Vue3 后端Spring Boot 2.5.15 本地测试环境ruoyi界面中系统工具下的系统接口集成了Swagger,当对其页面上的接口进行请求测试时却发生了404报错。具体表现如下图二 问题排查 1、与Vue2进…

elasticsearch 7.x elasticsearch 使用scroll滚动查询一页,删除一页,影响后面滚动的查询吗

目录 一 scroll说明 1.1 问题 1.2 scroll分页的机制 1.3 案例分析 一 scroll说明 1.1 问题 elasticsearch 使用scroll滚动查询一页,删除一页,影响后面滚动的查询吗? 答案是: 在 Elasticsearch 中使用 Scroll API 进行“…

MacBook Pro M1升级Burp Suite2025.8

一、安装最新Burp Suite2025.8 下载最新Burp Suite2025.8安装包: Burp Suite Release Notes 下载安装包后,双击安装即可, 二、调整Burp Suite2025.8配置; 工具包下载地址:文件分享 将下载的jar包放到app目录下即可 …

开发避坑指南(30):Vue3 表格动态增加删除行解决方案

需求背景 在Vue3环境中,动态增加或者删除表格的行,该怎么实现?如下图:实现分析 不同于传统js,jquery等框架的面向dom编程,vue中是面向数据编程。对变量的增删自动绑定到dom节点的增删上,所以在v…

RTSP/RTMP vs WebRTC:实时视频技术选型的务实之路

引言:错配的代价 在实时视频的技术选型中,WebRTC 曾一度被许多团队视为“唯一的正确答案”。凭借浏览器原生支持、点对点传输以及端到端的低时延特性,它确实在在线会议、互动课堂等场景中展现了极大优势。然而,当这些团队尝试把同…

图表组件SciChart WPF再升级:v8.9带来油气井图、新交互与可视化增强

SciChart WPF Charts是一个实时、高性能的WPF图表库,专为金融、医疗和工程应用而设计。使用DirectX和SciChart WPF专有渲染引擎,以及约50种2D和3D WPF图表类型、灵活的API和五星级支持,SciChart非常适合需要极端性能和光滑交互式图表的项目。…

基于5G NR NTN与DVB-S2X/RCS2的机载卫星通信终端性能分析

5G NR NTN与DVB-S2X/RCS2代表了两种不同的卫星通信技术路线,分别针对航空通信的不同需求场景提供差异化解决方案。5G NR NTN作为蜂窝网络向太空的延伸,具备低延迟、双向通信优势,而DVB-S2X/RCS2则专注于高带宽广播和回传控制,两者…

show-overflow-tooltip使用当内容过多不展示...

Element UI的show-overflow-tooltip属性依赖于检测文本内容的实际宽度与容器宽度的比较&#xff0c;当使用<div>等块级元素时&#xff0c;会破坏这个检测机制。解决方案移除div包装&#xff1a;直接在模板中使用文本内容&#xff0c;不要用div包装使用span代替div&#x…

关于 svn无法查看下拉日志提示“要离线”和根目录看日志“no data” 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/150703535 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

嵌入式八股文面试题总结(QT、RTOS、Linux、ARM、C/C++)(持续更新)

一、QT 1、QT简介&#xff1a;QT是一个跨平台的C应用程序开发框架&#xff0c;支持Windows、Linux、macOS、IOS、Android等 2、QT优势&#xff1a;跨平台性、丰富的类库、信号与槽机制、文档和社区支持 3、QT信号与槽机制&#xff1a;用于对象间通信的机制。当一个对象状态发生…

从 JUnit 深入理解 Java 注解与反射机制

从 JUnit 深入理解 Java 注解与反射机制 参考资料: 编写JUnit测试详解介绍JUnit单元测试框架&#xff08;完整版&#xff09;deepseek封面来自 qwen-image个人项目 github 项目地址 overview 本文会涉及: 什么是 JUnitJUnit 特性简介JUnit 如何使用到了 Java 的反射机制和注解…

VC2022连接mysql

前言 目前想用Visual Studio 2022 C访问mysql数据库。尝试下来&#xff0c;步骤如下&#xff1a; 一、下载Mysql连接的驱动 从这个链接开始下载&#xff1a;https://dev.mysql.com/downloads/c-api/ 点进去后&#xff1a; 我以上两个都下载了&#xff0c;主要还是用第一个&a…

Apache HTTP Server:深入探索Web世界的磐石基石!!!

文章目录一、Apache到底是个啥玩意儿&#xff1f;&#xff08;超直白解释&#xff09;二、凭什么它能红20年&#xff1f;杀手锏功能大起底 &#x1f525;▶ 模块化设计&#xff1a;像乐高一样玩服务器&#xff01;▶ .htaccess文件&#xff1a;网站主的魔法手册 ✨▶ 跨平台王者…