torch.view().expand()

print(torch.arange(0, 20))
tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])
>>> print(torch.arange(0, 20).view(20, 1, 1))  # view可以改变张量的形状
tensor([[[ 0]],

[[ 1]],

[[ 2]],

[[ 3]],

[[ 4]],

[[ 5]],

[[ 6]],

[[ 7]],

[[ 8]],

[[ 9]],

[[10]],

[[11]],

[[12]],

[[13]],

[[14]],

[[15]],

[[16]],

[[17]],

[[18]],

[[19]]])
>>> print(torch.arange(0, 20).view(20, 1, 1).expand(20, 3, 1))
tensor([[[ 0],
[ 0],
[ 0]],

[[ 1],
[ 1],
[ 1]],

[[ 2],
[ 2],
[ 2]],

[[ 3],
[ 3],
[ 3]],

[[ 4],
[ 4],
[ 4]],

[[ 5],
[ 5],
[ 5]],

[[ 6],
[ 6],
[ 6]],

[[ 7],
[ 7],
[ 7]],

[[ 8],
[ 8],
[ 8]],

[[ 9],
[ 9],
[ 9]],

[[10],
[10],
[10]],

[[11],
[11],
[11]],

[[12],
[12],
[12]],

[[13],
[13],
[13]],

[[14],
[14],
[14]],

[[15],
[15],
[15]],

[[16],
[16],
[16]],

[[17],
[17],
[17]],

[[18],
[18],
[18]],

[[19],
[19],
[19]]])

...................................................................................................................................................

z = torch.arange(0, 20).view(20, 1, 1).expand( 20,3, 2)  #相当于把原来的元素copy成指定的3行2列
>>> z
tensor([[[ 0, 0],
[ 0, 0],
[ 0, 0]],

[[ 1, 1],
[ 1, 1],
[ 1, 1]],

[[ 2, 2],
[ 2, 2],
[ 2, 2]],

[[ 3, 3],
[ 3, 3],
[ 3, 3]],

[[ 4, 4],
[ 4, 4],
[ 4, 4]],

[[ 5, 5],
[ 5, 5],
[ 5, 5]],

[[ 6, 6],
[ 6, 6],
[ 6, 6]],

[[ 7, 7],
[ 7, 7],
[ 7, 7]],

[[ 8, 8],
[ 8, 8],
[ 8, 8]],

[[ 9, 9],
[ 9, 9],
[ 9, 9]],

[[10, 10],
[10, 10],
[10, 10]],

[[11, 11],
[11, 11],
[11, 11]],

[[12, 12],
[12, 12],
[12, 12]],

[[13, 13],
[13, 13],
[13, 13]],

[[14, 14],
[14, 14],
[14, 14]],

[[15, 15],
[15, 15],
[15, 15]],

[[16, 16],
[16, 16],
[16, 16]],

[[17, 17],
[17, 17],
[17, 17]],

[[18, 18],
[18, 18],
[18, 18]],

[[19, 19],
[19, 19],
[19, 19]]])

>>> z.size()
torch.Size([20, 3, 2])

原文地址:https://www.cnblogs.com/xyzluck/p/13025901.html