火炬中的成对相似性标准

时间:2016-03-06 14:56:04

标签: lua neural-network torch loss

我想在火炬7中实施新的标准。

基本上,我有一对样本,我有一个标准化的相似性实际值(让我们表示它' d')。

在现有的Criterion中,我最接近的是CosineEmbeddingCriterion,它提供了以下损失:

             ⎧ 1 - cos(x1, x2),              if y ==  1
loss(x, y) = ⎨
             ⎩ max(0, cos(x1, x2) - margin), if y == -1

显然这是为双人设计的,但这是针对分类问题的。

在我的问题中,我想实现一个提供以下损失函数的Criterion:  loss(x1, y2, d) = | d - cos(x1,x2) |

不幸的是,与in this question不同,在我看来,我不能简单地将现有标准结合起来。

所以我计划从torch7 source file.

开始创建一个新模块

我的问题如下:

  • 我是否正确,我没有其他任何直接的解决方案?
  • 如果我在火炬7中实施自己的标准:
    • 是否有写标准或指南的骨架?
    • 我该如何检查它是否有效? (如何对它进行单元测试?)

(在我看来,很容易写出一个对我来说似乎正确的标准 - 但不是在实践中)

提前感谢您的任何线索!!

1 个答案:

答案 0 :(得分:1)

您只需要为您的标准编写updateOutputupdateGradInput函数。然后,您可以像任何其他标准一样使用它。这是一个骨架。

https://github.com/torch/nn/blob/master/BCECriterion.lua