动手学深度学习v2学习笔记02:线性代数矩阵计算自动求导(代码片段)

鱼儿听雨眠 鱼儿听雨眠     2022-12-08     608

关键词:

前文回顾:数据操作、数据预处理

文章目录

一、线性代数实现

1.1 标量和向量

在pytorch中,我们使用一个元素的张量来表示标量
我们可以将向量视为标量值组成的列表。

x = torch.tensor([3.0])				# 标量
y = torch.tensor([2.0, 1.0, 4.0])	# 向量

1.2 矩阵和多维张量

我们可以通过制定两个分量m和n来创建一个形状为 m × n m \\times n m×n矩阵。并且,通过T运算,我们可以对矩阵进行转置。

A = torch.arange(20).reshape(4, 5)	# 矩阵
AT = A.T	# 转置

对称矩阵B,等于其转置: B = B τ B = B^\\tau B=Bτ

就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构

X = torch.arange(24).reshape(2, 3, 4)	# 三维张量

上例中X的内容为:
[ [ 0 1 2 3 4 5 6 7 8 9 10 11 ] [ 12 13 14 15 16 17 18 19 20 21 22 23 ] ] \\beginbmatrix \\beginbmatrix 0 & 1 & 2 & 3 \\\\ 4 & 5 & 6 & 7 \\\\ 8 & 9 & 10 & 11 \\endbmatrix \\beginbmatrix 12 & 13 & 14 & 15 \\\\ 16 & 17 & 18 & 19 \\\\ 20 & 21 & 22 & 23 \\endbmatrix \\endbmatrix 04815926103711 121620131721141822151923

1.3 张量的运算

给定任意两个具有相同形状的张量,任何按元素二元运算的结果都将是相同形状的向量

1.3.1 基础运算

加减乘除:下例中,A、B和C三个矩阵的形状相同。

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

哈达玛积:两个矩阵的按元素乘法称为哈达玛积(数学符号 ⨀ \\bigodot

A = torch.arange(20, dtype=torch.float32).reshape(4, 5)
B = A.clone()
C = A * B	# 哈达玛积

上例和视为如下运算:
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ] ⨀ [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ] = [ 0. 1. 4. 9. 16. 25. 36. 49. 64. 81. 100. 121. 144. 169. 196. 225. 256. 289. 324. 361. ] \\beginbmatrix 0. & 1. & 2. & 3. \\\\ 4. & 5. & 6. & 7. \\\\ 8. & 9. & 10. & 11. \\\\ 12. & 13. & 14. & 15. \\\\ 16. & 17. & 18. & 19. \\endbmatrix \\bigodot \\beginbmatrix 0. & 1. & 2. & 3. \\\\ 4. & 5. & 6. & 7. \\\\ 8. & 9. & 10. & 11. \\\\ 12. & 13. & 14. & 15. \\\\ 16. & 17. & 18. & 19. \\endbmatrix = \\beginbmatrix 0. & 1. & 4. & 9. \\\\ 16. & 25. & 36. & 49. \\\\ 64. & 81. & 100. & 121. \\\\ 144. & 169. & 196. & 225. \\\\ 256. & 289. & 324. & 361. \\endbmatrix 0.4.8.12.16.1.5.9.13.17.2.6.10.14.18.3.7.11.15.19. 0.4.8.12.16.1.5.9.13.17.2.6.10.14.18.3.7.11.15.19. = 0.16.64.144.256.1.25.81.169.289.4.36.100.196.324.9.49.121.225.361.
与标量的运算

a = 2
X = torch.arange(24).reshape(2, 3, 4)
Y = a + X

1.3.2 按特定轴运算

运算方法保持维度不变
按特定轴求和sum(axis=n)sum(axis=n, keepdims=True)
按特定轴求均值mean(axis=n)mean(axis=n, keepdims=True)
按特定轴累加cumsum(axis=n)cumsum(axis=n, keepdims=True)

按特定轴求和:我们可以使用sum()方法,计算其所有元素的和。也可以通过指定axis参数来对张量的部分维度求和。

A = torch.arange(40, dtype=torch.float32).reshape(2, 5, 4)
A_sum_axis0 = A.sum(axis=0)

