1. 入门
张量表示一个由数值组成的数组。具有一个轴的张量对应数学上的向量,两个轴的张量对应矩阵。
导入pytorch

x.range(12) 表示创建包含十二个元素的行向量,默认为0-11

x.shape:用于访问张量的形状
x.numel: 用于得到张量中元素总数

x.reshape: 可以在不改变原本元素个数的基础上改变张量形状

x.zeros((x,y,z)) : 创建 xyz的全0张量
x.ones((x,y,z)) : 创建xyz的全1 张量

torch.randn(x,y) : 随机采样得到张量中每个元素的值
torch.tensor([ [],[],[] ]) : 通过提供包含数值的python列表(或嵌套列表), 为张量赋值

2. 运算符
+,-,,/,**(求幂运算)对于任意具有相同形状的张量,均是按元素运算

torch.exp(x) : 计算e的x幂(x是张量)

张量连接: 需提供张量列表,并给出沿哪个轴连接
torch.cat((x,y),dim=n) : 将张量x,y连接,按照维度n为进行连接
例如:假设x,y是34的矩阵
dim = 0 ,即按行连接,连接矩阵后变为64的矩阵
dim = 1,即按列连接,连接矩阵和变为38的矩阵

同理可扩展到n个轴的张量连接
逻辑运算符构建二元张量:x==y,对应位置为true/false
x.sum(): 元素求和

3.广播机制
广播机制:形状不用的张量会扩展为更大的形状相同的张量

4. 索引和切片
张量中的元素可以通过索引访问(第一个元素索引为0,最后一个元素索引为-1)
切片时,区间为左闭右开(例[1:3],选定元素下标为1和2)


通过指定索引将元素写入矩阵:" :" 选定当前轴上所有元素

5. 节省内存
y = x +y; # 可能会分配新的内存,后面的y与前面的y在不同的空间
使用切片表示法,执行原地操作(保证不分配新的空间) : y[ : ] = < expression >

可以看到z的地址没有变化,使用切片表示法不会分配新空间
6. 转换为其他python对象
Numpy张量转换为tensor张量: torch.tensor(x.numpy())
tensor张量转换为numpy张量: a.item() # a是tensor张量
&spm=1001.2101.3001.5002&articleId=145078329&d=1&t=3&u=3025e87c49614da48bb7d5de55703d8e)
9503

被折叠的 条评论
为什么被折叠?



