Ë
    éÓ^j  ã            /       ó@  — d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ d'dee   fd„Z	 d(dedefd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)dededededee   dedededededededeeee   f   dededed ed!ed"ed#ed$ed%edef.d&„Zy)*zE Scheduler Factory
Hacked together by / Copyright 2021 Ross Wightman
é    )ÚListÚOptionalÚUnion)Ú	Optimizeré   )ÚCosineLRScheduler)ÚMultiStepLRScheduler)ÚPlateauLRScheduler)ÚPolyLRScheduler)ÚStepLRScheduler)ÚTanhLRSchedulerNÚdecreasing_metricc                 óŽ  — t        | dd«      }|�|rdnd}nd|v rdnd}t        d4i d| j                  “dt        | d	d
«      “dt        | dd«      “dt        | dddg«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | dd«      “dt        | d d!«      “d"t        | d#d$«      “d%t        | d&d'«      “d(t        | d)d$«      “d*t        | d+d«      “d,t        | d-d.«      “d/t        | d0d$«      “d1|“d2t        | d3d«       “Ž}|S )5zz cfg/argparse to kwargs helper
    Convert scheduler args in argparse args or cfg (.dot) like object to keyword args.
    Úeval_metricÚtop1NÚminÚmaxÚlossÚschedÚ
num_epochsÚepochséd   Údecay_epochsé   Údecay_milestonesé<   Úwarmup_epochsé   Úcooldown_epochsr   Úpatience_epochsé
   Ú
decay_rateçš™™™™™¹?Úmin_lrç        Ú	warmup_lrçñhãˆµøä>Úwarmup_prefixFÚnoiseÚlr_noiseÚ	noise_pctÚlr_noise_pctçq=
×£på?Ú	noise_stdÚlr_noise_stdç      ð?Ú
noise_seedÚseedé*   Ú	cycle_mulÚlr_cycle_mulÚcycle_decayÚlr_cycle_decayÚcycle_limitÚlr_cycle_limitr   Úk_decayÚ
lr_k_decayÚplateau_modeÚstep_on_epochsÚsched_on_updates© )ÚgetattrÚdictr   )Úcfgr   r   r<   Úkwargss        úk/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/scheduler/scheduler_factory.pyÚscheduler_kwargsrE      sÊ  € ô ˜#˜}¨fÓ5€KØÐ$Ù 1‘u°u‰à &¨+Ñ 5‘u¸5ˆÜò Ø�iŠiðä˜3 ¨#Ô.ðô ˜S .°"Ô5ðô ! Ð&8¸2¸r¸(ÔCð	ô
 ˜c ?°AÔ6ðô   Ð%6¸Ô:ðô   Ð%6¸Ô;ðô ˜3 ¨cÔ2ðô �s˜H bÔ)ðô ˜#˜{¨DÔ1ðô ˜c ?°EÔ:ðô �c˜: tÔ,ðô ˜#˜~¨tÔ4ðô ˜#˜~¨rÔ2ðô ˜3 ¨Ô+ðô  ˜#˜~¨rÔ2ð!ô" ˜CÐ!1°3Ô7ð#ô$ ˜CÐ!1°1Ô5ð%ô& ˜˜\¨3Ô/ð'ñ( "ð)ô* # 3Ð(:¸EÓBÑBð+€Fð. €Mó    Ú	optimizerÚupdates_per_epochc                 ó6   — t        dd|it        | «      ¤d|i¤ŽS )NrG   rH   r?   )Úcreate_scheduler_v2rE   )ÚargsrG   rH   s      rD   Úcreate_schedulerrL   3   s0   € ô
 ñ Øðä
