
    kh                     F    d Z ddlZddlZddlmZ ddlmZ  G d de      Zy)zo Step Scheduler

Basic step LR schedule with warmup, noise.

Hacked together by / Copyright 2020 Ross Wightman
    N)List   )	Schedulerc            	            e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d
dej
                  j                  dededdf fdZde	de
e   fd	Z xZS )StepLRSchedulerz
    N	optimizerdecay_t
decay_ratereturnc           
      v   t         |   |d|||	|
||       || _        || _        || _        || _        || _        | j                  rI| j                  D cg c]  }||z
  | j                  z   c}| _        t         | %  | j
                         y | j                  D cg c]  }d c}| _        y c c}w c c}w )Nlr)param_group_fieldt_in_epochsnoise_range_t	noise_pct	noise_std
noise_seed
initializer   )
super__init__r	   r
   warmup_twarmup_lr_initwarmup_prefixbase_valueswarmup_stepsupdate_groups)selfr   r	   r
   r   r   r   r   r   r   r   r   r   v_	__class__s                  R/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/scheduler/step_lr.pyr   zStepLRScheduler.__init__   s     	"#'!! 	 		
 $ ,*==OSO_O_ `!!n"4!E `DG!$"5"56,0,<,< =q =D !a !>s   B1	B6tc                 0   || j                   k  r+| j                  D cg c]  }| j                  ||z  z    }}|S | j                  r|| j                   z
  }| j                  D cg c]!  }|| j
                  || j                  z  z  z  # }}|S c c}w c c}w )N)r   r   r   r   r   r
   r	   )r   r"   slrsr   s        r!   _get_lrzStepLRScheduler._get_lr8   s    t}}8<8I8IJ14&&Q.JCJ
 
 !!%IMIYIYZA1A,=>?ZCZ
 K [s   B$&B)
      ?r   r   TTNgq=
ףp?r'   *   T)__name__
__module____qualname____doc__torchoptim	Optimizerfloatr   intr   r&   __classcell__)r    s   @r!   r   r      su     !##>{{,,#> #> 	#> 
#>J e     r   )r,   mathr-   typingr   	schedulerr   r    r3   r!   <module>r8      s&       !0i 0r3   