class_docstr: Learning rate schedule.
  
  By default implements a constant learning rate:
  
  .. code-block:: python
  
      # Constant learning rate of 0.01 across training epochs
      optimizer = GradientDescentMomentum(0.01, 0.9, schedule = Schedule())
  
  Otherwise, the schedule multiplies the learning rate by change at every element in
  ``step_config``.
  For example,
  
  .. code-block:: python
  
      schedule = Schedule(step_config=[2, 6], change=0.5)
      optimizer = GradientDescentMomentum(1.0, 0.9, schedule = Schedule())
  
  will yield a learning rate schedule of:
  
  .. csv-table::
      :header: "Epoch", "LR"
      :widths: 20, 10
  
      0, 1.0
      1, 1.0
      2, 0.5
      3, 0.5
      4, 0.5
      5, 0.5
      6, 0.25
      7, 0.25
      8, 0.25
      9, 0.25
class_docstr_tok: ["Learning","rate","schedule",".","By","default","implements","a","constant","learning","rate",":","..","code-block",":",":","python","#","Constant","learning","rate","of","0.01","across","training","epochs","optimizer","=","GradientDescentMomentum","(","0.01",",","0.9",",","schedule","=","Schedule","(",")",")","Otherwise",",","the","schedule","multiplies","the","learning","rate","by","change","at","every","element","in","``","step_config","``",".","For","example",",","..","code-block",":",":","python","schedule","=","Schedule","(","step_config=","[","2",",","6","]",",","change=0.5",")","optimizer","=","GradientDescentMomentum","(","1.0",",","0.9",",","schedule","=","Schedule","(",")",")","will","yield","a","learning","rate","schedule","of",":","..","csv-table",":",":",":","header",":","``","Epoch","''",",","``","LR","''",":","widths",":","20",",","10","0",",","1.0","1",",","1.0","2",",","0.5","3",",","0.5","4",",","0.5","5",",","0.5","6",",","0.25","7",",","0.25","8",",","0.25","9",",","0.25"]
docstr: Class constructor.
  
  Arguments:
      step_config (list, optional): Configure the step times (list of epoch indices).
                                    Defaults to None (constant).
      change (int, optional): The learning rate is
                              multiplied by ``change ** steps``, where ``steps`` is the
                              number of steps in the step schedule that have passed.
docstr_tok: ["Class","constructor",".","Arguments",":","step_config","(","list",",","optional",")",":","Configure","the","step","times","(","list","of","epoch","indices",")",".","Defaults","to","None","(","constant",")",".","change","(","int",",","optional",")",":","The","learning","rate","is","multiplied","by","``","change","*","*","steps","``",",","where","``","steps","``","is","the","number","of","steps","in","the","step","schedule","that","have","passed","."]
code: def __init__(self, step_config=None, change=1.0):
      """
      Class constructor.
  
      Arguments:
          step_config (list, optional): Configure the step times (list of epoch indices).
                                        Defaults to None (constant).
          change (int, optional): The learning rate is
                                  multiplied by ``change ** steps``, where ``steps`` is the
                                  number of steps in the step schedule that have passed.
      """
  
      if isinstance(step_config, list) and isinstance(change, list):
          assert len(step_config) == len(change), (
              "change and step_config must have the same"
              "length after step_config is deduplicated to do epoch-level LR assignment."
          )
  
          logger.warn(
              "This functionality will be removed from Schedule in the future. "
              "Please use the StepSchedule class instead."
          )
  
      if isinstance(step_config, int):
          logger.warn(
              "This functionality will be removed from Schedule in the future. "
              "Please use the PowerSchedule class instead."
          )
  
      self.step_config = step_config
      self.change = change
      self.steps = 0
  
imports: from __future__ import division
  from neon import NervanaObject
  from neon.util.persist import load_class
  import logging
  import numpy
label_desc: Use image node_id 1 to create a new Schedule object from inherited base classes: NervanaObject with example: obj = Schedule(step_config, change)