3.8.3 高维上转置
在PyTorch中进行转置不仅限于矩阵。 我们可以通过指定应该发生转置(翻转形状和步幅)的两个维度来转置多维数组:
# In[35]:
some_t = torch.ones(3, 4, 5)
transpose_t = some_t.transpose(0, 2)
some_t.shape
# Out[35]:
torch.Size([3, 4, 5])
# In[36]:
transpose_t.shape
# Out[36]:
torch.Size([5, 4, 3])
# In[37]:
some_t.stride()
# Out[37]:
(20, 5, 1)
# In[38]:
transpose_t.stride()
# Out[38]:
(1, 5, 20)
将其值从最右边的维度开始(即,沿着2D张量沿行移动)布置在存储中的张量定义为连续的。连续张量很方便,因为我们可以按顺序有效地访问它们,而无需在存储中四处走动(由于内存访问在现代CPU上的工作方式,提高数据局部性可以提高性能)。 当然,这一优势取决于算法的访问方式。