获取在PyTorch中存储Tensor所需的内存

fdx2calv  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(220)
import torch
import sys

a = torch.rand(10)
b = torch.rand(100)

sys.getsizeof(a) # 72
sys.getsizeof(a.storage()) # 88
a.element_size() * a.nelement() # 40

sys.getsizeof(b) # 72
sys.getsizeof(b.storage()) # 448
b.element_size() * b.nelement() # 400

在谷歌搜索后,我发现人们使用这3种方法中的一种,但它们都返回3种不同的输出。
哪一个是正确的?

rjee0c15

rjee0c151#

  • sys.getsizeof(a)以字节为单位返回Tensor对象的大小。它包含Python可能添加的任何开销。
  • sys.getsizeof(a.storage())返回Tensor底层存储的字节大小。如果存储在多个Tensor之间共享,则这可能大于Tensor对象本身。
  • a.element_size() * a.nelement()返回Tensor数据缓冲区的大小,单位为字节。这是用于存储Tensor元素的实际内存量。

相关问题