假设我有一个形状为(21, 256, *)的Tensorx,我如何通过编程得到x[:, :48, ...]的等价物?
(21, 256, *)
x
x[:, :48, ...]
ee7vknir1#
或者,您可以在纯python中执行此操作,因为
y = x[:, :48, ...]
相当于
y = x[[slice(None), slice(None, 48), Ellipsis]]
我们可以通过编程来构造切片列表
dim = 1 slices = [slice(None)] * dim + [slice(None, 48)] + [Ellipsis] y = x[slices]
请注意,省略号实际上并不是必需的,因为x[:, :48]和x[:, :48, ...]是等价的。
x[:, :48]
5t7ly7z52#
上面问题的等效方法是使用torch.index_select:
torch.index_select
indexes = torch.arange(48) torch.index_select(myTensor, 1, indexes)
2条答案
按热度按时间ee7vknir1#
或者,您可以在纯python中执行此操作,因为
相当于
我们可以通过编程来构造切片列表
请注意,省略号实际上并不是必需的,因为
x[:, :48]
和x[:, :48, ...]
是等价的。5t7ly7z52#
上面问题的等效方法是使用
torch.index_select
: