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
path: root/test
diff options
context:
space:
mode:
authorsoumith <soumith@gmail.com>2016-01-26 18:17:14 +0300
committersoumith <soumith@gmail.com>2016-01-26 18:17:14 +0300
commit0f2d96a6bb565a3e0cfd890d15d828808ebad39b (patch)
tree745e6c0da7bc2ea4647a977d755cebbc38bc18ac /test
parentae0c2e3d897aa5fa699530e25d026d7ba301965c (diff)
syncing uptil master/R3 9bc3cbac4f054438f5e77824f868cd94e9e22f81
Diffstat (limited to 'test')
-rw-r--r--test/test.lua84
1 files changed, 80 insertions, 4 deletions
diff --git a/test/test.lua b/test/test.lua
index e11f048..e4afe5a 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -5,9 +5,11 @@ local cudnntest = {}
local precision_forward = 1e-4
local precision_backward = 1e-2
local precision_jac = 1e-3
+local precision_io = 1e-5
local nloop = 1
local times = {}
local mytester
+local jac = nn.Jacobian
function cudnntest.SpatialConvolution_forward_batch()
local bs = math.random(1,32)
@@ -32,6 +34,11 @@ function cudnntest.SpatialConvolution_forward_batch()
cutorch.synchronize()
local error = rescuda:float() - groundtruth:float()
mytester:assertlt(error:abs():max(), precision_forward, 'error on state (forward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
@@ -175,7 +182,7 @@ function cudnntest.TemporalConvolution_batch()
local input = torch.randn(bs,ini,inputFrameSize):cuda()
local gradOutput = torch.randn(bs,outi,outputFrameSize):cuda()
- local sconv = nn.TemporalConvolution(inputFrameSize,outputFrameSize, ki, si):cuda()
+ local sconv = nn.TemporalConvolution(inputFrameSize,outputFrameSize, ki, si):cuda()
local groundForward = sconv:forward(input)
sconv:zeroGradParameters()
local groundgrad = sconv:backward(input, gradOutput, scale)
@@ -228,7 +235,7 @@ function cudnntest.TemporalConvolution_padding_batch()
local input = torch.Tensor(bs,ini - 2 * pad_h, inputFrameSize):cuda()
input:copy(inputpadded:narrow(2, pad_h+1, ini - 2 * pad_h))
local gradOutput = torch.randn(bs,outi,outputFrameSize):cuda()
- local sconv = nn.TemporalConvolution(inputFrameSize,outputFrameSize, ki, si):cuda()
+ local sconv = nn.TemporalConvolution(inputFrameSize,outputFrameSize, ki, si):cuda()
local groundForward = sconv:forward(inputpadded)
sconv:zeroGradParameters()
local groundgrad = sconv:backward(inputpadded, gradOutput, scale)
@@ -338,6 +345,11 @@ function cudnntest.VolumetricConvolution_forward_single()
local error = rescuda:float() - groundtruth:float()
mytester:assertlt(error:abs():max(), precision_forward,
'error on state (forward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
function cudnntest.VolumetricConvolution_backward_single()
@@ -433,6 +445,11 @@ function cudnntest.VolumetricMaxPooling_batch()
mytester:assertlt(error:abs():max(), precision_forward, 'error on state (forward) ')
error = resgrad:float() - groundgrad:float()
mytester:assertlt(error:abs():max(), precision_backward, 'error on state (backward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
function cudnntest.VolumetricMaxPooling_single()
@@ -497,7 +514,7 @@ function cudnntest.SpatialMaxPooling_batch()
local groundgrad = sconv:backward(input, gradOutput)
cutorch.synchronize()
local gconv = cudnn.SpatialMaxPooling(ki,kj,si,sj,padi,padj):cuda()
- if ceil_mode then sconv:ceil() end
+ if ceil_mode then gconv:ceil() end
local rescuda = gconv:forward(input)
-- serialize and deserialize
torch.save('modelTemp.t7', gconv)
@@ -511,6 +528,11 @@ function cudnntest.SpatialMaxPooling_batch()
mytester:assertlt(error:abs():max(), precision_forward, 'error on state (forward) ')
error = resgrad:float() - groundgrad:float()
mytester:assertlt(error:abs():max(), precision_backward, 'error on state (backward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
function cudnntest.SpatialMaxPooling_single()
@@ -535,7 +557,7 @@ function cudnntest.SpatialMaxPooling_single()
local groundgrad = sconv:backward(input, gradOutput)
cutorch.synchronize()
local gconv = cudnn.SpatialMaxPooling(ki,kj,si,sj,padi,padj):cuda()
- if ceil_mode then sconv:ceil() end
+ if ceil_mode then gconv:ceil() end
local _ = gconv:forward(input)
-- serialize and deserialize
torch.save('modelTemp.t7', gconv)
@@ -585,6 +607,11 @@ function cudnntest.SpatialAveragePooling_batch()
mytester:assertlt(error:abs():max(), precision_forward, 'error on state (forward) ')
error = resgrad:float() - groundgrad:float()
mytester:assertlt(error:abs():max(), precision_backward, 'error on state (backward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
function cudnntest.SpatialAveragePooling_single()
@@ -729,6 +756,45 @@ function cudnntest.Sigmoid_batch()
nonlinBatch('Sigmoid')
end
+function cudnntest.SpatialCrossMapLRN_batch()
+ local bs = math.random(4,10)
+ local inputSize = math.random(6,9)
+ local size = math.random(1,3)*2+1
+ local nbfeatures = math.random(3,8)
+ local alpha = math.random(1,100)/100
+ local beta = math.random(0,100)/100
+ local k = math.random(1,3)
+
+ local tm = {}
+ local title = string.format('SpatialCrossMapLRN.forward')
+ times[title] = tm
+
+ local input = torch.rand(bs, nbfeatures, inputSize, inputSize):cuda()
+ local gradOutput = torch.rand(input:size()):cuda()
+ local sconv = nn.SpatialCrossMapLRN(size, alpha, beta, k):cuda()
+ local gconv = cudnn.SpatialCrossMapLRN(size, alpha, beta, k):cuda()
+
+ local groundtruth = sconv:forward(input):clone()
+ local groundgrad = sconv:backward(input, gradOutput)
+ cutorch.synchronize()
+ gconv:forward(input)
+ -- serialize and deserialize
+ torch.save('modelTemp.t7', gconv)
+ gconv = torch.load('modelTemp.t7')
+ local rescuda = gconv:forward(input)
+ local resgrad = gconv:backward(input, gradOutput)
+ cutorch.synchronize()
+ mytester:asserteq(rescuda:dim(), 4, 'error in dimension')
+ mytester:asserteq(resgrad:dim(), 4, 'error in dimension')
+ local error = rescuda:float() - groundtruth:float()
+ mytester:assertlt(error:abs():max(), precision_forward,
+ 'error on state (forward) ')
+ error = resgrad:float() - groundgrad:float()
+ mytester:assertlt(error:abs():max(), precision_backward,
+ 'error on state (backward) ')
+end
+
+
function cudnntest.SoftMax_single()
local sz = math.random(1,64)
local input = torch.randn(sz):cuda()
@@ -815,6 +881,11 @@ function cudnntest.SoftMax_batch()
error = resgrad:float() - groundgrad:float()
mytester:assertlt(error:abs():max(),
precision_backward, 'error on state (backward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
@@ -876,6 +947,11 @@ function cudnntest.LogSoftMax_batch()
error = resgrad:float() - groundgrad:float()
mytester:assertlt(error:abs():max(),
precision_backward, 'error on state (backward) ')
+
+ -- IO
+ local ferr,berr = jac.testIO(gconv, input)
+ mytester:assertlt(ferr, precision_io, torch.typename(gconv) .. ' - i/o forward err ')
+ mytester:assertlt(berr, precision_io, torch.typename(gconv) .. ' - i/o backward err ')
end
function cudnntest.SpatialLogSoftMax()