Torch Lua,如何计算两个张量的每对单值的余弦距离?

时间:2016-08-09 16:41:54

标签: lua torch cosine-similarity cosine

我在 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()模块(a comment),它将计算aaaTensor和bbbTensor之间的一般余弦距离

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

我想要N = 4个输出。

我怎样才能实现这种逐个余弦距离计算? 感谢

1 个答案:

答案 0 :(得分: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}