Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/nn.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorClement Farabet <cfarabet@twitter.com>2014-09-22 00:21:17 +0400
committerSoumith Chintala <soumith@gmail.com>2014-10-27 17:05:15 +0300
commitc721165632345794bb3f5faf6a3502d830c207b6 (patch)
treebbbf58debd6b210c2a72017a22efce124003d429 /test
parent26a9838d89be4eabcc71d30157ade655c2cd6c2c (diff)
SpatialConvolutionMM now support on-the-fly zero-padding.
Interface similar to cunn.SpatialConvolutionMM. To get a layer where osize == isize, do this: local ksize = 5 local padding = (ksize-1)/2 local n = nn.SpatialConvolutionMM(ni,no, ksize,ksize, 1,1, padding) Note: dW/dH still not supported on the CPU version (strides).
Diffstat (limited to 'test')
-rw-r--r--test/test.lua37
1 files changed, 18 insertions, 19 deletions
diff --git a/test/test.lua b/test/test.lua
index 6b490be..593e659 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -842,31 +842,34 @@ function nntest.SpatialConvolution()
end
function nntest.SpatialConvolutionMM()
- local from = math.random(1,10)
+ local from = math.random(2,10)
local to = math.random(1,10)
local ki = math.random(1,5)
local kj = math.random(1,5)
+ local di = 1 -- NOTE: dw/dh still not supported
+ local dj = 1
+ local padding = math.random(0,2)
local outi = math.random(10,20)
local outj = math.random(10,20)
- local ini = outi-1+ki
- local inj = outj-1+kj
- local module = nn.SpatialConvolutionMM(from, to, ki, kj)
+ local ini = outi-padding*2-1+ki
+ local inj = outj-padding*2-1+kj
+ local module = nn.SpatialConvolutionMM(from, to, ki, kj, di, dj, padding)
local input = torch.Tensor(from, inj, ini):zero()
-- stochastic
-
+
local err = jac.testJacobian(module, input)
mytester:assertlt(err, precision, 'error on state ')
-
+
local err = jac.testJacobianParameters(module, input, module.weight, module.gradWeight)
mytester:assertlt(err , precision, 'error on weight ')
-
+
local err = jac.testJacobianParameters(module, input, module.bias, module.gradBias)
mytester:assertlt(err , precision, 'error on bias ')
local err = jac.testJacobianUpdateParameters(module, input, module.weight)
mytester:assertlt(err , precision, 'error on weight [direct update] ')
-
+
local err = jac.testJacobianUpdateParameters(module, input, module.bias)
mytester:assertlt(err , precision, 'error on bias [direct update] ')
@@ -881,28 +884,24 @@ function nntest.SpatialConvolutionMM()
end
-- batch
-
+
--verbose = true
- local batch = math.random(2,5)
- outi = math.random(4,8)
- outj = math.random(4,8)
- ini = outi-1+ki
- inj = outj-1+kj
- module = nn.SpatialConvolutionMM(from, to, ki, kj)
+ local batch = math.random(2,6)
+ module = nn.SpatialConvolutionMM(from, to, ki, kj, di, dj, padding)
input = torch.Tensor(batch,from,inj,ini):zero()
local err = jac.testJacobian(module, input)
mytester:assertlt(err, precision, 'batch error on state ')
-
+
local err = jac.testJacobianParameters(module, input, module.weight, module.gradWeight)
mytester:assertlt(err , precision, 'batch error on weight ')
-
+
local err = jac.testJacobianParameters(module, input, module.bias, module.gradBias)
mytester:assertlt(err , precision, 'batch error on bias ')
local err = jac.testJacobianUpdateParameters(module, input, module.weight)
mytester:assertlt(err , precision, 'batch error on weight [direct update] ')
-
+
local err = jac.testJacobianUpdateParameters(module, input, module.bias)
mytester:assertlt(err , precision, 'batch error on bias [direct update] ')
@@ -915,7 +914,7 @@ function nntest.SpatialConvolutionMM()
mytester:assertlt(err, precision, string.format(
'batch error on bias [%s]', t))
end
-
+
local ferr, berr = jac.testIO(module, input)
mytester:asserteq(0, ferr, torch.typename(module) .. ' - i/o forward err ')
mytester:asserteq(0, berr, torch.typename(module) .. ' - i/o backward err ')