【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导

这篇具有很好参考价值的文章主要介绍了【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

05 线性代数

1. 基础知识补充

向量相关

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

矩阵相关

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

简单来说,范数是用来衡量矩阵(张量)大小的值,范数的值有不同的规定。

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

2. 代码实现

仅记录一些我比较陌生的知识。

张量的克隆

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
A, A + B

张量的降维

首先定义一个张量x,指定其元素的数据类型为32位的float:

x = torch.arange(4, dtype=torch.float32)
x, x.sum()

接着调用求和函数,因为会对张量中的一些维度进行求和,求和后就相当于是降维了,这里的维度用轴axis来表示,0表示行,1表示列,下面是对行和列同时求和:

A.sum(axis=[0, 1])  # 结果和A.sum()相同

axis = 0按照行,可以理解为把“行”给抹去只剩1行,也就是上下压扁。
axis = 1按照列,可以理解为把“列”给抹去只剩1列,也就是左右压扁。

点积

给定两个向量,它们的点积就是相同位置的元素乘积之和:

y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)

矩阵-向量积、矩阵-矩阵积

矩阵和向量相乘:

A.shape, x.shape, torch.mv(A, x)

矩阵和矩阵相乘:

B = torch.ones(4, 3)
torch.mm(A, B)

范数

向量的范数表示一个向量有多大,这里的大小不涉及维度,指的是分量的大小。

常用的L2范数表示向量元素平方和的平方根,其实是将向量输入一个求平方和平方根的函数,就输出这个向量对应的L2范数:

u = torch.tensor([3.0, -4.0])
torch.norm(u)

这也是唯一一个pytorch中定义的求范数函数,还有一个常用范数叫L1范数,其实就是元素的绝对值之和,它就没有特定的函数来计算了,因为比较好实现:

torch.abs(u).sum()

前两个是对于向量来说的,矩阵的范数一般用的是Frobenius范数,它和L2范数一样,都是求平方和的平方根:

torch.norm(torch.ones((4, 9)))

06 矩阵计算

主要需要知道求导和求梯度的意义:

求导:函数切线的斜率。

求梯度:等高线图上与某点切线垂直的线的斜率(方向),也就是增长最快的方向。

亚导数:将导数拓展到不可微的函数,这里需要用分段函数来指定。

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

要知道标量,向量,矩阵间求导的得数是什么样的,下表中,左边的竖栏表示被求导的,上边的横栏表示求导的(也就是前者关于后者求导或求梯度):

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

07 自动求导

pytorch中可以使用工具来对函数进行自动求导(不用手动),这是基于链式法则和计算图,计算图如下:

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记

自动求导有两种模式,分别是前向传递和反向传递,前向即为下面的正向,也就是自底向上,先求最基础的,再逐步往上求;反向则是由上而下:

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导,# 动手学深度学习,线性代数,深度学习,笔记文章来源地址https://www.toymoban.com/news/detail-770713.html

到了这里,关于【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习笔记之线性代数

    一、向量 在数学表示法中,向量通常记为粗体小写的符号(例如, x , y , z )当向量表示数据集中的样本时,它们的值具有一定的现实意义。例如研究医院患者可能面临的心脏病发作风险,用一个向量表示一个患者,其分量为最近的生命特征、胆固醇水平、每天运动时间等

    2024年02月08日
    浏览(34)
  • 【动手学深度学习】课程笔记 00-03 深度学习介绍及环境配置

    目录 00-01 课程安排 02 深度学习介绍 深度学习实际应用的流程 完整的故事 03 环境配置 1. 学习了这门课,你将收获什么? 深度学习的经典和最新模型:LeNet,ResNet,LSTM,BERT; 机器学习基础:损失函数、目标函数、过拟合、优化; 学习使用Pytorch实现上述知识点。 2. 这门课的

    2024年02月07日
    浏览(68)
  • 深度学习 精选笔记(1)数据基本操作与线性代数

    学习参考: 动手学深度学习2.0 Deep-Learning-with-TensorFlow-book pytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考)的前两个教程,在网上是开源免费的,写的很棒

    2024年03月10日
    浏览(46)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(八):线性回归

    线性函数如下: y ^ = w 1 x 1 + . . . + w d x d

    2024年02月14日
    浏览(32)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(九):从零开始实现线性回归的训练

    在深度学习中,用来训练的数据集通过标注来实现。 咱们在这一步使用函数来生成一组数据集 定义数据生成函数:synthetic_data

    2024年02月14日
    浏览(30)
  • 24 深度卷积神经网络 AlexNet【李沐动手学深度学习v2课程笔记】(备注:含AlexNet和LeNet对比)

    目录 1. 深度学习机器学习的发展 1.1 核方法 1.2 几何学 1.3 特征工程 opencv 1.4  Hardware 2. AlexNet 3. 代码 2001 Learning with Kernels 核方法 (机器学习) 特征提取、选择核函数来计算相似性、凸优化问题、漂亮的定理 2000 Multiple View Geometry in computer vision 抽取特征、描述集合、(非)凸

    2024年03月12日
    浏览(60)
  • 线性代数的本质笔记(3B1B课程)

    最近在复习线代,李永乐的基础课我刷了一下,感觉讲的不够透彻,和我当年学线代的感觉一样,就是不够形象。 比如,行列式为什么那么重要,它的含义究竟是什么?特征值到底代表了什么?等等。说白了,我需要几何直观的理解。 几何直观解决的问题是,我为什么要用

    2024年02月11日
    浏览(24)
  • 李沐《动手学深度学习》线性神经网络 线性回归

    李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 教材:李沐《动手学深度学习》 线性回归基于的 假设 : 假设自变量和因变量之间的关系是线性的,这里通常允许包含观测值的一些噪声; 假设任何噪声都比较正常

    2024年01月21日
    浏览(78)
  • 《动手学深度学习》——线性神经网络

    参考资料: 《动手学深度学习》 样本: n n n 表示样本数, x ( i ) = [ x 1 ( i ) , x 2 ( i ) , ⋯   , x d ( i ) ] x^{(i)}=[x^{(i)}_1,x^{(i)}_2,cdots,x^{(i)}_d] x ( i ) = [ x 1 ( i ) ​ , x 2 ( i ) ​ , ⋯ , x d ( i ) ​ ] 表示第 i i i 个样本。 预测: y ^ = w T x + b hat{y}=w^Tx+b y ^ ​ = w T x + b 表示单个样本的预

    2024年02月12日
    浏览(42)
  • 深度学习-必备的数学知识-线性代数5

    线性代数 在数学中,分解通常指的是将一个复杂的对象或结构分解为更简单的部件或组件。这个概念在许多数学领域都有应用。在线性代数中,矩阵分解是常见的一个主题,我们通过分解矩阵来发现它不明显的性质。 矩阵有许多种的分解方式:LU分解、QR分解、特征分解、奇

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包