Pytorch中np.multiply.at的等价物
Pytork中是否有np.multiply.at的等价物?我有两个4d数组和一个2d索引数组:Pytorch中np.multiply.at的等价物,pytorch,tensor,torch,numpy-ufunc,Pytorch,Tensor,Torch,Numpy Ufunc,Pytork中是否有np.multiply.at的等价物?我有两个4d数组和一个2d索引数组: base = torch.ones((2, 3, 5, 5)) to_multiply = torch.arange(120).view(2, 3, 4, 5) index = torch.tensor([[0, 2, 4, 2], [0, 3, 3, 2]]) 如我前面所问的(在Numpy中),索引数组的行索引对应于base的第一维和_乘法,索引数组的值对应于base的第三维。我想根据索引从基中取
base = torch.ones((2, 3, 5, 5))
to_multiply = torch.arange(120).view(2, 3, 4, 5)
index = torch.tensor([[0, 2, 4, 2], [0, 3, 3, 2]])
如我前面所问的(在Numpy中),索引数组的行索引对应于base的第一维和_乘法,索引数组的值对应于base的第三维。我想根据索引从基中取出切片,并与to_乘法相乘,它可以在Numpy中实现,如下所示:
np.multiply.at(base1, (np.arange(2)[:,None,None],np.arange(3)[:,None],index[:,None,:]), to_multiply)
但是,现在当我想将其转换为PyTorch时,我找不到与np.multiply等价的方法。在PyTorch中,我只能找到“index\u add\u”方法,但没有“index\u multiply”。我希望避免执行显式for循环
那么我如何在PyTorch中实现上述目标?谢谢 如果其他人也有同样的问题,找到了解决方案:torch scatter软件包有一个scatter\u mul,它可以做到这一点:检查一下:根据您实际计划的乘法值和所需的精度,您总是可以先获取日志,然后应用index\u add,然后对结果进行幂运算。