[讨论] 动手学深度学习(PyTorch版)- 【读书活动-心得分享】pytorch 线形代数相关操作

御坂10032号   2024-10-20 04:50 楼主

简介

 

本章节我们将继续学习Pytorch的前置内容, 关于线形代数的相关操作. 我这里使用的是谷歌的colab, 在本章节的最后我会分享本章节的代码文件.

 

 

正文


1、标量

 

标量指的是只有一个元素的张量, 我们可以使用 torch.tensor() 来快速的创建一个标量, 并且可以使用标量来进行一些基本的数据操作

 

image.png  

2、向量

向量可以理解为一堆标量组成的数值, 可以理解为数组等. 我们可以使用下面的API来快速的创建向量

image.png   在创建向量的时候只需要注意, range 并不包括第二个参数. 我们同时也可以使用len() 来访问向量的长度

 

3、矩阵

 

对于矩阵的理解可以理解为向量的拓展, 即多维数组, 如果当一个矩阵的行和列相等的话, 我们可以称这个矩阵为方阵, square matrix

 

我们可以使用下面的API来快速的创建一个矩阵

 

image.png  

 

上述使用了torch,range创建了一个长度为20的向量, 范围为0 - 19 , 之后通过reshape function来使其向量变成了一个 4 * 5 的矩阵 (20个元素)

 

image.png  

 

我们可以使用矩阵的.T 方法(transpose) 来转制一个矩阵, 即矩阵的行变成列, 列变成行, 那么上述的矩阵经过转制后则变成了下述所示.

 

image.png  

如果当前的矩阵是一个对称矩阵的话, 那么对矩阵进行转置, 转置后的矩阵将会等于原本的矩阵.

 

4、张量

张量这里书上讲的有一点抽象, 就像向量是标量的推⼴,矩阵是向量的推⼴⼀样,我们可以构建具有更多轴的数据结构. 我的个人理解是,张量就是多个二维数组的组合.比如说

image.png  

在上述的代码中,我们使用了arange来指定了一个元素的区间,然后使用reshape function来将这个向量转换成张量 即两个3* 4 的矩阵, 并且同时我们可以使用上述的张量进行一些数学操作.

有一点需要注意的是, 如果我们使用一个张量对一个标量进行数据操作的时候, 输出的结果并不会影响张量的形状.

 

5- 数据的降维

数据的降维是指将高维数据转换为低维数据的过程,同时尽量保留原始数据中最重要的结构和信息。降维的目的是减少数据的复杂性,去除冗余信息,便于分析、可视化和建模。降维技术在处理高维数据(如图像、文本或基因表达数据)时尤其有用,因为高维数据可能存在"维度灾难"问题,导致模型性能下降或计算成本过高。

 

image.png  

 

 

同样可以指定,对哪一个数据的轴进行降维。

 

image.png  

 

上述的代码演示了基于数据轴的两个轴进行降维, 分别是轴0 即X轴, 轴1即Y轴。

 

image.png   

同时在求和的时候也可以保证维度的不变.

 

image.png  

 

6- 点积

 

点积为矩阵相同元素的相乘的和, 比如说下述的操作, 实际上为数组上中每个位置中的元素乘另一个数组内相同位置的和.

 

image.png  

向量积,矩阵乘法和范数,我还没有搞明白, 还需要额外的再补一下数学知识, 看书没有看懂

 

 

本帖最后由 御坂10032号 于 2024-10-20 04:50 编辑

回复评论 (2)

点积为矩阵相同元素的相乘的和,这个是不一般的不好理解

点赞  2024-10-20 09:12
引用: Jacktang 发表于 2024-10-20 09:12 点积为矩阵相同元素的相乘的和,这个是不一般的不好理解

“点积为矩阵相同元素的相乘的和,这个是不一般的不好理解”,应该是指对相同位置元素的相乘的和,如果是相同元素,确实不太好理解。

点赞  2024-11-8 15:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复