在 Pytorch 1.0.0 中,我发现一个 tensor
变量占用的内存非常小。我想知道它是如何存储这么多数据的。
这是代码。
a = np.random.randn(1, 1, 128, 256)
b = torch.tensor(a, device=torch.device('cpu'))
a_size = sys.getsizeof(a)
b_size = sys.getsizeof(b)
a_size
是 262288。b_size
是 72。 最佳答案
答案分为两部分。从 sys.getsizeof
的文档中,首先
所以对于张量 __sizeof__
可能是未定义或定义与您预期的不同 - 此函数不是您可以依赖的。第二
这意味着如果 torch.Tensor
对象仅持有对实际内存的引用,则不会显示在 sys.getsizeof
中。确实是这样,如果你检查底层 storage 的大小,你会看到预期的数字
import torch, sys
b = torch.randn(1, 1, 128, 256, dtype=torch.float64)
sys.getsizeof(b)
>> 72
sys.getsizeof(b.storage())
>> 262208
注意:我将
dtype
明确设置为 float64
,因为这是 dtype
中的默认值 numpy
,而 0x231518 使用 0x231318 默认值 0x231318。关于python - Pytorch:为什么 `tensor`变量占用的内存这么小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54361763/