diff options
author | Clement Farabet <cfarabet@twitter.com> | 2014-09-22 00:21:17 +0400 |
---|---|---|
committer | Soumith Chintala <soumith@gmail.com> | 2014-10-27 17:05:15 +0300 |
commit | c721165632345794bb3f5faf6a3502d830c207b6 (patch) | |
tree | bbbf58debd6b210c2a72017a22efce124003d429 /test | |
parent | 26a9838d89be4eabcc71d30157ade655c2cd6c2c (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.lua | 37 |
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 ') |