class_docstr: Represents the learning rate schedule described in Section 5.3 of
  :cite:t:`https://doi.org/10.48550/arxiv.1706.03762`.
  
  .. math::
      \eta_t = \eta_{base} \min(\frac{1}{\sqrt{t}}, \frac{t}{T_{warmup}} \frac{1}{\sqrt{T_{warmup}}})
  
  This corresponds to increasing the learning rate linearly for the first
  :math:`T_{warmup}` training steps, and decreasing it thereafter
  proportionally to the inverse square root of the step number. In the paper,
  the authors use the square root of the dimensionality of the model as
  :math:`\eta_{base}`.
  
  This scheduler is commonly referred to as Noam, after the second author of
  the paper, Noam Shazeer.
  
  .. note::
      This scheduler is not chainable.
class_docstr_tok: ["Represents","the","learning","rate","schedule","described","in","Section","5.3","of",":","cite",":","t",":","`","https",":","\/\/doi.org\/10.48550\/arxiv.1706.03762","`",".","..","math",":",":","\\eta_t","=","\\eta_","{","base","}","\\min","(","\\frac","{","1","}","{","\\sqrt","{","t","}","}",",","\\frac","{","t","}","{","T_","{","warmup","}","}","\\frac","{","1","}","{","\\sqrt","{","T_","{","warmup","}","}","}",")","This","corresponds","to","increasing","the","learning","rate","linearly","for","the","first",":","math",":","`","T_","{","warmup","}","`","training","steps",",","and","decreasing","it","thereafter","proportionally","to","the","inverse","square","root","of","the","step","number",".","In","the","paper",",","the","authors","use","the","square","root","of","the","dimensionality","of","the","model","as",":","math",":","`","\\eta_","{","base","}","`",".","This","scheduler","is","commonly","referred","to","as","Noam",",","after","the","second","author","of","the","paper",",","Noam","Shazeer",".","..","note",":",":","This","scheduler","is","not","chainable","."]
code: def _compute_lrs(self) -> List[float]:
      # Linearly increase the learning rate during warmup.
      if self.last_epoch < self.num_warmup_steps:
          c = self.last_epoch * self.num_warmup_steps**-1.5
  
      # No warmup requested, decay from the base learning rate.
      elif self.last_epoch == 0:
          c = 1.0
  
      # After the warmup, decay the learning rate proportional to the inverse
      # square root of the step number.
      else:
          c = self.last_epoch**-0.5
  
      return [b * c for b in self.base_lrs]
  
imports: import math
  import warnings
  from abc import ABC, abstractmethod
  from typing import List, Sequence, Union, final
  from torch.optim import Optimizer
  from torch.optim.lr_scheduler import _LRScheduler
  from typing_extensions import TypeAlias
  from fairseq2.typing import finaloverride
label_desc: Use image node_id 2 for calling the NoamLR obj's underlying member method code with example usage: obj._compute_lrs() and returns: unknown