PyTorch中的contiguous()
ref:https://blog.csdn.net/g11d111/article/details/90417308
看别人的pytorch代码中,经常有些地方会有使用.contiguous()
,而有些地方去掉会报错,所以就这个问题搜索了下。
该操作保证tensor内存行优先进行连续排列。某些Tensor操作(如transpose、permute、narrow、expand)与原Tensor是共享内存中的数据,不会改变底层数组的存储,但原来在语义上相邻、内存里也相邻的元素在执行这样的操作后,在语义上相邻,但在内存不相邻,即不连续了(is not contiguous)。
PyTorch在0.4版本以后提供了reshape
方法,实现了类似于 tensor.contigous().view(*args)
的功能,如果不关心底层数据是否使用了新的内存,则使用reshape方法更方便。