
    ^jq                     N    d Z ddlZddlZddlmZmZ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TupleUnion   )	Schedulerc                        e Zd ZdZ	 	 	 	 	 	 	 	 	 	 ddej
                  j                  dedededede	d	e	d
e
ee   eeef   edf   dede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warmup_twarmup_lr_initwarmup_prefixt_in_epochsnoise_range_t	noise_pct	noise_std
noise_seed
initialize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_fieldr   r   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                  a/var/www/ramen.bs-engineer-server.com/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   g        TTNgq=
ףp?r)   *   T)__name__
__module____qualname____doc__torchoptim	Optimizerfloatintboolr   r   r   r   r(   __classcell__)r"   s   @r#   r	   r	      s     !#$&"& $JN#" ##>{{,,#> #> 	#>
 #> "#>  #> #> !cE#s(OS$!FG#> #> #> #> #> 
#>J e     r	   )
r.   mathr/   typingr   r   r   	schedulerr   r	    r6   r#   <module>r;      s)      % % !0i 0r6   