code: def test_gather_ops(self, rows_num, index_num, gc, dc):
      data = np.random.random((rows_num, 10, 20)).astype(np.float32)
  
      if rows_num > 0:
          ind = np.random.randint(rows_num, size=(index_num,)).astype(
              "int32"
          )
      else:
          ind = np.random.randint(10, size=(index_num,)).astype("int32")
      op = core.CreateOperator("Gather", ["data", "ind"], ["output"])
  
      self.assertReferenceChecks(
          gc, op, [data, ind], ref_gather_axis0()
      )
      self.assertDeviceChecks(dc, op, [data, ind], [0])
      return
  
imports: import numpy
  from caffe2.python import core, workspace
  from hypothesis import given, settings
  import caffe2.python.hypothesis_test_util
  import caffe2.python.serialized_test.serialized_test_util
  import hypothesis.strategies
  import hypothesis.extra.numpy
label_desc: Use image node_id 1 for calling the TestGatherOps obj's underlying member method code with example usage: obj.test_gather_ops(rows_num, index_num, gc, dc) without return types