예제 #1
0
 def test_call_hooks_uninitialized_param(self):
     target = UninitializedChain()
     opt = optimizers.MomentumSGD()
     opt.setup(target)
     opt.add_hook(optimizer.GradientNoise(eta=1))
     target(np.ones((4, 10), dtype=np.float32))
     opt.call_hooks()
예제 #2
0
    def check_gradient_noise(self):
        w = self.target.param.data
        g = self.target.param.grad
        xp = cuda.get_array_module(w)

        eta = 0.01
        expect = w - g - xp.random.normal(
            loc=0, scale=np.sqrt(
                eta / np.power(1, 0.55)), size=g.shape).astype(np.float32)

        opt = optimizers.SGD(lr=1)
        opt.setup(self.target)
        opt.add_hook(optimizer.GradientNoise(eta))
        opt.update()

        testing.assert_allclose(expect, w, rtol=0.4)
예제 #3
0
    def check_gradient_noise(self):
        w = self.target.param.data
        g = self.target.param.grad
        xp = cuda.get_array_module(w)
        noise_value = xp.asarray(self.noise_value)

        expect = w - g - noise_value

        noise = mock.Mock(return_value=noise_value)
        opt = optimizers.SGD(lr=1)
        opt.setup(self.target)
        hook = optimizer.GradientNoise(self.eta, noise_func=noise)
        opt.add_hook(hook)
        opt.update()

        testing.assert_allclose(expect, w, rtol=0.4)
        noise.assert_called_once_with(xp, (2, 3), np.float32, hook, opt)