class_docstr: Piecewise learning rate decay
  Args:
      boundaries(list): A list of steps numbers. The type of element in the list is python int.
      values(list): A list of learning rate values that will be picked during different epoch boundaries.
          The type of element in the list is python float.
      last_epoch (int, optional):  The index of last epoch. Can be set to restart training. Default: -1, means initial learning rate.
class_docstr_tok: ["Piecewise","learning","rate","decay","Args",":","boundaries","(","list",")",":","A","list","of","steps","numbers",".","The","type","of","element","in","the","list","is","python","int",".","values","(","list",")",":","A","list","of","learning","rate","values","that","will","be","picked","during","different","epoch","boundaries",".","The","type","of","element","in","the","list","is","python","float",".","last_epoch","(","int",",","optional",")",":","The","index","of","last","epoch",".","Can","be","set","to","restart","training",".","Default",":","-1",",","means","initial","learning","rate","."]
code: def __call__(self):
      learning_rate = lr.PiecewiseDecay(
          boundaries=self.boundaries,
          values=self.values,
          last_epoch=self.last_epoch,
      )
      if self.warmup_epoch > 0:
          learning_rate = lr.LinearWarmup(
              learning_rate=learning_rate,
              warmup_steps=self.warmup_epoch,
              start_lr=0.0,
              end_lr=self.values[0],
              last_epoch=self.last_epoch,
          )
      return learning_rate
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from paddle.optimizer import lr
  from .lr_scheduler import CyclicalCosineDecay, OneCycleDecay, TwoStepCosineDecay
label_desc: Use image node_id 2 for calling the Piecewise obj's underlying member method code with example usage: obj.__call__() and returns: learning_rate