3.7 张量:存储的风景
现在是时候让我们更仔细地了解引擎盖下的实现了。 张量中的值分配在由torch.Storage实例管理的连续内存中。 存储器是数字数据的一维数组:即,包含给定类型数字的连续内存块,例如float(32位表示浮点数)或int64(64位表示整数)。 PyTorch Tensor实例是此类Storage实例的视图,该实例能够使用偏移量和按维度跨度索引到该存储中。
多个张量可以索引同一存储,即使它们以不同的方式索引数据。 我们可以在图3.4中看到一个示例。 实际上,当我们在3.2节中请求points[0]时,我们得到的是另一个张量,该张量索引与点张量相同的存储-并非全部都张紧,并且具有不同的维数(1D与2D)。 但是,基础内存仅分配一次,因此,无论Storage实例管理的数据大小如何,都可以快速完成数据的备用张量视图的创建。