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 个输出。

我该如何实现逐个计算余弦距离? 谢谢

点赞
用户213123
用户213123

文档表明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}
2016-08-10 07:01:17