pytorch常用函数——线性代数

pytorch常用函数——线性代数

一、矩阵

正如向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶。 矩阵,我们通常用粗体、大写字母来表示 (例如, X 、 Y 和 Z X、Y和Z XYZ), 在代码中表示为具有两个轴的张量。
当调用函数来实例化张量时, 我们可以通过指定两个分量m和n来创建一个形状为 m × n m×n m×n的矩阵。

A = torch.arange(20).reshape(5, 4)
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])

当我们交换矩阵的行和列时,结果称为矩阵的转置(transpose)

A.T
tensor([[ 0,  4,  8, 12, 16],
        [ 1,  5,  9, 13, 17],
        [ 2,  6, 10, 14, 18],
        [ 3,  7, 11, 15, 19]])

二、降维

我们可以对任意张量进行的一个有用的操作是计算其元素的和。在代码中,我们可以调用计算求和的函数:

x = torch.arange(4, dtype=torch.float32)
x, x.sum()
(tensor([0., 1., 2., 3.]), tensor(6.))

默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。 我们还可以指定张量沿哪一个轴来通过求和降低维度。 以矩阵为例,为了通过求和所有行的元素来降维(轴0),我们可以在调用函数时指定axis=0。

A = torch.arange(12).reshape(3, 4)
print(A)
print(A.sum(axis=0))
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
tensor([12, 15, 18, 21])

非降维求和

有时在调用函数来计算总和或均值时保持轴数不变会很有用。

sum_A = A.sum(axis=1, keepdims=True)
tensor([[ 6],
        [22],
        [38]])

例如,由于sum_A在对每行进行求和后仍保持两个轴,我们可以通过广播将A除以sum_A。

A / sum_A
tensor([[0.0000, 0.1667, 0.3333, 0.5000],
        [0.1818, 0.2273, 0.2727, 0.3182],
        [0.2105, 0.2368, 0.2632, 0.2895]])

如果我们想沿某个轴计算A元素的累积总和, 比如axis=0(按行计算),我们可以调用cumsum函数。 此函数不会沿任何轴降低输入张量的维度。

A.cumsum(axis=0)
tensor([[ 0,  1,  2,  3],
        [ 4,  6,  8, 10],
        [12, 15, 18, 21]])

三、点积

给定两个向量 x , y ∈ R d x,y\in R^d x,yRd,它们的点积(dot product)是相同位置的按元素乘积的和: x T y = ∑ i = 1 d x i y i x^Ty=\sum^d_{i=1}x_iy_i xTy=i=1dxiyi

x = torch.arange(4, dtype=torch.float32)
y = torch.ones(4, dtype=torch.float32)
print(x, y, torch.dot(x, y))
tensor([0., 1., 2., 3.]) tensor([1., 1., 1., 1.]) tensor(6.)

点积在很多场合都很有用。 例如,给定一组由向量 x ∈ R d x\in R^d xRd表示的值, 和一组由 w ∈ R d w\in R^d wRd表示的权重。 x x x中的值根据权重 w w w的加权和, 可以表示为点积 x T w x^Tw xTw。 当权重为非负数且和为1(即 ∑ i = 1 d w i = 1 \sum^d_{i=1}w_i=1 i=1dwi=1)时, 点积表示加权平均(weighted average)。 将两个向量规范化得到单位长度后,点积表示它们夹角的余弦

四、矩阵乘法

这里的A是一个5行4列的矩阵,B是一个4行3列的矩阵。 两者相乘后,我们得到了一个5行3列的矩阵。

torch.mm(A, B)

A = torch.arange(20).reshape(5, 4)
B = torch.ones(4, 3)
torch.mm(A, B)

五、范数

线性代数中最有用的一些运算符是范数(norm)。 非正式地说,一个向量的范数告诉我们一个向量有多大。 这里考虑的大小(size)概念不涉及维度,而是分量的大小
在线性代数中,向量范数是将向量映射到标量的函数 f f f

L2范数

欧几里得距离是一个 L 2 L_2 L2范数: 假设维向量 x x x中的元素是 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn,其 L 2 L_2 L2范数是向量元素平方和的平方根:
∣ ∣ x ∣ ∣ 2 = ∑ i = 1 n x i 2 ||x||_2=\sqrt{\sum^n_{i=1}x^2_i} x2=i=1nxi2
在代码中,我们可以按如下方式计算向量的 L 2 L_2 L2范数。

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

L1范数

L 2 L_2 L2范数相比, L 1 L_1 L1范数受异常值的影响较小。 L 1 L_1 L1范数,它表示为向量元素的绝对值之和:
∣ ∣ x ∣ ∣ 1 = ∑ i = 1 n ∣ x i ∣ ||x||_1=\sum{^n_{i=1}|x_i|} x1=i=1nxi

torch.abs(u).sum()

tensor(7.)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要下载PyTorch常用函数手册的PDF,可以按照以下步骤进行: 1. 打开浏览器,进入搜索引擎网站。 2. 在搜索框中输入关键词“PyTorch常用函数手册PDF下载”。 3. 根据搜索结果,选择一个可信的网站,例如官方文档或知名的技术博客。 4. 进入所选网站后,使用网站提供的搜索功能,搜索“PyTorch常用函数手册PDF”。 5. 在搜索结果中找到符合需求的链接或按钮,一般会有一个下载文件的选项。 6. 点击链接或按钮,开始下载PyTorch常用函数手册的PDF文件。 7. 下载完成后,可以在浏览器的下载文件夹中找到该PDF文件。 8. 双击该文件,使用所选的PDF阅读器打开手册。 如果无法找到可信的网站或下载链接,可以尝试以下方法: 1. 在搜索引擎中搜索“PyTorch官方文档”。 2. 进入PyTorch官方网站,找到文档页面或搜索框。 3. 在文档页面或搜索框中输入“常用函数手册”等相关关键词。 4. 在搜索结果中找到所需的PyTorch常用函数手册链接。 5. 点击链接,开始在线浏览该手册。 6. 在浏览器上方或手册界面中,应该有下载或导出为PDF的选项。 7. 点击下载或导出为PDF,将手册保存为PDF文件。 8. 打开下载的PDF文件,使用所选的PDF阅读器阅读PyTorch常用函数手册。 需要注意的是,PyTorch官方网站和其它可信来源的手册都是最可靠的资料,因此最好选择官方文档或来自官方推荐的网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值