矩阵的左上角坐标是(0,0)
X[1:3]是左闭右开,故只能取1和2。
矩阵可以正的读,也可以倒着读。例如X[-1]和X[0]一样。
X = torch.arange(12).reshape((3,4))
X, X[-1], X[1:3] #X[-1]表示最后一行,X[1:3]是第二和第三行,[1:3]左闭右开
out:
(tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]),
tensor([ 8, 9, 10, 11]),
tensor([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]))
运行下面操作会导致新结果分配内存
Y = torch.arange(2,26,2).reshape(3,4)
before = id(Y)
Y = Y + X
id(Y) == before
out: false
原地操作如下,可不改变内存
before = id(X)
X += Y
a = id(X) == before
X[:] = X + Y
b = id(X) == before
a,b
out:
(True, True)
数据可以转换为Numpy张量
A = X.numpy()
B = torch.tensor(A)
type(A), type(B), A, X
out:
(numpy.ndarray,
torch.Tensor,
array([[ 10, 26, 42, 58],
[ 74, 90, 106, 122],
[138, 154, 170, 186]], dtype=int64),
tensor([[ 10, 26, 42, 58],
[ 74, 90, 106, 122],
[138, 154, 170, 186]]))
也可以将大小为1的张量转换为python标量
a = torch.tensor([2.6])
a, a.item(), float(a), int(a)
out:
(tensor([2.6000]), 2.5999999046325684, 2.5999999046325684, 2)