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

github.com/soumith/cudnn.torch.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoumith Chintala <soumith@gmail.com>2016-02-03 19:17:19 +0300
committerSoumith Chintala <soumith@gmail.com>2016-02-03 19:17:19 +0300
commit677739cf06eb6a59a287d05f6a04b5a32f27ff6f (patch)
tree64fe5aedd2a045e599ba0c22c821d017f2a7a230
parent90fdfbb03b8231129bb114ba033801ec46a20d5e (diff)
parent846bf44460cda72b1e306eb8250577ba341b06f3 (diff)
Merge pull request #103 from ivpopov/patch-2R3
Fixed wrong detection of tensor size 1/x/y/z = x/y/z
-rw-r--r--SpatialConvolution.lua20
-rw-r--r--test/test.lua9
2 files changed, 20 insertions, 9 deletions
diff --git a/SpatialConvolution.lua b/SpatialConvolution.lua
index d691081..99d4acd 100644
--- a/SpatialConvolution.lua
+++ b/SpatialConvolution.lua
@@ -83,17 +83,19 @@ function SpatialConvolution:resetMode()
end
function SpatialConvolution:createIODescriptors(input)
- local batch = true
- if input:dim() == 3 then
- input = input:view(1, input:size(1), input:size(2), input:size(3))
- batch = false
- end
- assert(input:dim() == 4 and input:isContiguous());
- self.iSize = self.iSize or torch.LongStorage(4):fill(0)
+ assert((input:dim() == 3 or input:dim() == 4) and input:isContiguous());
+
if not self.iDesc or not self.oDesc or
- input:size(1) ~= self.iSize[1] or input:size(2) ~= self.iSize[2]
- or input:size(3) ~= self.iSize[3] or input:size(4) ~= self.iSize[4] then
+ input:size(1) ~= self.iSize[1] or input:size(2) ~= self.iSize[2] or
+ input:size(3) ~= self.iSize[3] or
+ (#input:size() == 4 and #self.iSize == 4 and
+ input:size(4) ~= self.iSize[4]) then
self.iSize = input:size()
+ local batch = true
+ if input:dim() == 3 then
+ input = input:view(1, input:size(1), input:size(2), input:size(3))
+ batch = false
+ end
-- resize gradInput
if self.gradInput then self.gradInput:resizeAs(input); end
diff --git a/test/test.lua b/test/test.lua
index ea2ffce..e55e34f 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -221,6 +221,15 @@ function cudnntest.SpatialConvolution_backward_single()
test(sconv, gconv)
end
+function cudnntest.SpatialConvolution_batch_reshape()
+ local gconv = cudnn.SpatialConvolution(4, 8, 4, 4, 2, 2):cuda()
+ local outputBatch = gconv:forward(torch.rand(1, 4, 32, 32):cuda())
+ mytester:asserteq(outputBatch:dim(), 4, 'error in dimension')
+
+ local outputNoBatch = gconv:forward(torch.rand(4, 32, 32):cuda())
+ mytester:asserteq(outputNoBatch:dim(), 3, 'error in dimension')
+end
+
function cudnntest.VolumetricConvolution_forward_single()
local from = math.random(1,16)
local to = math.random(1,16)