动手学深度学习pytorch

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

文章目录

  • 动手学深度学习pytorch
    • 1-第01章-引言
      • 1. 机器学习/深度学习基础
        • 1.1 什么是机器学习?
        • 1.2 深度学习与机器学习的关系?
      • 2. 数据(Data)
        • 2.1 什么是样本、特征、标签?
        • 2.2 如何理解“Garbage in, garbage out”?
      • 3. 模型(Model)
        • 3.1 什么是模型?
        • 3.2 深度学习模型与传统模型的区别?
      • 4. 目标函数(Objective Function)
        • 4.1 什么是目标函数/损失函数?
        • 4.2 回归与分类常用损失?
      • 5. 优化算法(Optimization Algorithm)
        • 5.1 什么是梯度下降?
        • 5.2 如何在 PyTorch 中使用 SGD?
      • 6. 监督学习(Supervised Learning)
        • 6.1 什么是监督学习?
        • 6.2 监督学习的三大步骤?
      • 7. 回归(Regression)
        • 7.1 什么是回归问题?
        • 7.2 如何定义一个简单的线性回归模型?
      • 8. 分类(Classification)
        • 8.1 什么是分类问题?
        • 8.2 如何输出类别概率?
      • 9. 过拟合与欠拟合
        • 9.1 什么是过拟合?
        • 9.2 如何缓解过拟合?
      • 10. 无监督学习(Unsupervised Learning)
        • 10.1 什么是无监督学习?
        • 10.2 聚类示例?
      • 11. 强化学习(Reinforcement Learning)
        • 11.1 什么是强化学习?
        • 11.2 强化学习四元组?
      • 12. 端到端训练(End-to-End Training)
        • 12.1 什么是端到端训练?
        • 12.2 与传统流水线对比?
      • 13. 表示学习(Representation Learning)
        • 13.1 什么是表示学习?
        • 13.2 示例:CNN 学到的层级特征
      • 14. 数据增强(Data Augmentation)
        • 14.1 什么是数据增强?
        • 14.2 在 PyTorch 中做图像增强?
      • 15. 生成对抗网络(GAN)
        • 15.1 什么是 GAN?
        • 15.2 基本训练循环?
      • 16. 注意力机制(Attention)
        • 16.1 什么是注意力机制?
        • 16.2 缩放点积注意力?
      • 17. 迁移学习(Transfer Learning)
        • 17.1 什么是迁移学习?
        • 17.2 在 PyTorch 中加载预训练模型?
      • 18. GPU 加速
        • 18.1 为什么要用 GPU?
        • 18.2 把张量移到 GPU?
      • 19. 自动微分(Autograd)
        • 19.1 什么是自动微分?
        • 19.2 计算并访问梯度?
      • 20. 深度学习框架
        • 20.1 常见框架有哪些?
        • 20.2 为什么选择 PyTorch?


1-第01章-引言

1. 机器学习/深度学习基础

1.1 什么是机器学习?

机器学习是一类让计算机系统通过数据或经验自动提升特定任务性能的技术集合,通常不需要人工显式编写规则。

1.2 深度学习与机器学习的关系?
# 伪代码:关系示意
MachineLearning
└── DeepLearning  # 使用多层神经网络进行表示学习

2. 数据(Data)

2.1 什么是样本、特征、标签?
  • 样本(sample/example):数据集中的一条记录
  • 特征(features/covariates):描述样本的属性向量
  • 标签(label/target):需要预测的真实结果
2.2 如何理解“Garbage in, garbage out”?
# 示意:低质量数据导致低质量模型
data_quality == 'garbage'  ⇒  model_performance == 'garbage'

3. 模型(Model)

3.1 什么是模型?

模型是由大量可学习参数(parameters)构成的函数族,通过调整参数将输入映射到期望输出。

3.2 深度学习模型与传统模型的区别?
# 传统流程
手工特征提取  →  浅层模型(如 SVM、决策树)# 深度学习流程
原始数据  →  多层神经网络(自动特征提取 + 预测)

4. 目标函数(Objective Function)

4.1 什么是目标函数/损失函数?

目标函数(又称损失函数或成本函数)量化模型预测与真实标签之间的差距,训练过程即最小化该函数。

