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方法更方便。

posted @ 2020-10-21 11:07  wioponsen  阅读(584)  评论(0编辑  收藏  举报