code: def _compute_backward(self, x, gamma, beta, y, gy):
      assert isinstance(x, chainer.Variable)
      assert isinstance(gamma, chainer.Variable)
      assert isinstance(beta, chainer.Variable)
      assert isinstance(y, chainer.Variable)
      assert isinstance(gy, chainer.Variable)
  
      if x.xp is chainerx:
          # TODO(niboshi): ChainerX does not support grad yet
          y.grad = gy.array.copy()
          y.backward()
          gx = x.grad_var
          ggamma = gamma.grad_var
          gbeta = beta.grad_var
      else:
          gx, ggamma, gbeta = chainer.grad([y], [x, gamma, beta], [gy])
      return gx.array, ggamma.array, gbeta.array
  
imports: import numpy
  import six
  import chainer
  from chainer.functions.normalization import batch_renormalization
  from chainer import testing
  import chainerx
label_desc: Use image node_id 3 for calling the TestBatchRenormalizationForward obj's underlying member method code with example usage: obj._compute_backward(x, gamma, beta, y, gy) and returns: gx,  ggamma,  gbeta