Существует ли какая-либо встроенная функция для создания 2D-тензора из 1D-тензора с использованием заданного вычисления c? - PullRequest
0 голосов
/ 09 февраля 2020

Привет, я студент, который только начал углубленное изучение.

Например, у меня есть 1-D тензор x = [1, 2]. Из этого я надеюсь сделать 2D-тензор 'y', у которого (i, j) -й элемент имеет значение (x [i] -x [j]), т.е. y [0 ,:] = [0, 1], y [1,:] = [-1, 0].

Есть ли встроенная функция, подобная этой, в библиотеке pytorch?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Здесь вам нужен правильный тензор, чтобы получить ожидаемый результат, который вы можете получить, используя torch.unsqueeze

x = torch.tensor([1 , 2])
y = x - x.unsqueeze(1)
y
tensor([[ 0,  1],
        [-1,  0]])
1 голос
/ 09 февраля 2020

Есть несколько способов получить этот результат, самый чистый, который я могу придумать, это использовать семантика вещания .

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...