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可能相同,也就是共享内存。

5、学习建议

很多人连Tensor的底层都不清楚,不知道Storage这个东西,这是非常可惜的。很多人执着于读论文、跑开源、学算法,但是忽略了最底层的基本功,连PyTorch都用不好,这是一个非常错误的做法。很多人问我,某某你会吗?我总数回答:只要是用PyTorch,我都会。因为我深刻体会到了学好PyTorch,我也提醒各位读者,学好PyTorch十分重要。欢迎大家关注红黑树技术联盟,这里有高质量的PyTorch资料,让我们一起努力吧。