code: def check_backward(self, h_data, x_data, y_grad):
      h = chainer.Variable(h_data)
      x = chainer.Variable(x_data)
      y = functions.zoneout(h, x, self.ratio)
      d = {"creator": y.creator}
      y.grad = y_grad
      y.backward()
  
      def f():
          creator = d["creator"]
          y = _zoneout(h_data, x_data, creator)
          return (y,)
  
      (
          gh,
          gx,
      ) = gradient_check.numerical_grad(
          f,
          (
              h.data,
              x.data,
          ),
          (y_grad,),
      )
      testing.assert_allclose(gh, h.grad, atol=1e-3)
      testing.assert_allclose(gx, x.grad, atol=1e-3)
  
imports: import unittest
  import mock
  import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import functions
  from chainer import gradient_check
  from chainer import testing
  from chainer.testing import attr
label_desc: Use image node_id 3 for calling the TestZoneout obj's underlying member method code with example usage: obj.check_backward(h_data, x_data, y_grad) and returns: y