嗨,我是刚刚开始进行深度学习的学生。
例如,我具有一维张量x = [ 1 , 2]
。我希望以此为基础,制作第2个张量y
,其第(i,j)
个元素的值为(x[i] - x[j])
,即y[0,:] = [0 , 1]
,y[1,:]=[ -1 , 0]
。
pytorch库中是否有像这样的内置函数?
谢谢。
答案 0 :(得分:2)
这里您需要张量正确变暗以获得预期的结果,您可以使用torch.unsqueeze
x = torch.tensor([1 , 2])
y = x - x.unsqueeze(1)
y
tensor([[ 0, 1],
[-1, 0]])
答案 1 :(得分:1)
有几种方法可以得到此结果,我能想到的最干净的方法是使用broadcasting semantics。
x = torch.tensor([1, 2])
y = x.view(-1, 1) - x.view(1, -1)
产生
y = tensor([[0, -1],
[1, 0]])
说明如果原始问题明确,我将尝试编辑此答案并删除此说明。
在您的问题中,您要求提供以上代码产生的y[i, j] = x[i] - x[j]
。
您还说您希望y
拥有价值
y = tensor([[ 0, 1],
[-1, 0]])
实际上是y[i, j] = x[j] - x[i]
,如Dishin的答案中所述。如果您要使用后者,则可以使用
y = x.view(1, -1) - x.view(-1, 1)