Python 对PyTorch张量的中间维使用省略号
假设我有一个形状为(8,3,32,32)的Python 对PyTorch张量的中间维使用省略号,python,pytorch,Python,Pytorch,假设我有一个形状为(8,3,32,32)的torch.Tensor t。我只想沿着第一个和最后两个维度建立索引 在我的用例中,t是一批8个图像,我想修改其中的一个补丁。假设面片由索引[code>idx_last=torch.tensor([[0,0],[0,1],[1,0],[1,1]])给出。 我还有idx1=torch.arange(4):我想要前4幅图像的补丁 以下操作不起作用: t[idx1,…,idx\u last] 有什么办法可以做到这一点吗?我找到了一个解决办法,尽管它可能不是最有
torch.Tensor t
。我只想沿着第一个和最后两个维度建立索引
在我的用例中,t
是一批8个图像,我想修改其中的一个补丁。假设面片由索引[code>idx_last=torch.tensor([[0,0],[0,1],[1,0],[1,1]])给出。
我还有idx1=torch.arange(4)
:我想要前4幅图像的补丁
以下操作不起作用:
t[idx1,…,idx\u last]
有什么办法可以做到这一点吗?我找到了一个解决办法,尽管它可能不是最有效的。 在
idx1
为一维(数据点选择)且idx\u last
为多维的情况下,以下得到想要的结果:
t[(idx1, ...) + tuple(idx_last.T)]
更好的解决方案当然是受欢迎的。我找到了一个解决方案,尽管它可能不是最有效的。 在
idx1
为一维(数据点选择)且idx\u last
为多维的情况下,以下得到想要的结果:
t[(idx1, ...) + tuple(idx_last.T)]
我们绝对欢迎更好的解决方案。它应该会起作用。你面临的问题是什么?我有一些问题。在上一个示例中,我通过执行以下操作使其工作:
idx=tuple((在idx_last.T中x代表x))
然后T[(idx1,…)+idx]
出于某种原因T[(idx1,…)+tuple(idx_last.T)]
的形状与T[idx1,…,idx_last.T]
的形状不一样,应该可以工作。你面临的问题是什么?我有一些问题。在上一个示例中,我通过执行以下操作使其工作:idx=tuple((idx_last.T中的x代表x))
然后T[(idx1,…)+idx]
出于某种原因,T[(idx1,…)+tuple(idx_last.T)]
与T[idx1,…,idx_last.T]的形状不同。