o
    oi                      @   s@  d dl Zd dlZd dlZd dlmZ d dlZdddZG dd dejZ	dd	 Z
d
d Zeddddfejddddfejddddfejddddfejddddfejddddfejdddddfejddddfejddddfejddddfejddddfejddddfejddddfejddddfejddddfejdddddfejddddfejdddddfejddddfejddddfejddddfej ddddfej!ddddfej"ddddfej#ddddfej$dddddfej%ddddfej&ddddfgZ'ej(j)de'e
ddd Z*dS )     N)nn*   c           	      C   s   t j| }d}d}|||d }|d }|d |d d f dt ||f  |d |d d f< ||d d d f dt ||f  ||d d d f< t dg| dg|  dd}t|}t|}||fS )Nd      r      )	nprandomRandomStaterandnonesarrayreshapetorchTensor)	seedrngNDXmidYxy r   Z/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/tests/test_optimizer_with_nn.pymake_dataset	   s   66"

r   c                       s$   e Zd Z fddZdd Z  ZS )LogisticRegressionc                    s.   t t|   tdd| _tdd| _d S )Nr      r   )superr   __init__r   Linearlinear1linear2)self	__class__r   r   r       s   zLogisticRegression.__init__c                 C   s(   t | |}| |}t |}|S N)r   relur!   r"   sigmoid)r#   r   outputy_predr   r   r   forward%   s   

zLogisticRegression.forward)__name__
__module____qualname__r   r+   __classcell__r   r   r$   r   r      s    r   c                 C   s   d | d j| dd  S )Nz{} {}r   r   )formatr,   )vr   r   r   ids,   s   r2   c                  O   s   t j| i |}t |S r&   )optimYogi	Lookahead)akwbaser   r   r   build_lookahead0   s   
r9   g?gMbP?)lrweight_decay   g      ?)lipsbetag      ?)r:   gammar;          @g      ?g{Gz?)r:   r;   momentumgh㈵>g?g?optimizer_config)r2   c                 C   s   t d t \}}t }t }| \}}}|| fi |}d }	t|D ]}
||}|||}|	d u r7|}	|  |j	dd |
  q&|	 d|  ksRJ d S )Nr   T)create_graphr@   )r   manual_seedr   r   r   BCELoss
parametersrange	zero_gradbackwardstepitem)rB   x_datay_datamodelloss_fnoptimizer_classconfig
iterations	optimizer	init_loss_r*   lossr   r   r   #test_basic_nn_modeloptimizer_configU   s    




rW   )r   )+numpyr   pytestr   r   torch_optimizerr3   r   Moduler   r2   r9   	A2GradExp	A2GradInc	A2GradUniAccSGD	AdaBeliefAdaBoundAdaMod	AdafactorAdamPAggMoApolloDiffGradLambNovoGradPIDQHAdamQHMRAdamRangerRangerQHRangerVASGDPSGDWSWATSShampoor4   
Adahessian
optimizersmarkparametrizerW   r   r   r   r   <module>   sP    
 