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

github.com/clementfarabet/lua---nnx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua9
-rw-r--r--nnx-1.0-1.rockspec1
-rw-r--r--test/CMakeLists.txt3
-rw-r--r--test/jacobian.lua20
-rw-r--r--test/test-all.lua48
5 files changed, 49 insertions, 32 deletions
diff --git a/init.lua b/init.lua
index dcb7533..8e9057e 100644
--- a/init.lua
+++ b/init.lua
@@ -2,7 +2,16 @@
require 'torch'
require 'nn'
+-- create global nnx table:
+nnx = {}
+
+-- c lib:
require 'libnnx'
+-- for testing:
+torch.include('nnx', 'jacobian.lua')
+torch.include('nnx', 'test-all.lua')
+
+-- modules:
torch.include('nnx', 'Narrow.lua')
torch.include('nnx', 'SpatialLinear.lua')
diff --git a/nnx-1.0-1.rockspec b/nnx-1.0-1.rockspec
index 48946a2..e34aa0b 100644
--- a/nnx-1.0-1.rockspec
+++ b/nnx-1.0-1.rockspec
@@ -49,6 +49,7 @@ build = {
install_files(/lua/nnx init.lua)
install_files(/lua/nnx Narrow.lua)
install_files(/lua/nnx SpatialLinear.lua)
+ add_subdirectory (test)
install_targets(/lib nnx)
]],
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..7156a37
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,3 @@
+
+install_files(/lua/nnx jacobian.lua)
+install_files(/lua/nnx test-all.lua)
diff --git a/test/jacobian.lua b/test/jacobian.lua
index 2ceb08f..a88a13a 100644
--- a/test/jacobian.lua
+++ b/test/jacobian.lua
@@ -3,7 +3,9 @@ require 'torch'
require 'nn'
require 'random'
-function get_jac_bprop (module, input, param, dparam)
+nnx.jacobian = {}
+
+function nnx.jacobian.get_jac_bprop (module, input, param, dparam)
local doparam = 0
if param then
doparam = 1
@@ -30,7 +32,7 @@ function get_jac_bprop (module, input, param, dparam)
return jacobian
end
-function get_jac_fprop(module, input, param)
+function nnx.jacobian.get_jac_fprop(module, input, param)
param = param or input
-- perturbation amount
local small = 1e-6
@@ -56,30 +58,30 @@ function get_jac_fprop(module, input, param)
return jacobian
end
-function test_jac (module, input, minval, maxval)
+function nnx.jacobian.test_jac (module, input, minval, maxval)
minval = minval or -2
maxval = maxval or 2
local inrange = maxval - minval
input:copy(lab.rand(input:nElement()):mul(inrange):add(minval))
- local jac_fprop = get_jac_fprop(module,input)
- local jac_bprop = get_jac_bprop(module,input)
+ local jac_fprop = nnx.jacobian.get_jac_fprop(module,input)
+ local jac_bprop = nnx.jacobian.get_jac_bprop(module,input)
local error = jac_fprop:dist(jac_bprop,2)
return error
end
-function test_jac_param (module, input, param, dparam, minval, maxval)
+function nnx.jacobian.test_jac_param (module, input, param, dparam, minval, maxval)
minval = minval or -2
maxval = maxval or 2
local inrange = maxval - minval
input:copy(lab.rand(input:nElement()):mul(inrange):add(minval))
param:copy(lab.rand(param:nElement()):mul(inrange):add(minval))
- jac_bprop = get_jac_bprop(module, input, param, dparam)
- jac_fprop = get_jac_fprop(module, input, param)
+ jac_bprop = nnx.jacobian.get_jac_bprop(module, input, param, dparam)
+ jac_fprop = nnx.jacobian.get_jac_fprop(module, input, param)
local error = jac_fprop:dist(jac_bprop,2)
return error
end
-function testwriting(module,input, minval, maxval)
+function nnx.jacobian.test_io(module,input, minval, maxval)
minval = minval or -2
maxval = maxval or 2
local inrange = maxval - minval
diff --git a/test/test-all.lua b/test/test-all.lua
index ce2e003..17616b7 100644
--- a/test/test-all.lua
+++ b/test/test-all.lua
@@ -1,32 +1,34 @@
-require 'nnx'
-require 'lunit'
-require 'jacobian'
+function nnx.test_all()
-module("test_ops", lunit.testcase, package.seeall)
+ require 'lunit'
+ module("test_all", lunit.testcase, package.seeall)
-precision = 1e-6
+ local precision = 1e-6
-function test_SpatialLinear()
- local fanin = math.random(1,10)
- local fanout = math.random(1,10)
- local sizex = math.random(4,16)
- local sizey = math.random(4,16)
- local module = nn.SpatialLinear(fanin, fanout)
- local input = lab.rand(fanin,sizey,sizex)
+ local jac = nnx.jacobian
- local error = test_jac(module, input)
- assert_equal((error < precision), true, 'error on state: ' .. error)
+ function test_SpatialLinear()
+ local fanin = math.random(1,10)
+ local fanout = math.random(1,10)
+ local sizex = math.random(4,16)
+ local sizey = math.random(4,16)
+ local module = nn.SpatialLinear(fanin, fanout)
+ local input = lab.rand(fanin,sizey,sizex)
- local error = test_jac_param(module, input, module.weight, module.gradWeight)
- assert_equal((error < precision), true, 'error on weight: ' .. error)
+ local error = jac.test_jac(module, input)
+ assert_equal((error < precision), true, 'error on state: ' .. error)
- local error = test_jac_param(module, input, module.bias, module.gradBias)
- assert_equal((error < precision), true, 'error on bias: ' .. error)
+ local error = jac.test_jac_param(module, input, module.weight, module.gradWeight)
+ assert_equal((error < precision), true, 'error on weight: ' .. error)
- local ferr, berr = testwriting(module, input)
- assert_equal(0, ferr, 'error in forward after i/o')
- assert_equal(0, berr, 'error in backward after i/o')
-end
+ local error = jac.test_jac_param(module, input, module.bias, module.gradBias)
+ assert_equal((error < precision), true, 'error on bias: ' .. error)
+
+ local ferr, berr = jac.test_io(module, input)
+ assert_equal(0, ferr, 'error in forward after i/o')
+ assert_equal(0, berr, 'error in backward after i/o')
+ end
-lunit.main()
+ lunit.main()
+end