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 /VolumetricConvolution.lua |
initial revamp of torch7 tree
Diffstat (limited to 'VolumetricConvolution.lua')
-rw-r--r-- | VolumetricConvolution.lua | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/VolumetricConvolution.lua b/VolumetricConvolution.lua new file mode 100644 index 0000000..4262199 --- /dev/null +++ b/VolumetricConvolution.lua @@ -0,0 +1,51 @@ +local VolumetricConvolution, parent = torch.class('nn.VolumetricConvolution', 'nn.Module') + +function VolumetricConvolution:__init(nInputPlane, nOutputPlane, kT, kW, kH, dT, dW, dH) + parent.__init(self) + + dT = dT or 1 + dW = dW or 1 + dH = dH or 1 + + self.nInputPlane = nInputPlane + self.nOutputPlane = nOutputPlane + self.kT = kT + self.kW = kW + self.kH = kH + self.dT = dT + self.dW = dW + self.dH = dH + + self.weight = torch.Tensor(nOutputPlane, nInputPlane, kT, kH, kW) + self.bias = torch.Tensor(nOutputPlane) + self.gradWeight = torch.Tensor(nOutputPlane, nInputPlane, kT, kH, kW) + self.gradBias = torch.Tensor(nOutputPlane) + + self:reset() +end + +function VolumetricConvolution:reset(stdv) + if stdv then + stdv = stdv * math.sqrt(3) + else + stdv = 1/math.sqrt(self.kT*self.kW*self.kH*self.nInputPlane) + end + self.weight:apply(function() + return torch.uniform(-stdv, stdv) + end) + self.bias:apply(function() + return torch.uniform(-stdv, stdv) + end) +end + +function VolumetricConvolution:updateOutput(input) + return input.nn.VolumetricConvolution_updateOutput(self, input) +end + +function VolumetricConvolution:updateGradInput(input, gradOutput) + return input.nn.VolumetricConvolution_updateGradInput(self, input, gradOutput) +end + +function VolumetricConvolution:accGradParameters(input, gradOutput, scale) + return input.nn.VolumetricConvolution_accGradParameters(self, input, gradOutput, scale) +end |