code: def backward(self, x, gy):
      (invx,) = self.get_retained_outputs()
      # Gradient is - x^-T (dx) x^-T
      invxT = chainer.functions.transpose(invx)
      gx = chainer.functions.matmul(
          chainer.functions.matmul(-invxT, gy[0]), invxT
      )
      return (gx,)
  
imports: import numpy.linalg
  import chainer
  from chainer.backends import cuda
  from chainer import function_node
  import chainer.functions
  from chainer.functions.math import matmul
  from chainer import utils
  from chainer.utils import precision
  from chainer.utils import type_check
label_desc: Use image node_id 4 for calling the Inv obj's underlying member method code with example usage: obj.backward(x, gy) and returns: gx