2016-08-09 2 views
2

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

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

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() (link), она будет вычислять общего косинус расстояния между aaaTensor и bbbTensor:

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

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

Как я могу реализовать это вычисление косинусоидального расстояния один на один? Thanks

+2

Обычно я бы ожидать, что расстояние косинус будет применен к двум векторам, но 'aaaTensor [1] и' bbbTensor [2] 'только числа. Что означает разность косинусов двух чисел? – hugomg

ответ

2

documentation 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} 
Смежные вопросы