U
    rh                     @  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||   }|| | }	||	|	  }
t |
| }|||	 |  }||j|
|jfS )N   )npsqrtZastypedtype)rtxghnorm_coefficientepsilondecay_factorZr_Zg_regularizedh_newZh_sqrtx_new r   G/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/adagrad.pyapply_adagrad   s    r   c                   @  s0   e Zd ZeddddZeddddZdS )AdagradNone)returnc               	   C  s   d} d}d}t jjdddddd	g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|||||| ||\}	}
t	||||||g|	|
gdt j
tdgd d S )NMbP?h㈵>皙?r   RTXGHZX_newZH_newinputsoutputsr   r   r   domainr	   r         ?             @Ztest_adagradr   r#   r$   nameZopset_importsonnxhelperZ	make_noder   r   arrayZfloat32Zint64r   r   Zmake_opsetid)r   r   r   noder
   r   r   r   r   r   r   r   r   r   export_adagrad   sF           zAdagrad.export_adagradc               
   C  s>  d} d}d}t jjdddddd	d
ddg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dgtjd}	tjddgtjd}
tjddgtjd}t|||||| ||\}}t|||	|
|| ||\}}t	|||||	||
||g||||gdt j
tdgd d S )Nr   r   r   r   r   r   ZX1ZX2ZG1ZG2ZH1ZH2ZX1_newZX2_newZH1_newZH2_newr"   r&   r   r'   r(   r)   g      g      @Ztest_adagrad_multipler   r*   r,   )r   r   r   r0   r
   r   x1Zg1h1Zx2Zg2h2Zx1_newZh1_newZx2_newZh2_newr   r   r   export_adagrad_multipleF   s`    
              
zAdagrad.export_adagrad_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   