o
    si	                     @   s   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ g dZdddZdd	 Zd
d ZdS )    )	Optimizer)AdamRMSpropSGDAdadeltaAdagradAdamaxAdamWASGD)AccSGDAdaBoundAdaModDiffGradLambNovoGradPIDQHAdamQHMRAdamSGDWYogiRangerRangerQHRangerVA)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   make_optimizergetadamc                 K   s   t || fi |S )a  

    Args:
        params (iterable): Output of `nn.Module.parameters()`.
        optimizer (str or :class:`torch.optim.Optimizer`): Identifier understood
            by :func:`~.get`.
        **kwargs (dict): keyword arguments for the optimizer.

    Returns:
        torch.optim.Optimizer
    Examples
        >>> from torch import nn
        >>> model = nn.Sequential(nn.Linear(10, 10))
        >>> optimizer = make_optimizer(model.parameters(), optimizer='sgd',
        >>>                            lr=1e-3)
    )r   )params	optimizerkwargs r    N/home/ubuntu/.local/lib/python3.10/site-packages/asteroid/engine/optimizers.pyr   3   s   r   c                 C   sL   | j t  v s| j  t  v rtd| j  dt | j | i dS )zxRegister a custom opt, gettable with `optimzers.get`.

    Args:
        custom_opt: Custom optimizer to register.

    zActivation z% already exists. Choose another name.N)__name__globalskeyslower
ValueErrorupdate)
custom_optr    r    r!   register_optimizerG   s   $r)   c                 C   sj   t | tr| S t | tr,dd t  D }||  }|du r*tdt|  |S tdt|  )a  Returns an optimizer function from a string. Returns its input if it
    is callable (already a :class:`torch.optim.Optimizer` for example).

    Args:
        identifier (str or Callable): the optimizer identifier.

    Returns:
        :class:`torch.optim.Optimizer` or None
    c                 S   s   i | ]	\}}|  |qS r    )r%   ).0kvr    r    r!   
<dictcomp>`   s    zget.<locals>.<dictcomp>Nz Could not interpret optimizer : )
isinstancer   strr#   itemsr   r%   r&   )
identifierto_getclsr    r    r!   r   S   s   


r   N)r   )torch.optim.optimizerr   torch.optimr   r   r   r   r   r   r	   r
   torch_optimizerr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   r)   r   r    r    r    r!   <module>   s    (D
