Есть несколько способов получить этот результат, самый чистый, который я могу придумать, это использовать семантика вещания .
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]
, как было опубликовано в ответе Дишина. Если вы вместо этого хотели последнее, вы можете использовать
y = x.view(1, -1) - x.view(-1, 1)