Попарный критерий подобия в факеле

Я хочу реализовать новый критерий в torch7.

По сути, у меня есть пара образцов, для которых у меня есть нормализованное реальное значение сходства (обозначим его «d»).

Среди существующих критериев наиболее близким мне может быть CosineEmbeddingCriterion что приводит к следующим потерям:

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

Obviously this is designed for pairs, but this is for classification problems.

В моей проблеме я хочу реализовать критерий, который обеспечивает следующую функцию потерь: loss(x1, y2, d) = | d - cos(x1,x2) |

К сожалению, в отличие от в этом вопросе мне не кажется, что Я не могу просто объединить существующие критерии, чтобы сделать это.

Поэтому я планирую пойти по мучительному пути создания нового модуля из исходного файла torch7 .

Мои вопросы заключаются в следующем:

  • Правильно ли я понимаю, что у меня нет других простых решений?
  • If I implement my own Criterion in torch7 :
    • is there a skeleton to write criterion or a guide ?
    • как я могу проверить, что он действителен? (как провести модульное тестирование?)

(мне кажется, очень легко написать критерий, который кажется мне правильным, но не на практике)

Заранее спасибо за любую подсказку!!


person Fafhrd    schedule 06.03.2016    source источник


Ответы (1)


Вам просто нужно написать функции updateOutput и updateGradInput для вашего критерия. Затем вы можете использовать его, как и любой другой критерий. Вот скелет.

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

person Anurag Ranjan    schedule 08.03.2016
comment
Да, это то, что я понял. Можно также захотеть обеспечить пакетную реализацию своего критерия. - person Fafhrd; 09.03.2016