御坂10032号 发表于 2024-10-20 04:50

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

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

<p><strong><span style="font-size:22px;">简介</span></strong></p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:22px;"><strong>正文</strong></span></p>

<hr />
<p><strong><span style="font-size:18px;">1、标量</span></strong></p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

<p><span style="font-size:18px;"><strong>2、向量</strong></span></p>

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

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

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>3、矩阵</strong></span></p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

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

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>4、张量</strong></span></p>

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

<p> &nbsp;</p>

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

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

<p>&nbsp;</p>

<p><strong><span style="font-size:18px;">5- 数据的降维</span></strong></p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p>&nbsp;&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>6- 点积</strong></span></p>

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p> &nbsp;</p>

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

<p>&nbsp;</p>

<p>&nbsp;</p>

Jacktang 发表于 2024-10-20 09:12

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

ljg2np 发表于 2024-11-8 15:11

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

<p>&ldquo;点积为矩阵相同元素的相乘的和,这个是不一般的不好理解&rdquo;,应该是指对相同位置元素的相乘的和,如果是相同元素,确实不太好理解。<img height="50" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/time.gif" width="55" /></p>
页: [1]
查看完整版本: 动手学深度学习(PyTorch版)- 【读书活动-心得分享】pytorch 线形代数相关操作