1、torch.is_storage(obj)函数介绍

测试obj是不是storage类型,如果是的话就返回True,否则返回False。

2、什么是Storage?

在PyTorch中,Tensor 分为头信息区(Header)和存储区(Storage)。头信息区(Header)主要存储Tensor的形状(size)、步长(stride)、数据类型(type)等信息,其真正的数据保存为连续数组,存储在存储区(Storage)中。

一般来说PyTorch中Tensor的数据很大,可能是成千上万的,所以我们头信息区(Header)通常占用的内存比较少,主要内存的占用取决于Tensor中元素的数目,也就是存储区(Storage)的大小。

import torch

a = torch.rand(3, 5)
print(a)
print(a.storage())

运行上述代码可以看到Storge只是一连串的数据而已,并没有别的信息。

3、torch.Storage存储的数据类型

torch.Storage存储的数据类型取决于Tensor的默认数据类型,例如默认数据类型为torch.float,则torch.Storage将会具体化为torch.FloatStorage。

4、torch.Storage实现共享内存

不同的Tensor的头部信息一般是不同的,但是它们使用的Storage可能相同,也就是共享内存。