o
    9wi                     @   sZ   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	dee	 fddZdS )    )Optional)	Optimizer)CyclicLR:0yE>MbP?triangular22   N	optimizermin_lrmax_lrmodepatiencenum_batches_per_epochc                 K   s*   t d| | }t| ||||ddddS )a  Wrapper around CyclicLR learning rate scheduler

    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 50.
    num_batches_per_epoch : int, optional
        Number of batches per epoch.
    mode : {"triangular", "triangular2"}, optional
        Defaults to "triangular2".
    g      ?F)base_lrr   step_size_upr   cycle_momentumstep)	schedulerinterval)int	_CyclicLR)r	   r
   r   r   r   r   kwargsr    r   f/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/pyannote/audio/cli/lr_schedulers/CyclicLR.pyr      s   r   )r   r   r   r   N)
typingr   torch.optimr   torch.optim.lr_schedulerr   r   floatstrr   r   r   r   r   <module>   s*   