code: def _test(self, gpu):
      model = chainer.Chain(
          a=L.Linear(1, 2, initialW=3, initial_bias=3),
          b=chainer.Chain(c=L.Linear(2, 3, initialW=4, initial_bias=4)),
      )
      if gpu >= 0:
          model.to_gpu(gpu)
          xp = model.xp
      else:
          xp = np
      optimizer = chainer.optimizers.SGD(self.lr)
      optimizer.setup(model)
      optimizer.add_hook(
          chainerrl.optimizers.NonbiasWeightDecay(
              rate=self.weight_decay_rate
          )
      )
      optimizer.update(lambda: chainer.Variable(xp.asarray(0.0)))
      decay_factor = 1 - self.lr * self.weight_decay_rate
      xp.testing.assert_allclose(model.a.W.array, 3 * decay_factor)
      xp.testing.assert_allclose(model.a.b.array, 3)
      xp.testing.assert_allclose(model.b.c.W.array, 4 * decay_factor)
      xp.testing.assert_allclose(model.b.c.b.array, 4)
  
file_path: chainerrl/tests/optimizer_tests/test_nonbias_weight_decay.py
imports: import unittest
  import chainer
  import chainer.links
  from chainer import testing
  import numpy
  import chainerrl
label_desc: Use image node_id 1 for calling the TestNonbiasWeightDecay obj's underlying member method code with example usage: obj._test(gpu) without return types