o
    soi                     @  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sqrtastypedtype)rtxghnorm_coefficientepsilondecay_factorr_g_regularizedh_newh_sqrtx_new r   W/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/adagrad.pyapply_adagrad   s   r   c                   @  s(   e Zd ZedddZedddZdS )	AdagradreturnNonec               	   C  s   d} d}d}t jjdg 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|||||| ||\}	}
t	||||||g|	|
gdt j
tdgd d S )NMbP?h㈵>皙?r   )RTXGHX_newH_newinputsoutputsr   r   r   domainr
   r         ?             @test_adagradr   r)   r*   nameopset_importsonnxhelper	make_noder   r   arrayfloat32int64r   r   make_opsetid)r   r   r   noder   r   r   r   r   r   r   r   r   r   export_adagrad   s8   
zAdagrad.export_adagradc               
   C  s.  d} d}d}t jjdg dg d| ||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"   X1X2G1G2H1H2)X1_newX2_newH1_newH2_newr(   r,   r   r-   r.   r/   g      g      @test_adagrad_multipler   r1   r4   )r   r   r   r<   r   r   x1g1h1x2g2h2x1_newh1_newx2_newh2_newr   r   r   export_adagrad_multipleF   sD   

zAdagrad.export_adagrad_multipleN)r   r   )__name__
__module____qualname__staticmethodr=   rS   r   r   r   r   r      s
    (r   )
__future__r   numpyr   r5   onnx.backend.test.case.baser   onnx.backend.test.case.noder   	onnx.defsr   r   r   r   r   r   r   <module>   s   