是否有使用特定计算从一维张量制作二维张量的内置函数?

时间:2020-02-09 12:42:47

标签: pytorch

嗨,我是刚刚开始进行深度学习的学生。

例如,我具有一维张量x = [ 1 , 2]。我希望以此为基础,制作第2个张量y,其第(i,j)个元素的值为(x[i] - x[j]),即y[0,:] = [0 , 1]y[1,:]=[ -1 , 0]

pytorch库中是否有像这样的内置函数?

谢谢。

2 个答案:

答案 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)