code: def check_double_backward(
      self, inputs, grad_outputs, grad_grad_inputs, backend_config
  ):
      inputs = backend_config.get_array(inputs)
      grad_outputs = backend_config.get_array(grad_outputs)
      grad_grad_inputs = backend_config.get_array(grad_grad_inputs)
      if not self.c_contiguous:
          with backend_config:
              inputs = _as_noncontiguous_array(inputs)
              grad_outputs = _as_noncontiguous_array(grad_outputs)
              grad_grad_inputs = _as_noncontiguous_array(
                  grad_grad_inputs
              )
  
      def f(*inputs):
          return functions.batch_normalization(
              *inputs, **self.bn_options
          )
  
      with backend_config:
          gradient_check.check_double_backward(
              f,
              inputs,
              grad_outputs,
              grad_grad_inputs,
              **self.check_double_backward_options,
          )
  
imports: import unittest
  import warnings
  import numpy
  import six
  import chainer
  from chainer.backends import cuda
  from chainer import functions
  from chainer import gradient_check
  from chainer import testing
  from chainer.testing import attr
  from chainer.testing import backend
label_desc: Use image node_id 7 for calling the TestBatchNormalization obj's underlying member method code with example usage: obj.check_double_backward(inputs, grad_outputs, grad_grad_inputs, backend_config) and returns: functions