
    RЦi                     N    S r SSKrSSKrSSKJr  SSKJrJrJr   " S S\5      r	g)zIMultiStep LR Scheduler

Basic multi step LR schedule with warmup, noise.
    N)	Scheduler)ListTupleUnionc                      ^  \ rS rSrSr          SS\R                  R                  S\\	   S\
S\	S\
S	\S
\S\\\	   \\	\	4   \	S4   S\
S\
S\	S\SS4U 4S jjjrS rS\	S\\
   4S jrSrU =r$ )MultiStepLRScheduler
   z
    N	optimizerdecay_t
decay_ratewarmup_twarmup_lr_initwarmup_prefixt_in_epochsnoise_range_t	noise_pct	noise_std
noise_seed
initializereturnc                 z  > [         TU ]  USUUU	U
UUS9  X l        X0l        X@l        XPl        X`l        U R                  (       aK  U R                   Vs/ s H  oU-
  U R                  -  PM     snU l        [         TU ]%  U R
                  5        g U R                   Vs/ s H  nSPM     snU l        g s  snf s  snf )Nlr)param_group_fieldr   r   r   r   r   r      )
super__init__r   r   r   r   r   base_valueswarmup_stepsupdate_groups)selfr
   r   r   r   r   r   r   r   r   r   r   r   v_	__class__s                  Z/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/scheduler/multistep_lr.pyr   MultiStepLRScheduler.__init__   s     	"#'!! 	 		
 $ ,*==OSO_O_ `O_!n"4!EO_ `DG!$"5"56,0,<,< =,<q,< =D !a !>s   B3B8c                 J    [         R                  " U R                  US-   5      $ )Nr   )bisectbisect_rightr   )r    ts     r$   get_curr_decay_steps)MultiStepLRScheduler.get_curr_decay_steps3   s     ""4<<Q77    r)   c                 B   XR                   :  a,  U R                   Vs/ s H  o R                  X-  -   PM     nnU$ U R                  (       a  XR                   -
  nU R                   Vs/ s H#  oDU R
                  U R                  U5      -  -  PM%     nnU$ s  snf s  snf )N)r   r   r   r   r   r   r*   )r    r)   slrsr!   s        r$   _get_lrMultiStepLRScheduler._get_lr8   s    }}8<8I8IJ8I1&&.8ICJ
 
 !!%RVRbRbcRbQ4+D+DQ+GGHRbCc
 K ds   B)*B)r   r   r   r   r   r   )
      ?r   g        TTNgq=
ףp?r2   *   T)__name__
__module____qualname____firstlineno____doc__torchoptim	Optimizerr   intfloatboolr   r   r   r*   r0   __static_attributes____classcell__)r#   s   @r$   r   r   
   s     !#$&"& $JN#" ##>{{,,#> #Y#> 	#>
 #> "#>  #> #> !cE#s(OS$!FG#> #> #> #> #> 
#> #>J8
 e  r,   r   )
r8   r9   r'   timm.scheduler.schedulerr   typingr   r   r   r    r,   r$   <module>rD      s'      . % %59 5r,   