code: def test_exponential_decay_cpu(self):
      lr = opt.ExponentialDecay(0.1, 2, 0.5, True)
      sgd1 = opt.SGD(lr=lr)
      for i in range(5):
          np.testing.assert_array_almost_equal(
              tensor.to_numpy(sgd1.lr_value), [0.1 * 0.5 ** (i // 2)]
          )
          sgd1.step()
  
imports: from __future__ import division
  import math
  import unittest
  import numpy
  import functools
  from singa import tensor
  from singa import singa_wrap
  from singa import opt
  from cuda_helper import gpu_dev, cpu_dev
label_desc: Use image node_id 1 for calling the TestDecayScheduler obj's underlying member method code with example usage: obj.test_exponential_decay_cpu() without return types