code: def test_slope_learning_rate_op(self, gc, dc):
      iter = np.random.randint(low=1, high=1e5, size=1)
  
      num_iter_1 = int(np.random.randint(low=1e2, high=1e3, size=1))
      multiplier_1 = 1.0
      num_iter_2 = num_iter_1 + int(
          np.random.randint(low=1e2, high=1e3, size=1)
      )
      multiplier_2 = 0.5
      base_lr = float(np.random.random(1))
  
      def ref(iter):
          iter = float(iter)
          if iter < num_iter_1:
              lr = multiplier_1
          else:
              lr = max(
                  multiplier_1
                  + (iter - num_iter_1)
                  * (multiplier_2 - multiplier_1)
                  / (num_iter_2 - num_iter_1),
                  multiplier_2,
              )
          return (np.array(base_lr * lr),)
  
      op = core.CreateOperator(
          "LearningRate",
          "data",
          "out",
          policy="slope",
          base_lr=base_lr,
          num_iter_1=num_iter_1,
          multiplier_1=multiplier_1,
          num_iter_2=num_iter_2,
          multiplier_2=multiplier_2,
      )
      self.assertReferenceChecks(gc, op, [iter], ref)
  
file_path: pytorch/caffe2/python/operator_test/learning_rate_op_test.py
imports: from caffe2.python import core
  import caffe2.python.hypothesis_test_util
  import caffe2.python.serialized_test.serialized_test_util
  from hypothesis import given, settings
  import hypothesis.strategies
  import copy
  from functools import partial
  import math
  import numpy
label_desc: Use image node_id 3 for calling the TestLearningRate obj's underlying member method code with example usage: obj.test_slope_learning_rate_op(gc, dc) and returns: np