o
    9wi                     @   sT   d dl mZ d dlmZ d dlmZ 				dded	ed
ededee f
ddZdS )    )Optional)	Optimizer)CosineAnnealingWarmRestarts:0yE>MbP?   N	optimizermin_lrmax_lrpatiencenum_batches_per_epochc                 K   s2   | j D ]}||d< q|| }t| ||ddddS )a  Wrapper around CosineAnnealingWarmRestarts

    Parameters
    ----------
    optimizer : Optimizer
        Optimizer
    min_lr : float, optional
        Defaults to 1e-8.
    max_lr : float, optional
        Defaults to 1e-3
    patience : int, optional
        Number of epochs per cycle. Defaults to 1.
    num_batches_per_epoch : int, optional
        Number of batches per epoch.
    lr   )eta_minT_multstep)	schedulerinterval)param_groups_CosineAnnealingWarmRestarts)r   r	   r
   r   r   kwargsg	num_steps r   y/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/pyannote/audio/cli/lr_schedulers/CosineAnnealingWarmRestarts.pyr      s   

r   )r   r   r   N)	typingr   torch.optimr   torch.optim.lr_schedulerr   r   floatintr   r   r   r   <module>   s$   