diff options
author | Soumith Chintala <soumith@gmail.com> | 2017-02-21 17:10:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-21 17:10:05 +0300 |
commit | 1b95f7ee3cbf71c4ec5a4869c9a61b74c5306837 (patch) | |
tree | b559e0fa6977b3ad018d6e09f0c2cffa9daa8f35 /test.lua | |
parent | c3cdec65bb3cc2dcfdac0ddd41793e9ad9290648 (diff) | |
parent | 28d67b0f49ce83d6fb168102495b1e0110545c58 (diff) |
Merge pull request #1131 from huihuifan/weightnorm
adding weight norm container
Diffstat (limited to 'test.lua')
-rw-r--r-- | test.lua | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -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) |