PyTorch入门学习 7-内存开销问题

avatar 2024年04月15日15:14:13 0 263 views
博主分享免费Java教学视频,B站账号:Java刘哥

使用 id()查询变量的内存地址

会开辟新内存的
  • y = x + y
  • y = torch.add(x, y)
  • y = x.add(y)
不会开辟新内存的
  • y += x
  • y.add_(x)
  • y[:] = x + y
  • torch.add(x, y, out=y)

 

代码

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

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0