o
    ´‹
j  ã                   @   s&   d dl Zd dlZddd„Zdd„ ZdS )é    NFc                 C   s®   d}|r|st jj dd„ |  ¡ D ƒ|¡}nt jj ||¡}n|s,t jj |  ¡ |¡}nt jj ||¡}t|tƒrHt 	|¡rDt
dƒ d}||fS t  	|¡rSt
dƒ d}||fS )z:Check model gradient against unexpected jumps and failuresFc                 S   s   g | ]
\}}d |vr|‘qS )Ústopnet© )Ú.0ÚnameÚparamr   r   úE/home/kuhnn/.local/lib/python3.10/site-packages/TTS/utils/training.pyÚ
<listcomp>   s    z check_update.<locals>.<listcomp>z | > Gradient is INF !!T)ÚtorchÚnnÚutilsÚclip_grad_norm_Únamed_parametersÚ
parametersÚ
isinstanceÚfloatÚnpÚisinfÚprint)ÚmodelÚ	grad_clipÚignore_stopnetÚamp_opt_paramsÚ	skip_flagÚ	grad_normr   r   r   Úcheck_update   s&   ÿ


ýr   c                 C   sJ   t j ¡ }|dkrd}d}|jD ]}| | |d kr|}q|d |d fS )zASetup the gradual training schedule wrt number
    of active GPUsr   é   Né   )r	   ÚcudaÚdevice_countÚgradual_training)Úglobal_stepÚconfigÚnum_gpusÚ
new_valuesÚvaluesr   r   r   Úgradual_training_scheduler!   s   

€r%   )FN)Únumpyr   r	   r   r%   r   r   r   r   Ú<module>   s    
