.reshape(m,n)
和.view(m,n)
实质上是将元素重组为新的shape。
.reshape(m,n)
只可用于numpy的ndarray,不可用于torch的tensor。
.view(m,n)
对于numpy的ndarray和torch的tensor都可用
(即:对于tensor只能用.view(m,n)
)。
示例如下:
import numpy as np
import torch
# 生成 numpy 的 ndarray, 3行4列
b=np.array([[ 0, 1, 2,3],
[ 4,5,6,7],
[ 8,9, 10,11]])
print(b)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(b.shape)
# (3, 4)
# 用 .reshape(m,n) 更改 a 的形状为4行3列
a=b.reshape(4,3)
print(a)
# [[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]]
print(a.shape)
# (4, 3)
# 将 numpy 的 ndarray 改为 torch 的 tensor,3行4列
c=torch.from_numpy(b)
print(c)
# tensor([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]], dtype=torch.int32)
print(c.shape)
# torch.Size([3, 4])
# 用 .view(m,n) 更改 c 的形状为4行3列
d=c.view(4,3)
print(d)
# tensor([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 9, 10, 11]], dtype=torch.int32)
print(d.shape)
# torch.Size([4, 3])
# 用 .reshape(m,n) 更改 c 的形状为4行3列
e=c.reshape(4,3)
print(e)
# tensor([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 9, 10, 11]], dtype=torch.int32)
print(e.shape)
# torch.Size([4, 3])
view_as(tensor)
返回与给定的tensor
相同 shape 的原tensor
。
示例:
a = torch.Tensor(2, 4)
b = a.view_as(torch.Tensor(4, 2))
print (b)
# tensor([[1.3712e-14, 6.4069e+02],
# [4.3066e+21, 1.1824e+22],
# [4.3066e+21, 6.3828e+28],
# [3.8016e-39, 0.0000e+00]])