Torch Lua, как вычислить косинусное расстояние для каждой пары одиночных значений двух тензоров?

У меня есть текущая проблема с программированием в Torch.

У меня есть таблица из двух тензоров:

require 'nn'
N = 4
aaaTensor = torch.randn(N)
bbbTensor = torch.randn(N)
thisTable = {aaaTensor, bbbTensor}

Я хотел бы вычислить косинусное расстояние для каждой пары одиночных значений aaaTensor и bbbTensor:

  • косинусное расстояние между aaaTensor[1] и bbbTensor[1]
  • косинусное расстояние между aaaTensor[2] и bbbTensor[2]
  • ...
  • косинусное расстояние между aaaTensor[N] и bbbTensor[N]

И я не знаю, как это сделать. Если я использую модуль nn.CosineDistance() (ссылка) , он вычислит общее косинусное расстояние между aaaTensor и bbbTensor:

cosine = nn.CosineDistance()
cosine:forward{aaaTensor, bbbTensor}
0.7185
[torch.DoubleTensor of size 1]

Я хочу иметь N=4 выхода.

Как мне реализовать вычисление косинусного расстояния один за другим? Спасибо.


person DavideChicco.it    schedule 09.08.2016    source источник
comment
Обычно я ожидаю, что косинусное расстояние будет применяться к двум векторам, но aaaTensor[1] и bbbTensor[2] - это просто числа. Что означает косинусная разность двух чисел?   -  person hugomg    schedule 09.08.2016


Ответы (1)


В документации говорится, что nn.CosineDistance() принимает партии. Итак (хотя косинусное расстояние одиночных значений не имеет смысла) вы можете сделать это так;

require 'nn'
N = 4
aaaTensor = torch.randn(N,1)
bbbTensor = torch.randn(N,1)
thisTable = {aaaTensor, bbbTensor}
cosine = nn.CosineDistance()
cosine:forward{aaaTensor, bbbTensor}
person fmguler    schedule 10.08.2016