首先明确,torch.layout是torch.tensor的一种属性,除此之外还有torch.dtype,torch.device,这三个都是在创建tensor时经常需要说明的属性
官方文档的解释:
torch.layout代表对应torch.tensor变量的memory layout。目前,我们的torch.layout有torch.stried和torch.sparse_coo这两种,(一般默认值使用torch.stried)
接下来详细的介绍troch.stried(比较常用)
troch.stried是dense Tensors最经常使用的memory layout,设置好torch.layout=torch.stried后,此时调用tensor.strides会返回一个整数列表(int list):第k个整数代表tensors的第k维从一个元素转到下一个元素所需要的内存。
如果是第一次接触torch.layout看到这是不是已经懵逼了,啥是memory layout呀,有没有什么例子呀,接着往下看
Memory layout:中文叫做内存布局,是告诉你这个tensor是怎么在内存中排列的,我们来举个例子(官方例子)
(创建tensor时没有指定torch.layout,使用的默认值torch.strided)
这个例子可以解读为在第一维中,一个元素到下一个元素需要5个内存,而在第二个维度中,一个元素到下一个元素需要一个内存
layout这个属性有什么用呢,这个概念的引入可以高效的进行很多tensor操作
pytorch小白的学习笔记,大家仅供参考