这里以torch.Tensor
下的reshape
,view
,resize_
来举例
reshape
和view
之间的区别
相同点:都是可以改变tensor
的形状
不同点:
-
.view()
方法只能改变连续的(contiguous)张量,否则需要先调用.contiguous()
方法;而.reshape()
方法不受此限制;如果对 tensor 调用过transpose
,permute
等操作的话会使该 tensor 在内存中变得不再连续。 -
.view()
方法返回的张量与原张量共享基础数据(存储器,注意不是共享内存地址);.reshape()
方法返回的可能是原张量的copy,也可能不是,这个我们不知道。
下面举个例子说明一下第一个不同点:
import torch
x = torch.randn