有一些对Tensor的操作不会真正改变Tensor的内容(真实维度),不会开辟新内存空间来存放处理之后的数据,新数据与原始数据共享同一块内存,改变的仅仅是Tensor中字节位置的索引。
这些操作如下:
narrow(), view(), expand(), transpose()
因此在进行这些操作之前,需要使用contiguous()确保将数据划分到整块内存。
参考资料[2]说明很详细,非常推荐看一下。
参考:
[1] 理解PyTorch的contiguous() [CSDN]
[2] pytorch中的 contiguous 是如何设计的? [知乎]