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()
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)
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)