上例中,我们创建了一个形状为 2 × 5 × 4 2\\times5\\times4 2×5×4的三维张量A,并通过sum(axis=0)方法对其第一维度进行求和。
[ [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ] [ 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ] ] ⟶ [

动手学深度学习v2课程笔记—深度学习基础(代码片段)

参考文章与视频:一、深度学习介绍1.AI地图:符号学—>统计—>机器学习2.应用:广告点击的案例广告排名的三个步骤:(这个和听过的一个讲座一样:社会计算+广告学)触发广告每个广告的点... 查看详情

模型选择+过拟合和欠拟合(动手学深度学习v2)笔记(代码片段)

训练误差和泛化误差训练误差(trainingerror):模型在训练数据集上计算得到的误差泛化误差(generalizationerror):模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望验证数... 查看详情

动手学深度学习v2课程笔记—深度学习基础(代码片段)

参考文章与视频:一、深度学习介绍1.AI地图:符号学—>统计—>机器学习2.应用:广告点击的案例广告排名的三个步骤:(这个和听过的一个讲座一样:社会计算+广告学)触发广告每个广告的点... 查看详情

《动手学深度学习(李沐)》笔记1

实现一个简单的线性回归(mxnet)frommxnetimportndarrayasndfrommxnetimportautogradimportmatplotlib.pyplotaspltimportrandomnum_input=2#变量数num_examples=1000#1000个样例true_w=[2,-3.4]#真实的系数Wtrue_b=4.2#真实的偏倚bX=nd.random_no 查看详情

自注意力selfattentiontransformer多头注意力代码transformer代码动手学深度学习v2

1.自注意力selfattention2.自注意力selfattention代码实现3.Transformer4.多头注意力代码5.Transformer代码6.Q&Atransformer特别适合应用到芯片上。参考https://www.bilibili.com/video/BV19o4y1m7mo?p=1 查看详情

深度学习结课总结和进阶学习优化算法动手学深度学习v2

1.优化算法2.课程总结和进阶学习感谢沐神参考https://www.bilibili.com/video/BV1bP4y1p7Gq/?spm_id_from=autoNext 查看详情

《动手学深度学习》线性回归(pytorch版)

线性回归(PyTorch版)1.线性回归1.1线性回归的基本要素1.1.1模型定义1.1.2模型训练(1)训练数据(2)损失函数(3)优化算法1.1.3模型预测1.2线性回归的表示方法1.2.1神经网络图1.2.2矢量计算表达式小结1.线性回归线性回归输出是一... 查看详情

动手学深度学习——线性代数的实现(代码片段)

"""标量由只有一个元素的张量表示"""importtorchx=torch.tensor([3.0])y=torch.tensor([2.0])print(x+y)print(x*y)print(x/y)print(x**y)"""你可以将向量视为标量值组成的列表"""x=torch.arange(4)print(x)"""... 查看详情

李沐亚马逊资深首席科学家-动手学深度学习v2-介绍篇

讲师介绍李沐是亚马逊资深首席科学家、《动手学深度学习》和深度学习框架MXNet的主要作者。他本科毕业于上海交通大学计算机系ACM班,2012年前往CMU读博,师从机器学习大师AlexSmola和分布式系统教授DaveAndersen。读博期... 查看详情

样式迁移styletransfer动手学深度学习v2(代码片段)

1.样式迁移StyleTransfer2.代码实现3.Q&A越靠近输出端内容还原度越高。不需要算梯度,y.detach(),是因为网络不更新。核心优化的是一个参数矩阵,每做一张图片的风格一样,都要重新训练一遍。后面用GAN来实现,就... 查看详情

跟李沐导师:动手学深度学习!

...个概念。读者只需了解基础的数学和编程,如基础的线性代数、微分和概率,以及基础的Python编程,就可以愉快地开始啃这本书了。目前已经上线了最新PyTorch版本。提前进群学习关注公众号,回复“三月”进学习... 查看详情

bert预训练动手学深度学习v2

1.BERT预训练Transformer编码器2.BERT代码3.BERT预训练数据代码4.BERT预训练代码5.Q&A参考https://www.bilibili.com/video/BV1yU4y1E7Ns/?spm_id_from=autoNext 查看详情

动手学深度学习2.3线性代数练习

矩阵转置常用知识点3.给定任意方阵A,A+A⊤总是对称的吗?为什么?4.本节中定义了形状(2;3;4)的张量X。len(X)的输出结果是什么? 返回的是axis=0的值的大小5、对于任意形状的张量X,len(X)是否总是对应于X特定轴的⻓度?... 查看详情

动手学深度学习v2(代码片段)

动手学深度学习v201课程安排目标内容形式你将学到什么?资源02深度学习介绍AI地图图片分类物体检测和分割样式迁移人脸合成文字生成图片文字生成03安装本地安装01课程安排目标内容深度学习的核心之一:就是卷积神... 查看详情

批量归一化batchnormalization动手学深度学习v2

1.批量归一化BatchNormalization2016年左右出来的2.代码实现对比没有加BN之前的效果,收敛没那么好参考https://www.bilibili.com/video/BV1X44y1r77r?p=1 查看详情

动手学深度学习diveintodeeplearning--day01--学习资料环境配置

正式开始《动手学深度学习v2-从零开始介绍深度学习算法和代码实现》的学习惊诧于李沐老师2021年的视频里就已经提到DALL·E2、ChatGPT等相关的内容了闲话休叙,先贴一下学习资料链接:课程主页:OpenLearningCamp-《动手学深度学习... 查看详情

03安装动手学深度学习v2将远端机器端口映射到本地端口(代码片段)

将远端机器端口映射到本地端口1在阿里云服务器2然后再到win10上,按下"田+R"3http://localhost:8888/tree前面的笔记可以查看:https://blog.csdn.net/qq_38689263/article/details/122153528?spm=1001.2014.3001.55011在阿里云服务器直 查看详情

搞定《动手学深度学习》-(李牧)pytorch版本的所有内容

目录目录简介阅读指南1.深度学习简介2.预备知识3.深度学习基础4.深度学习计算5.卷积神经网络6.循环神经网络7.优化算法8.计算性能9.计算机视觉10.自然语言处理环境参考(大家可以在这里下载代码)原书地址(大家可... 查看详情