火炬中的成对相似性标准
Pairwise similarity criterion in torch
我想在 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 source file.
创建一个新模块
我的问题如下:
- 我没有任何其他直接的解决方案是正确的吗?
- 如果我在 torch7 中实现我自己的标准:
- 是否有编写标准或指南的框架?
- 如何检查它是否有效? (如何对其进行单元测试?)
(在我看来很容易写出对我来说似乎正确的标准——但在实践中并非如此)
提前感谢您提供任何线索!!
您只需为您的条件编写 updateOutput
和 updateGradInput
函数。然后,您可以像使用任何其他标准一样使用它。这是骨架。
我想在 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 source file.
创建一个新模块我的问题如下:
- 我没有任何其他直接的解决方案是正确的吗?
- 如果我在 torch7 中实现我自己的标准:
- 是否有编写标准或指南的框架?
- 如何检查它是否有效? (如何对其进行单元测试?)
(在我看来很容易写出对我来说似乎正确的标准——但在实践中并非如此)
提前感谢您提供任何线索!!
您只需为您的条件编写 updateOutput
和 updateGradInput
函数。然后,您可以像使用任何其他标准一样使用它。这是骨架。