两者都是用来重塑tensor的shape的。view只适合对满足连续性条件(contiguous)的tensor进行操作,而reshape同时还可以对不满足连续性条件的tensor进行操作,具有更好的鲁棒性。view能干的reshape都能干,如果view不能干就可以用reshape来处理。
PyTorch: view( )用法详解
pytorch中的 view() 函数相当于numpy中的resize( )函数,都是用来重构(或者调整)张量维度的,用法稍有不同。
1. view(参数a, 参数b, 参数c…)
>>> import torch
>>> re = torch.tensor([1, 2, 3, 4, 5, 6])
>>> result = re.view(3,2)
>>> result
tensor([[1, 2],
[3, 4],
[5, 6]])
2. view(-1)
>>> import torch
>>> re = torch.tensor([[1, 2],
[3, 4],
[5, 6]])
>>> result = re.view(-1)
>>> result
tensor([1, 2, 3, 4, 5, 6])
view(-1)将张量重构成了1维的张量。
3. view(-1, 参数b)
>>> import torch
>>> re = torch.tensor([1, 2, 3, 4, 5, 6])
>>> result = re.view(-1, 2)
>>> result
tensor([[1, 2],
[3, 4],
[5, 6]])
torch.view(-1, 参数b),则表示在参数a未知,参数b已知的情况下自动补齐行向量长度,在这个例子中b=3,re总共含有6个元素,则a=6/2=3。
网友评论