code: def grad(self, inps, grads):
      x, mean, std, gamma, beta = inps
      (top,) = grads
      top_gamma = top * gamma
      x_mean = x - mean
      dx = top_gamma / std
      dmean = -dx
      dstd = -(top_gamma * x_mean) / (std * std)
      dgamma = top * x_mean / std
      return [dx, dmean, dstd, dgamma, top]
  
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import theano
  from theano import Apply, Op
  from theano.gof import local_optimizer
  from theano.gof.opt import copy_stack_trace
  from theano.tensor import as_tensor_variable, TensorType
  from theano.tensor import basic
  from theano.tensor.opt import register_specialize_device
  from theano.scalar import Composite, as_common_dtype
  from theano.scalar import add, sub, true_div, mul
label_desc: Use image node_id 2 for calling the BNComposite obj's underlying member method code with example usage: obj.grad(inps, grads) and returns: list