class_docstr: Don't peform any test, but provide the function to test the
  Rop to class that inherit from it.
docstr: As check_mat_rop_lop, except the input is self.x which is a
  vector. The output is still a vector.
docstr_tok: ["As","check_mat_rop_lop",",","except","the","input","is","self.x","which","is","a","vector",".","The","output","is","still","a","vector","."]
code: def check_rop_lop(self, y, out_shape):
      """
      As check_mat_rop_lop, except the input is self.x which is a
      vector. The output is still a vector.
      """
      # TEST ROP
      vx = np.asarray(
          self.rng.uniform(size=self.in_shape), theano.config.floatX
      )
      vv = np.asarray(
          self.rng.uniform(size=self.in_shape), theano.config.floatX
      )
  
      yv = tensor.Rop(y, self.x, self.v)
      rop_f = function([self.x, self.v], yv, on_unused_input="ignore")
      J, _ = theano.scan(
          lambda i, y, x: tensor.grad(y[i], x),
          sequences=tensor.arange(y.shape[0]),
          non_sequences=[y, self.x],
      )
      sy = tensor.dot(J, self.v)
  
      scan_f = function([self.x, self.v], sy, on_unused_input="ignore")
  
      v1 = rop_f(vx, vv)
      v2 = scan_f(vx, vv)
      assert np.allclose(v1, v2), "ROP mismatch: %s %s" % (v1, v2)
      known_fail = False
      try:
          self.check_nondiff_rop(
              theano.clone(y, replace={self.x: break_op(self.x)})
          )
      except AssertionError:
          known_fail = True
  
      # TEST LOP
  
      vx = np.asarray(
          self.rng.uniform(size=self.in_shape), theano.config.floatX
      )
      vv = np.asarray(
          self.rng.uniform(size=out_shape), theano.config.floatX
      )
  
      yv = tensor.Lop(y, self.x, self.v)
      lop_f = function([self.x, self.v], yv, on_unused_input="ignore")
      J, _ = theano.scan(
          lambda i, y, x: tensor.grad(y[i], x),
          sequences=tensor.arange(y.shape[0]),
          non_sequences=[y, self.x],
      )
      sy = tensor.dot(self.v, J)
  
      scan_f = function([self.x, self.v], sy)
  
      v1 = lop_f(vx, vv)
      v2 = scan_f(vx, vv)
      assert np.allclose(v1, v2), "LOP mismatch: %s %s" % (v1, v2)
  
      if known_fail:
          raise SkipTest(
              "Rop does not handle non-differentiable inputs "
              "correctly. Bug exposed by fixing Add.grad method."
          )
  
imports: from __future__ import absolute_import, print_function, division
  import unittest
  from theano.tests import unittest_tools
  from theano import function
  import theano
  from theano import tensor
  import itertools
  import numpy
  from theano.gof import Op, Apply
  from theano.gradient import grad_undefined
  from theano.tests.unittest_tools import SkipTest
  from theano.tensor.signal.pool import Pool
  from theano.tensor.nnet import conv, conv2d
label_desc: Use image node_id 4 for calling the RopLop_checker obj's underlying member method code with example usage: obj.check_rop_lop(y, out_shape) without return types