diff options
author | Ronan Collobert <ronan@collobert.com> | 2012-01-25 17:55:20 +0400 |
---|---|---|
committer | Ronan Collobert <ronan@collobert.com> | 2012-01-25 17:55:20 +0400 |
commit | 4df3893abd1b9f840f1d9a8c1859799ccbf941de (patch) | |
tree | e8a1e1cc1b6ea6e47855347b157eaf419fdb357b /MarginRankingCriterion.lua |
initial revamp of torch7 tree
Diffstat (limited to 'MarginRankingCriterion.lua')
-rw-r--r-- | MarginRankingCriterion.lua | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/MarginRankingCriterion.lua b/MarginRankingCriterion.lua new file mode 100644 index 0000000..a365ade --- /dev/null +++ b/MarginRankingCriterion.lua @@ -0,0 +1,25 @@ +local MarginRankingCriterion, parent = torch.class('nn.MarginRankingCriterion', 'nn.Module') + +function MarginRankingCriterion:__init(margin) + parent.__init(self) + margin=margin or 1 + self.margin = margin + self.gradInput = {torch.Tensor(1), torch.Tensor(1)} +end + +function MarginRankingCriterion:updateOutput(input,y) + self.output=math.max(0, -y*(input[1][1]-input[2][1]) + self.margin ) + return self.output +end + +function MarginRankingCriterion:updateGradInput(input, y) + local dist = -y*(input[1][1]-input[2][1]) + self.margin + if dist < 0 then + self.gradInput[1][1]=0; + self.gradInput[2][1]=0; + else + self.gradInput[1][1]=-y + self.gradInput[2][1]=y + end + return self.gradInput +end |