code: def test_max(self):
      # If we call max directly, we will return an CAReduce object
      # which doesn't have R_op implemented!
      # self.check_mat_rop_lop(tensor.max(self.mx, axis=[0,1])[0], ())
      self.check_mat_rop_lop(
          tensor.max(self.mx, axis=0), (self.mat_in_shape[1],)
      )
      self.check_mat_rop_lop(
          tensor.max(self.mx, axis=1), (self.mat_in_shape[0],)
      )
  
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 3 for calling the test_RopLop obj's underlying member method code with example usage: obj.test_max() without return types