4.2 回归与分类常用损失?
# 回归
loss = (y_pred - y_true) ** 2          # MSE# 二分类
loss = BCEWithLogitsLoss(y_pred, y_true)

5. 优化算法(Optimization Algorithm)

5.1 什么是梯度下降?

梯度下降是一种迭代优化算法,沿负梯度方向更新参数以最小化损失函数。

5.2 如何在 PyTorch 中使用 SGD?
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

6. 监督学习(Supervised Learning)

6.1 什么是监督学习?

监督学习使用带标签的数据集训练模型,使其能对新的输入样本预测正确的输出标签。

6.2 监督学习的三大步骤?
# 1. 构建带标签的训练集
train_ds = TensorDataset(X_train, y_train)# 2. 选择并训练模型
model = MyModel()
train(model, train_ds)# 3. 在测试集上预测
y_pred = model(X_test)

7. 回归(Regression)

7.1 什么是回归问题?

回归问题的输出是连续数值,目标是让预测值尽可能接近真实值。

7.2 如何定义一个简单的线性回归模型?
class LinearRegression(nn.Module):def __init__(self, in_features):super().__init__()self.linear = nn.Linear(in_features, 1)def forward(self, x):return self.linear(x)

8. 分类(Classification)

8.1 什么是分类问题?

分类问题的输出是离散类别,模型需为每个类别输出概率或硬标签。

8.2 如何输出类别概率?
probs = torch.softmax(logits, dim=1)   # 每行之和为1

9. 过拟合与欠拟合

9.1 什么是过拟合?

模型在训练集上表现极好,但在未见过的测试集上表现显著下降。

9.2 如何缓解过拟合?
# 常用技巧
model = nn.Sequential(nn.Dropout(0.5),   # 随机失活nn.Linear(512, 10)
)

10. 无监督学习(Unsupervised Learning)

10.1 什么是无监督学习?

无监督学习仅使用无标签数据,目标是发现数据内部结构或分布规律。

10.2 聚类示例?
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3).fit(X)
labels = kmeans.labels_

11. 强化学习(Reinforcement Learning)

11.1 什么是强化学习?

智能体通过与环境交互(观察-动作-奖励循环)学习策略,以最大化长期累积奖励。

11.2 强化学习四元组?
(state, action, reward, next_state)

12. 端到端训练(End-to-End Training)

12.1 什么是端到端训练?

从原始输入到最终输出的整个过程由一个统一模型完成,所有模块联合优化。

12.2 与传统流水线对比?
# 传统
raw_image → 手工特征提取 → 分类器 → 结果# 端到端
raw_image ─────── CNN ───────→ 结果

13. 表示学习(Representation Learning)

13.1 什么是表示学习?

模型自动学习数据的多层抽象表示,使后续任务更简单有效。

13.2 示例:CNN 学到的层级特征
Layer-1: 边缘/纹理  
Layer-3: 形状/部件  
Layer-5: 物体概念

14. 数据增强(Data Augmentation)

14.1 什么是数据增强?

通过对训练样本进行随机变换(旋转、裁剪、加噪声等)生成更多有效样本,提高模型泛化能力。

14.2 在 PyTorch 中做图像增强?
transform = T.Compose([T.RandomHorizontalFlip(),T.RandomRotation(10),T.ToTensor()
])

15. 生成对抗网络(GAN)

15.1 什么是 GAN?

由生成器(Generator)和判别器(Discriminator)组成,通过对抗训练使生成器学会产生逼真数据。

15.2 基本训练循环?
# 1. 训练判别器
loss_D = criterion(D(real), 1) + criterion(D(fake.detach()), 0)# 2. 训练生成器
loss_G = criterion(D(fake), 1)

16. 注意力机制(Attention)

16.1 什么是注意力机制?

允许模型在处理序列时动态聚焦于最相关的部分,提高长程依赖建模能力。

16.2 缩放点积注意力?
scores = Q @ K.transpose(-2, -1) / sqrt(d_k)
attn   = softmax(scores) @ V

17. 迁移学习(Transfer Learning)

17.1 什么是迁移学习?

利用在大规模数据集上预训练的模型权重,只需微调即可适配新任务,显著减少训练数据与计算量。

