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
diff options
context:
space:
mode:
authorSoumith Chintala <soumith@gmail.com>2017-02-21 17:10:05 +0300
committerGitHub <noreply@github.com>2017-02-21 17:10:05 +0300
commit1b95f7ee3cbf71c4ec5a4869c9a61b74c5306837 (patch)
treeb559e0fa6977b3ad018d6e09f0c2cffa9daa8f35 /test.lua
parentc3cdec65bb3cc2dcfdac0ddd41793e9ad9290648 (diff)
parent28d67b0f49ce83d6fb168102495b1e0110545c58 (diff)
Merge pull request #1131 from huihuifan/weightnorm
adding weight norm container
Diffstat (limited to 'test.lua')
-rw-r--r--test.lua49
1 files changed, 49 insertions, 0 deletions
diff --git a/test.lua b/test.lua
index 30f183b..486b651 100644
--- a/test.lua
+++ b/test.lua
@@ -121,6 +121,55 @@ function nntest.Bottle()
mytester:eq(gradOutput1, gradOutput2, 0.0001, 'Bottle gradOutput not the same as Module')
end
+function nntest.WeightNorm()
+ local input = torch.rand(10, 5)
+
+ -- temporal convolution
+ local model = nn.WeightNorm(nn.TemporalConvolution(5, 20, 2, 1))
+ local err = nn.Jacobian.testJacobianParameters(model, input,
+ model.bias, model.gradBias)
+ mytester:assert(err < precision, 'Temporal Convolution bias')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.g, model.gradG)
+ mytester:assert(err < precision, 'Temporal Convolution g')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.v, model.gradV)
+ mytester:assert(err < precision, 'Temporal Convolution v')
+
+ -- linear
+ model = nn.WeightNorm(nn.Linear(5, 20))
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.bias, model.gradBias)
+ mytester:assert(err < precision, 'Linear bias')
+ err = nn.Jacobian.testJacobianParameters(model, input, model.g, model.gradG)
+ mytester:assert(err < precision, 'Linear g')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.v, model.gradV)
+ mytester:assert(err < precision, 'Linear v')
+
+ -- euclidean with weight but no bias
+ input = torch.rand(10, 5)
+ model = nn.WeightNorm(nn.Euclidean(5, 20))
+ err = nn.Jacobian.testJacobianParameters(model, input, model.g, model.gradG)
+ mytester:assert(err < precision, 'Euclidean g')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.v, model.gradV)
+ mytester:assert(err < precision, 'Euclidean v')
+
+ -- spatial convolution with 4D weights
+ input = torch.rand(5, 10, 10)
+ model = nn.WeightNorm(nn.SpatialConvolution(5, 20, 2, 2, 3, 3, 1, 1), 2)
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.bias, model.gradBias)
+ mytester:assert(err < precision, 'Spatial Convolution bias')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.g, model.gradG)
+ mytester:assert(err < precision, 'Spatial Convolution g')
+ err = nn.Jacobian.testJacobianParameters(model, input,
+ model.v, model.gradV)
+ mytester:assert(err < precision, 'Spatial Convolution v')
+end
+
function nntest.CAdd()
local function testBackwardPass(module, input, params, dparams)
local err = jac.testJacobian(module,input)