From 3d62e1bbc2f509c3a3a5e0f727de7f414a708d2d Mon Sep 17 00:00:00 2001 From: Clement Farabet Date: Sat, 3 Mar 2012 01:20:56 -0500 Subject: Implementing a call operator for nn modules and criterions. --- Criterion.lua | 6 ++++++ Module.lua | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Criterion.lua b/Criterion.lua index 6513414..dec514c 100644 --- a/Criterion.lua +++ b/Criterion.lua @@ -49,3 +49,9 @@ end function Criterion:cuda() return self:type('torch.CudaTensor') end + +function Criterion:__call__(input, target) + self.output = self:forward(input, target) + self.gradInput = self:backward(input, target) + return self.output, self.gradInput +end diff --git a/Module.lua b/Module.lua index 98ee86c..dd61dc6 100644 --- a/Module.lua +++ b/Module.lua @@ -22,7 +22,7 @@ function Module:updateOutput(input) end function Module:forward(input) - return self:updateOutput(input, target) + return self:updateOutput(input) end function Module:backward(input, gradOutput) @@ -212,3 +212,13 @@ function Module:getParameters() -- return new flat vector that contains all discrete parameters return flatParameters, flatGradParameters end + +function Module:__call__(input, gradOutput) + self:forward(input) + if gradOutput then + self:backward(input, gradOutput) + return self.output, self.gradInput + else + return self.output + end +end -- cgit v1.2.3