U
    rh4                     @  s\   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 dd ZG dd	 d	eZdS )
    )annotationsN)Base)expect)AI_ONNX_PREVIEW_TRAINING_DOMAINc                 C  s   || | }|| d| |  }|	| d|	 ||   }t ||
 }d }|dkrv| t d|	|   d||   }n| }||||   }d| | }|||fS )N   r   )npsqrt)rtxgvhnorm_coefficientZnorm_coefficient_postalphabetaepsilonZg_regularizedv_newh_newZh_sqrtZ
r_adjustedx_newZx_final r   D/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/adam.py
apply_adam   s    $r   c                   @  s0   e Zd ZeddddZeddddZdS )AdamNone)returnc                  C  s  d} d}d}d}t jjddddd	d
dgdddg| |||td}tjdtjd}tjdtjd}tjddgtjd}tjddgtjd}tjddgtjd}	tjddgtjd}
t|||||	|
| d|||\}}}t	||||||	|
g|||gdt j
tdgd d S )NMbP?ffffff?皙?gHz>r   RTXGVHZX_newZV_newZH_new)inputsoutputsr   r   r   r   domainZdtyper   g333333?gffffff@gGzg      g333333?g@        Z	test_adamr   r%   r&   nameZopset_importsonnxhelperZ	make_noder   r   arrayZfloat32Zint64r   r   Zmake_opsetid)r   r   r   r   noder	   r
   r   r   r   r   r   r   r   r   r   r   export_adam)   sR              
zAdam.export_adamc                  C  s  d} d}d}d}t jjddddd	d
dddddg
ddddddg| ||td}tjdtjd}tjdtjd}tjdgtjd}tjdgtjd}tjdgtjd}	tjdgtjd}
tjddgtjd}tjddgtjd}tjddgtjd}tjdd gtjd}t|||||	|
| d!|||\}}}t||||||| d!|||\}}}t	||||||||	||
|g
||||||gd"t j
td#gd$ d S )%Nr   r   g333333?g{Gz?r   r   r    ZX1ZX2ZG1ZG2ZV1ZV2ZH1ZH2ZX1_newZX2_newZV1_newZV2_newZH1_newZH2_new)r%   r&   r   r   r   r'   r   r(   r   g      ?g      g       @g      ?g      g      @g      $@r)   Ztest_adam_multipler   r*   r,   )r   r   r   r   r0   r	   r
   x1Zg1Zv1h1Zx2Zg2Zv2h2Zx1_newZv1_newZh1_newZx2_newZv2_newZh2_newr   r   r   export_adam_multipleU   sr              
          
zAdam.export_adam_multipleN)__name__
__module____qualname__staticmethodr1   r5   r   r   r   r   r   (   s   +r   )
__future__r   Znumpyr   r-   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   Z	onnx.defsr   r   r   r   r   r   r   <module>   s   