PyTorch原地操作数据 (《动手学深度学习》笔记)


链接:http://d2l.ai/

我们可以使用切片表示法将操作的结果分配给先前分配的数组,例如Y[:] 。为了说明这一点,我们首先创建一个新的矩阵Z,其形状与另一个Y相同,使用zeros_like来分配一个全0">0的块。

Z = np.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y
print('id(Z):', id(Z))

out:

id(Z): 140227416695616
id(Z): 140227416695616

如果在后续计算中没有重复使用X,我们也可以使用X[:] Y+= Y来减少操作的内存开销。

before = id(X)
X += Y
id(X) == before

out:

True