使用 id()查询变量的内存地址
会开辟新内存的 |
|
不会开辟新内存的 |
|
代码
import torch
# 例1、y = x + y 会重新开辟内存
x = torch.tensor([[1, 2]])
y = torch.tensor([[3, 4]])
id_before = id(y) # 记录y的id
y = y + x # 会重新开辟内存
print(id(y) == id_before) # 与上面的id不同,说明y重新开辟了内存
# 例2、y += x 不会重新开辟内存
x2 = torch.tensor([[1, 2]])
y2 = torch.tensor([[3, 4]])
id_before2 = id(y2) # 记录y的id
y2 += x2 # 不会重新开辟内存
print(id(y2) == id_before2) # 与上面的id相同,说明y没有重新开辟内存
# 例3、y = x.add(y) 会重新开辟内存
x3 = torch.tensor([[1, 2]])
y3 = torch.tensor([[3, 4]])
id_before3 = id(y3) # 记录y的id
print(id(x3.add(y3)) == id_before3)
# 例4、y = torch.add(x, y) 会重新开辟内存
x4 = torch.tensor([[1, 2]])
y4 = torch.tensor([[3, 4]])
id_before4 = id(y4) # 记录y的id
print(id(torch.add(x4, y4)) == id_before4)
# 例5、y.add_(x) 不会重新开辟内存
x5 = torch.tensor([[1, 2]])
y5 = torch.tensor([[3, 4]])
id_before5 = id(y5) # 记录y的id
print(id(y5.add_(x5)) == id_before5)
# 例6、torch.add(x, y, out=y) 不会重新开辟内存
x6 = torch.tensor([[1, 2]])
y6 = torch.tensor([[3, 4]])
id_before6 = id(y6) # 记录y的id
print(id(torch.add(x6, y6, out=y6)) == id_before6)
# 例7、y[:] = x + y 不会重新开辟内存
x7 = torch.tensor([[1, 2]])
y7 = torch.tensor([[3, 4]])
id_before7 = id(y7) # 记录y的id
y7[:] = x7 + y7
print(id(y7) == id_before7)
运行结果
False
True
False
False
True
True
True
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