17.2 在 PyTorch 中加载预训练模型?
model = torchvision.models.resnet50(pretrained=True)
for p in model.parameters():p.requires_grad = False
model.fc = nn.Linear(model.fc.in_features, num_classes)

18. GPU 加速

18.1 为什么要用 GPU?

GPU 具有大量并行计算核心,能够显著加速深度学习中的矩阵运算。

18.2 把张量移到 GPU?
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x = x.to(device)
model = model.to(device)

19. 自动微分(Autograd)

19.1 什么是自动微分?

PyTorch 通过 autograd 机制自动计算张量的梯度,无需手动推导反向传播公式。

19.2 计算并访问梯度?
loss.backward()          # 反向传播
print(layer.weight.grad) # 查看梯度

20. 深度学习框架

20.1 常见框架有哪些?

PyTorch、TensorFlow/Keras、JAX、MXNet、MindSpore 等。

20.2 为什么选择 PyTorch?

动态图、Pythonic 语法、调试友好、社区活跃。

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

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

相关文章

大模型提示词工程背后的原理:深入理解Prompt Learning(提示学习)

“ 知其然也要知其所以然,为什么会有提示词工程?” 了解和使用过大模型的人应该都知道提示词工程,即使不了解提示词工程,至少也应该听说过,提示词工程说白了就是一种和大模型交流的方法,它的作用就是让大模…

AI 智能体安全设计模式:从三大“反模式”看如何构建可信的 AI 系统

摘要:当我们将 AI 智能体(Agent)从实验原型推向生产环境时,许多团队在不经意间重复着一些危险的错误实践。这些反复出现的错误,在软件工程中被称为“反模式”(Anti-Patterns)。本文基于 Curity …

【前端安全】前端安全第一课:防止 XSS 和 CSRF 攻击的常见手法

