数据操作
入门
1 | import torch |
运算符
+,-, *, / 等基本运算符的操作的对象都是按位进行的
1 | # 以自然数e作为底数,对张量x进行求幂运算,最后得到一个新的张量 |
广播机制
对于两个不同维度的张量进行运算符操作,会使用广播机制 按列优先对于tensor进行扩充,目的是为了保持tensor维度的一致
例: x = [3, 1] y = [1, 2] 最后的运算结果z 会变为[3,2]的矩阵
pytorch 官网中对于可以广播的条件的解释: Broadcasting semantics — PyTorch 2.4 documentation
简单来说,广播机制需要满足以下条件:
- 其中一个张量的维数不能为0
- 从最后一个维度开始(即从右往左数),依次对比每个张量的维度,它们必须满足以下条件中的一个,否则就会被视为不可广播的:
- 其中一个维度为1
- 两个维度相同
- 有一个维度不存在
对于广播机制的空间化理解:Pytorch中的广播机制(Broadcast)_pytorch广播机制-CSDN博客
索引和切片
1 | #使用[0]访问第一个元素,使用[-1]访问最后一个元素 |
就地更新
使用运算符默认会为运算结果分配一个新的地址空间,并将引用指向它,为了实现就地跟新,可以:
- 使用 x[:] = x + y
- 使用 += 符号, 例: x += y