动手学深度学习2预备知识

pytorch函数总结

torch.tensor可以按元素([ ])计算,也可以按线性代数计算;轴0是第几行,轴1是第几列

按元素计算

连结,按轴0和轴1, 把它们端对端地叠起来形成一个更大的张量

// torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

逻辑运算符构建二元张量 X==Y

对张量中的所有元素进行求和,会产生一个单元素张量 X.sum()

广播机制会让行向量和列向量分别复制后再相加(广播机制让矩阵运算的形状要求不再严格)

索引和切片,可以用[-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素

// X[-1], X[1:3]
(tensor([ 8.,  9., 10., 11.]),
 tensor([[ 4.,  5.,  6.,  7.],
 [ 8.,  9., 10., 11.]])

节省内存
运行Y = Y + X后,Python首先计算Y + X,为结果分配新的内存,然后使Y指向内存中的这个新位置。
可以使用切片表示法将操作的结果分配给先前分配的数组,例如Y[:] = ,这样可以执行原地操作,或者使用Y += X

按线性代数计算

向量

在数学表示法中,向量通常记为粗体、小写的符号 (例如xyz
大量文献认为列向量是向量的默认方向,在本书中也是如此,x=[x1,x2,…,xn],x1,x2,…xn是向量的元素,向量的长度通常称为向量的维度。
向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量。 然而,张量的维度用来表示张量具有的轴数。 在这个意义上,张量的某个轴的维数就是这个轴的长度

torch.arange(start,step,end)//返回的一维张量,其值介于区间 [ start , end ] ,以 step 为步长等间隔取值

torch.size()和tensor.shape
shape是一个Tensor类中的属性,因为我们用tensor函数创建张量的时候(注意tensor是一个函数,Tensor是一个类)
,用到了Tensor类,然后创建的实例就可以使用Tensor中的属性
size是Tensor从上面的类中继承来的一个方法中的一个方法

矩阵

向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶,矩阵,我们通常用粗体、大写字母来表示 ( X,Y,Z), 在代码中表示为具有两个轴的张量。

A = torch.arange(20).reshape(5, 4),5*4的矩阵
B=A.T,矩阵的转置,bij=aji

矩阵中的行可能对应于不同的房屋(数据样本),而列可能对应于不同的属性,尽管单个向量的默认方向是列向量,但在表示表格数据集的矩阵中, 将每个数据样本作为矩阵中的行向量更为常见,这种约定将支持常见的深度学习实践。 例如,沿着张量的最外轴,我们可以访问或遍历小批量的数据样本。

张量

张量(本小节中的“张量”指代数对象)是描述具有任意数量轴的n维数组的通用方法,向量是一阶张量,矩阵是二阶张量

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

降维

我们可以对任意张量进行的一个有用的操作是计算其元素的和,一个与求和相关的量是平均值(mean或average)

A.sum()//size[5,4]
A_sum_axis0 = A.sum(axis=0),输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失,size[4]
A_sum_axis1 = A.sum(axis=1),通过汇总所有列的元素降维(轴1),输入轴1的维数在输出形状中消失,size[5]

非降维

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

点积

点积dot是相同位置的按元素乘积的和

在这里插入图片描述

torch.dot(x, y) = torch.sum(x * y)

向量积

在代码中使用张量表示矩阵-向量积,我们使用mv函数。 当我们为矩阵A和向量x调用torch.mv(A, x)时,会执行矩阵-向量积。 注意,A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。后续章节将讲到,我们也可以使用矩阵-向量积来描述在给定前一层的值时, 求解神经网络每一层所需的复杂计算

torch.mv(A, x)

范数

线性代数中最有用的一些运算符是范数(norm)。 非正式地说,向量的范数是表示一个向量有多大。 这里考虑的大小(size)概念不涉及维度,而是分量的大小。
在深度学习中,我们经常试图解决优化问题: 最大化分配给观测数据的概率; 最小化预测和真实观测之间的距离。 用向量表示物品(如单词、产品或新闻文章),以便最小化相似项目之间的距离,最大化不同项目之间的距离。 目标,或许是深度学习算法最重要的组成部分(除了数据),通常被表达为范数。

torch.norm(u),L2范数,向量元素平方和的平方根
torch.abs(u).sum(),L1范数,向量元素的绝对值之和
torch.norm(torch.ones((4, 9))), Frobenius范数(Frobenius norm)是矩阵元素平方和的平方根

自动微分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值