a
    þdÓ  ã                   @   s6   d dl Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ ZdS )é    Nc                 C   s   | j D ]}||d< qd S )NÚlr)Zparam_groups)Ú	optimizerZnew_lrZparam_group© r   ú[/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/training/scheduler.pyÚassign_learning_rate   s    
r   c                 C   s   | |d  | S ©Né   r   )Úbase_lrÚwarmup_lengthÚstepr   r   r   Ú
_warmup_lr	   s    r   c                    s   ‡ ‡‡fdd„}|S )Nc                    s(   | ˆk rt ˆ ˆ| ƒ}nˆ }tˆ|ƒ |S )N©r   r   )r   r   ©r	   r   r
   r   r   Ú_lr_adjuster   s
    
zconst_lr.<locals>._lr_adjusterr   ©r   r	   r
   Ústepsr   r   r   r   Úconst_lr   s    r   ç      ð?ç        c                    s   ‡ ‡‡‡‡‡‡fdd„}|S )Nc                    sj   ˆˆ }| ˆk rt ˆ ˆ| ƒ}n>| |k r,ˆ }n0| | }ˆ| }d||  ˆ }|ˆ ˆ  ˆ }tˆ|ƒ |S r   r   )r   Zstart_cooldown_stepr   ÚeÚesZdecay©r	   Úcooldown_end_lrÚcooldown_powerÚcooldown_stepsr   r   r
   r   r   r      s    
z'const_lr_cooldown.<locals>._lr_adjusterr   )r   r	   r
   r   r   r   r   r   r   r   r   Úconst_lr_cooldown   s    r   c                    s   ‡ ‡‡‡fdd„}|S )Nc                    sT   | ˆk rt ˆ ˆ| ƒ}n0| ˆ }ˆˆ }ddt tj| | ¡  ˆ  }tˆ|ƒ |S )Ng      à?r   )r   ÚnpÚcosÚpir   )r   r   r   r   ©r	   r   r   r
   r   r   r   ,   s     
zcosine_lr.<locals>._lr_adjusterr   r   r   r   r   Ú	cosine_lr+   s    	r    )r   r   )Únumpyr   r   r   r   r   r    r   r   r   r   Ú<module>   s
   
