Другим способом было бы просто индексировать в тензор и нарезать то, что необходимо, как в:
# input tensor
t = tensor([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17]]])
# slice the last `block`, then flatten it and
# finally slice all elements but the last one
In [10]: t[-1].view(-1)[:-1]
Out[10]: tensor([12, 13, 14, 15, 16])
Обратите внимание, что, поскольку это базовая нарезка, она возвращает вид .Таким образом, внесение любых изменений в нарезанную часть также повлияет на исходный тензор.Например:
# assign it to some variable name
In [11]: sliced = t[-1].view(-1)[:-1]
In [12]: sliced
Out[12]: tensor([12, 13, 14, 15, 16])
# modify one element
In [13]: sliced[-1] = 23
In [14]: sliced
Out[14]: tensor([12, 13, 14, 15, 23])
# now, the original tensor is also updated
In [15]: t
Out[15]:
tensor([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 23, 17]]])