pytorch 如何在不知道维数的情况下拼接Tensor?

cclgggtu  于 2023-03-12  发布在  其他
关注(0)|答案(2)|浏览(142)

假设我有一个形状为(21, 256, *)的Tensorx,我如何通过编程得到x[:, :48, ...]的等价物?

ee7vknir

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, ...]是等价的。

5t7ly7z5

5t7ly7z52#

上面问题的等效方法是使用torch.index_select

indexes = torch.arange(48)
torch.index_select(myTensor, 1, indexes)

相关问题