不同点:
view()
方法只能改变连续的(contiguous)张量,否则需要先调用.contiguous()
方法;而.reshape()
方法不受此限制;如果对 tensor 调用过 transpose
, permute
等操作的话会使该 tensor 在内存中变得不再连续。
其中可使用is_contiguous()来判断是否是连续的张量,is_contiguous
直观的解释: Tensor底层一维数组元素的存储顺序与Tensor按行优先一维展开的元素顺序是否一致。如果我们在 transpose、permute 操作后执行 view,Pytorch 会抛出错误