使用 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

                            
                                

                
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