【前端安全】前端安全第一课:防止 XSS 和 CSRF 攻击的常见手法 所属专栏: 《前端小技巧集合:让你的代码更优雅高效》 上一篇: 【性能指标】决战性能之巅:深入理解核心 Web 指标(Core Web Vitals&#xff0…

QT新建文件或者项目解释:那些模板分别是什么意思?

在 Qt Creator 的 “New File or Project” 界面中,不同分类下的模板有着不同的用途和适用场景,以下是对各部分的详细说明:一、“项目” 分类下1. Application(应用程序)用途:用于创建可直接运行的应用程序…

《支付回调状态异常的溯源与架构级修复》

在后端开发领域,能通过错误日志直接定位的问题,只能算作“基础挑战”;而那些依赖特定数据量、并发量或外部交互场景才会触发的隐性问题,往往像藏在电路中的虚焊点,平时看似正常,关键时刻却会导致整个系统断…

C语言 运算符 (2)

一、内容概要内容提neirong关系运算符 逻辑运算符 逗号运算符 位运算二、运算符2.1 关系运算符说明&#xff1a; >,<,>,<,,! &#xff08;都是双目的&#xff09;所有关系运算符都是双目运算符&#xff08;二元运算符&#xff09;&#xff0c;运算符左侧和右侧、可…

mac版SVN客户端: macSvn 下载、使用指南【保姆级教程】

做项目要用SVN&#xff0c;在Mac平台找顺手的客户端好难。Windows下的TortoiseSVN很赞&#xff0c;Mac却一直没对等工具。直到发现新发布的MacSVN&#xff0c;布局和操作深得我心&#xff0c;内置常用工具&#xff0c;还能无缝集成到OS与任务栏&#xff0c;便捷易上手&#xff…

MongoDB分片集群自动化部署

OS&#xff1a;CentOS Linux release 7.9.2009 (Core) 场景&#xff1a; 需要半自动化或者自动化部署MongoDB集群时&#xff0c;可用此脚本。提高交付效率。 脚本实现架构图&#xff1a;脚本&#xff1a; check_clear_host.sh #此脚本有2个功能及是检查 资源规格和清理资源上的…

go-redis库使用总结

文章目录1. 概述与特性2. 安装与初始化2.1 安装2.2 初始化3 基本使用模式3.1 单实例客户端3.2 连接池与自动重连4. 常用 Redis 数据结构操作4.1 字符串&#xff08;String&#xff09;4.2 哈希&#xff08;Hash&#xff09;4.3 列表&#xff08;List&#xff09;4.4 集合&#…

【软件设计模式】策略模式

1.概念策略&#xff08;Strategy&#xff09;模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。策略模式属于行为型设计模式&#xff0c;它通过对算法进行封装&#xff0c;把使用算法的责…

Mac电脑英特尔版本最新系统15.6.1安装php环境

Mac电脑安装php环境 版本环境&#xff1a; 2025-08-22 14:09:19 安装 最新系统15.6.1系统&#xff1a; 新版本的mac不带php环境&#xff0c;需要自己 安装 brew install php8.3 启动说明 查看 . 使用官方方法安装 NVM curl -o- https://raw.githubusercontent.com/nvm-sh/…

Android焦点窗口变化导致遥控键值监听失效问题分析

最近在做语音全局控制Android系统功能&#xff0c;通过集成第三方语音识别sdk得到相关控制指令&#xff0c;然后将指令通过进程间通信传递给当前应用并作出响应。有很多通用指令&#xff0c;比如播放/暂停&#xff0c;Android系统本身就有全局控制指令&#xff1a;KeyEvent.KEY…

降本增效:基于 JavaScript 的 AI 编程 IDE 上下文压缩优化方案

降本增效&#xff1a;基于 JavaScript 的 AI 编程 IDE 上下文压缩优化方案 在当前 AI 辅助编程&#xff08;AI Pair Programming&#xff09;日益普及的背景下&#xff0c;开发者越来越依赖如 GitHub Copilot、Tabnine、CodeLlama 等智能编码工具。然而&#xff0c;一个普遍存在…

DataX HdfsWriter 插件文档

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/…

Rancher 管理的 K8S 集群中部署常见应用(MySQL、Redis、RabbitMQ)并支持扩缩容的操作

文章目录一、前提条件二、准备镜像三、进入 Rancher UI 部署3.1. 进入 Workloads3.2. 部署 MySQL3.3. 部署 Redis3.4. 部署 RabbitMQ四、验证服务五、扩缩容&#xff08;UI 操作&#xff09;六、附录yml部署文件6.1. mysql.yaml6.2. redis.yaml6.3. rabbitmq.yaml一、前提条件 …

8.21-8.22网络编程——词典

文章目录一、思维导图二、词典1、服务器2、客户端3、现象三、牛客网刷题一、思维导图 二、词典 1、服务器 #include <myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.116.128" //服务器IP地址 //账户密码结构 typedef s…

ffmpeg测试rtsp地址

ffmpeg可以用 ffmpeg 通过 tcp协议/udp协议传输流到 null设备&#xff0c;ffmpeg \-rtsp_transport tcp \ # 使用TCP协议传输RTSP流-timeout 5000000 \ # 设置超时时间为5000000微秒&#xff08;5秒&#xff09;-i "rtsp://admin:admin123192.168.1.…

Apache Commons Math_Java科学计算的利器

1. 引言 1.1 科学计算在现代软件开发中的重要性 随着大数据、人工智能和科学计算需求的不断增长,科学计算能力已成为现代软件开发不可或缺的重要组成部分。从金融风险评估到工程仿真,从数据分析到机器学习,科学计算在各行各业中发挥着关键作用。 科学计算涉及复杂的数学运…

Python爬虫框架设计:类封装与工程化实践​

实战中的UA轮换技巧 import fake_useragent import random class DynamicHeader: def init(self): self.ua_generator fake_useragent.UserAgent() # 注意&#xff1a;实际使用需更新数据路径 self.fingerprints [“chrome125”, “edge115”, “safari17”] # 2025年主流指…

5G 三卡图传终端:公安执法的 “移动可视化指挥中枢”

前言 在公安执法中&#xff0c;“实时取证、高效指挥、安全协同” 是破解现场复杂局面的核心需求。传统执法设备常因传输卡顿、证据存证难、跨警种信息断层等问题影响执法效能&#xff0c;而 5G 便携式多卡高清视频融合终端凭借多网聚合、高清编码、安全存储等特性&#xff0c;…