˜4Ó
 ñð ,òð rF   r   r   r   r   r   r    r"   r$   r&   r   r(   r)   r+   r.   r1   r4   r6   r8   r:   r<   r=   c           	      ó`  — |}|
}|}|}|s2|dkD  sJ d«       ‚||z  }||z  }||z  }|D �cg c]  }||z  ‘Œ	 }}||z  }t        |	||¬«      }|�Bt        |t        t        f«      r&|D �cg c]  }||z  ‘Œ	 }}t	        |«      dk(  r|d   }n||z  }nd }t        ||||¬«      }t        |||¬«      } d }!|dk(  rt        | f|||dœ| ¤|¤|¤d	|i¤Ž}!n�|d
k(  rt        | f|||dœ| ¤|¤|¤Ž}!nƒ|dk(  rt        | f|||dœ|¤|¤Ž}!nk|dk(  rt        | f|||dœ|¤|¤Ž}!nS|dk(  r3|sJ d«       ‚|j                  dd«       t        | f||ddœ|¤||dœ¤|¤Ž}!n|dk(  rt        | f|||||dœ| ¤|¤|¤Ž}!t        |!d«      r$|!j                  «       |z   }"|r|"}|!|fS |"|z  }|!|fS |r||
z  }|!|fS c c}w c c}w )Nr   z=updates_per_epoch must be set to number of dataloader batches)Úwarmup_lr_initÚwarmup_tr(   r   )Únoise_range_tr+   r.   r1   )r4   r6   r8   Úcosine)Ú	t_initialÚlr_minÚt_in_epochsr:   ÚtanhÚstep)Údecay_tr"   rT   Ú	multistepÚplateauz(Plateau LR only supports step per epoch.r(   F)r"   Ú
patience_tÚ
cooldown_t)rS   ÚmodeÚpoly)ÚpowerrR   rS   rT   r:   Úget_cycle_length)rA   Ú
isinstanceÚlistÚtupleÚlenr   r   r   r	   Úpopr
   r   Úhasattrr_   )#rG   r   r   r   r   r   r    r"   r$   r&   r   r(   r)   r+   r.   r1   r4   r6   r8   r:   r<   r=   rH   rR   rO   rW   r[   ÚdÚwarmup_argsÚnÚnoise_rangeÚ
noise_argsÚ
cycle_argsÚlr_schedulerÚt_with_cycles_and_cooldowns#                                      rD   rJ   rJ   ?   s.  € ð2 €IØ€HØ€GØ €JáØ  1Ò$ÐeÐ&eÓeÐ$ØÐ 1Ñ1ˆ	ØÐ/Ñ/ˆØÐ-Ñ-ˆØ;KÖL°a˜AÐ 1Ó1ÐLÐÐLØÐ"3Ñ3ˆ
ô Ø ØØ#ô€Kð ÐÜ�eœd¤E˜]Ô+Ø27Ö8¨Q˜1˜y›=Ð8ˆKÐ8Ü�;Ó 1Ò$Ø)¨!™n‘à )Ñ+‰KàˆÜØ!ØØØô	€Jô ØØØô€Jð €LØ�ÒÜ(Øð	
àØØ&ñ		
ð
 ð	
ð ð	
ð ñ	
ð ò	
‰ð 
�&ŠÜ&Øð
àØØ&ñ	
ð
 ð
ð ð
ð ñ
‰ð 
�&ŠÜ&Øð
àØ!Ø&ñ	
ð
 ð
ð ñ
‰ð 
�+Ò	Ü+Øð
à$Ø!Ø&ñ	
ð
 ð
ð ñ
‰ð 
�)Ò	ÙÐIÐIÓIˆ~Ø�‰˜¨Ô/Ü)Øð	
à!Ø&Øñ		
ð
 ð	
ð Øò	
ð ñ	
‰ð 
�&ŠÜ&Øð

àØØØ&Øñ

ð ð

ð ð

ð ñ

ˆô ˆ|Ð/Ô0ð &2×%BÑ%BÓ%DÀzÑ%QÐ"ÙØ3ˆJð ˜Ð#Ð#ð 4Ð7HÑHˆJð
 ˜Ð#Ð#ñ Ø˜-Ñ'ˆJà˜Ð#Ð#ùòa Mùò 9s   ªF&Á'F+)N)r   )rQ   i,  éZ   )rn   é´   i  r   r!   r#   r%   r'   r   FNr-   r0   r3   r0   r#   r   r0   r   Tr   )Ú__doc__Útypingr   r   r   Útorch.optimr   Ú	cosine_lrr   Úmultistep_lrr	   Ú
plateau_lrr
   Úpoly_lrr   Ústep_lrr   Útanh_lrr   ÚboolrE   ÚintrL   ÚstrÚfloatrJ   r?   rF   rD   ú<module>r}      s©  ðñ÷ )Ñ (å !å (Ý .Ý *Ý $Ý $Ý $ñ ¨X°d©^ó  ðL "#ñ	àð	ð ó	ð ØØØ&4Ø Ø!ØØØØØ#Ø+/ØØØØØ ØØØ!Ø#Ø!"ñ/S$ØðS$àðS$ð ðS$ð ð	S$ð
 ˜s™)ðS$ð ðS$ð ðS$ð ðS$ð ðS$ð ðS$ð ðS$ð ðS$ð �U˜D ™KÐ'Ñ(ðS$ð ðS$ð ðS$ð  ð!S$ð" ð#S$ð$ ð%S$ð& ð'S$ð( ð)S$ð* ð+S$ð, ð-S$ð. ô/S$rF   