2

我想在torch7 中实现一个新的标准。

基本上,我有一对样本,我有一个归一化的相似性实际值(我们将其表示为“d”)。

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

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

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

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

不幸的是,与这个问题不同,在我看来,我不能简单地结合现有标准来做到这一点。

所以我打算继续痛苦地从torch7源文件创建一个新模块。

我的问题如下:

  • 我是否正确,我没有任何其他直接的解决方案?
  • 如果我在 torch7 中实现自己的标准:
    • 是否有框架可以编写标准或指南?
    • 我如何检查它是否有效?(如何进行单元测试?)

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

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

4

1 回答 1

1

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

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

于 2016-03-08T21:35:16.727 回答