code: def apply_backward(
      self, x_data, roi_data, roi_index_data, y_grad_data
  ):
      x = chainer.Variable(x_data)
      rois = chainer.Variable(roi_data)
      roi_indices = chainer.Variable(roi_index_data)
      y = functions.ps_roi_max_align_2d(
          x,
          rois,
          roi_indices,
          self.outsize,
          self.spatial_scale,
          self.group_size,
          sampling_ratio=self.sampling_ratio,
      )
      x.cleargrad()
      y.grad = y_grad_data
      y.backward()
      return x, y
  
imports: import chainer
  from chainer.backends import cuda
  import chainer.functions
  from chainer import gradient_check
  from chainer import testing
  from chainer.testing import attr
  from chainer.testing import condition
  import numpy
  import unittest
  from chainercv import functions
  from tests.functions_tests.test_ps_roi_average_pooling_2d import _outsize
label_desc: Use image node_id 8 for calling the TestPSROIMaxAlign2D obj's underlying member method code with example usage: obj.apply_backward(x_data, roi_data, roi_index_data, y_grad_data) and returns: x,  y