class_docstr: This `LearningRateScheduler` can be used to apply an arbitrary number of other schedulers
  one after the other.
  
  These schedulers are defined though the `schedulers` parameter, which takes
  a list of `Tuple[int, Lazy[LearningRateScheduler]]`. The first field of the
  tuple, the `int`, specifies how many epochs the corresponding scheduler will
   be used before the next scheduler takes its place.
  
  While it usually makes sense for the sum
  
  ```python
  sum(n_epochs for (n_epochs, _) in schedulers)
  ```
  
  to equal the total number of training epochs, it is not a requirement.
  If training continues beyond the last defined scheduler, both `step()` and
  `step_batch()` will be a no-op. In effect, this causes the learning rate to
  stay constant.
  
  # Example
  
  Config for using the `CombinedLearningRateScheduler` Learning Rate Scheduler
  with the following arguments:
  
  * Use [`PolynomialDecay`](
  https://docs.allennlp.org/main/api/training/learning_rate_schedulers/polynomial_decay/
  ) for the first `15` epochs.
  * Use [`NoamLR`](
  https://docs.allennlp.org/main/api/training/learning_rate_schedulers/noam/
  ) for the next `15` epochs.
  * Use a constant LR for the remaining epochs.
  
  ```json
  {
      ...
     "trainer":{
          ...
          "learning_rate_scheduler": {
              "type": "combined",
              "schedulers": [
                  [
                      15, {
                          "type": "polynomial_decay",
                          "power": 2,
                          "warmup_steps": 50,
                          "end_learning_rate": 1e-10
                      }
                  ],
                  [
                      15, {
                          "type": "noam",
                          "warmup_steps": 1,
                          "model_size": 128,
                          "factor": 0.5
                      }
                  ]
              ]
          },
          ...
     }
  }
  ```
  Note that you do NOT pass a `optimizer` key to the Learning rate scheduler.
class_docstr_tok: ["This","`","LearningRateScheduler","`","can","be","used","to","apply","an","arbitrary","number","of","other","schedulers","one","after","the","other",".","These","schedulers","are","defined","though","the","`","schedulers","`","parameter",",","which","takes","a","list","of","`","Tuple","[","int",",","Lazy","[","LearningRateScheduler","]","]","`",".","The","first","field","of","the","tuple",",","the","`","int","`",",","specifies","how","many","epochs","the","corresponding","scheduler","will","be","used","before","the","next","scheduler","takes","its","place",".","While","it","usually","makes","sense","for","the","sum","``","`","python","sum","(","n_epochs","for","(","n_epochs",",","_",")","in","schedulers",")","``","`","to","equal","the","total","number","of","training","epochs",",","it","is","not","a","requirement",".","If","training","continues","beyond","the","last","defined","scheduler",",","both","`","step","(",")","`","and","`","step_batch","(",")","`","will","be","a","no-op",".","In","effect",",","this","causes","the","learning","rate","to","stay","constant",".","#","Example","Config","for","using","the","`","CombinedLearningRateScheduler","`","Learning","Rate","Scheduler","with","the","following","arguments",":","*","Use","[","`","PolynomialDecay","`","]","(","https",":","\/\/docs.allennlp.org\/main\/api\/training\/learning_rate_schedulers\/polynomial_decay\/",")","for","the","first","`","15","`","epochs",".","*","Use","[","`","NoamLR","`","]","(","https",":","\/\/docs.allennlp.org\/main\/api\/training\/learning_rate_schedulers\/noam\/",")","for","the","next","`","15","`","epochs",".","*","Use","a","constant","LR","for","the","remaining","epochs",".","``","`","json","{","...","``","trainer","''",":","{","...","``","learning_rate_scheduler","''",":","{","``","type","''",":","``","combined","''",",","``","schedulers","''",":","[","[","15",",","{","``","type","''",":","``","polynomial_decay","''",",","``","power","''",":","2",",","``","warmup_steps","''",":","50",",","``","end_learning_rate","''",":","1e-10","}","]",",","[","15",",","{","``","type","''",":","``","noam","''",",","``","warmup_steps","''",":","1",",","``","model_size","''",":","128",",","``","factor","''",":","0.5","}","]","]","}",",","...","}","}","``","`","Note","that","you","do","NOT","pass","a","`","optimizer","`","key","to","the","Learning","rate","scheduler","."]
code: def load_state_dict(self, state_dict: Dict[str, Any]) -> None:
      self.last_epoch = state_dict["last_epoch"]
      self.num_steps_per_epoch = state_dict["num_steps_per_epoch"]
      if self.current_scheduler is not None:
          assert state_dict["current_scheduler"] is not None
          self.current_scheduler.load_state_dict(
              state_dict["current_scheduler"]
          )
  
file_path: allennlp/allennlp/training/learning_rate_schedulers/combined.py
imports: from typing import Dict, Any, List, Tuple, Optional
  import torch
  from allennlp.common.lazy import Lazy
  from allennlp.training.learning_rate_schedulers.learning_rate_scheduler import LearningRateScheduler
label_desc: Use image node_id 4 for calling the CombinedLearningRateScheduler obj's underlying member method code with example usage: obj.load_state_dict(state_dict) without return types