-
访问元素
一个元素:
[1,2]
:第一行,第二列;一行:
[1, :]
:第一行所有元素;一列:
[:, 1]
:第一列所有元素;子区域:
[1:3, 1:]
:第一行到第三行,第一列到最后一列 所有元素;子区域:
[::3, ::2]
:隔三行,隔两列的所有元素。(如下图所示)
2. 广播机制
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
'''
a是tensor([[0],
[1],
[2]]),
b是tensor([[0, 1]])
'''
a + b
'''
首先a先复制成[3,2]的tensor,即tensor([[0, 0],
[1, 1],
[2, 2]]),
b也复制成[3,2]的tensor,变成tensor([[0, 1],
[0, 1],
[0, 1]]),
然后在相加,得tensor([[0, 1],
[1, 2],
[2, 3]]),
'''
-
原地操作
运行一些操作可能会导致为新结果分配内存,需要通过原地操作来避免该问题。
X = X + Y # 会对X分配新的内存 X += Y # 原地操作,不会对X分配新的内存 X[:] = X + Y # 原地操作,不会对X分配新的内存
-
tensor.reshape
不会分配新的内存地址,tensor.new
会分配新的内存地址。