o
    wi                     @  sX   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
mZ G dd deZdS )    )annotationsN)Base)expect)AI_ONNX_PREVIEW_TRAINING_DOMAINONNX_DOMAINc                   @  s(   e Zd ZedddZedddZdS )	GradientreturnNonec            
      C  sN  t jjdddgdgdd} t jjdddgdd	gd
tddgdd}tdtj}tdtj}|| }tdtj}tdtj}t jj| |gdt j	dt j
jg t j	dt j
jg gt j	dt j
jg t j	dt j
jg t j	d	t j
jg gd}t jtdt jtdg}t jj|d|d}	t|	||g|||gdd d S )NAddabcmy_addnamer   dc_dadc_dbmy_gradientr   domainxsy      ?       @   GradientOfAddnodesr   inputsoutputs   backend-testproducer_nameopset_importstest_gradient_of_addr   r   r   onnxhelper	make_noder   nparrayastypefloat32
make_graphmake_tensor_value_infoTensorProtoFLOATmake_operatorsetidr   make_model_gen_versionr   )
add_nodegradient_noder   r   r   r   r   graphopsetsmodel r:   b/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/model/gradient.pyexport_gradient_scalar_add   sF   

z#Gradient.export_gradient_scalar_addc                  C  sf  t jjdddgdgdd} t jjdddgdgd	d}t jjd
ddgddgdtddgdd}tdtj}tdtj}|| }|| }d| | tj}|}t jj| ||gdt j	dt j
jg t j	dt j
jg gt j	dt j
jg t j	dt j
jg t j	dt j
jg gd}	t jtdt jtdg}
t jj|	d|
d}t|||g|||gdd d S )Nr
   r   r   r   r   r   Muldmy_mulr   dd_dadd_dbr   r   r   r      GradientOfTwoOperatorsr   r    r   r!   r"   test_gradient_of_add_and_mulr&   r'   )r5   mul_noder6   r   r   r   r>   r@   rA   r7   r8   r9   r:   r:   r;   "export_gradient_scalar_add_and_mul<   sP   

z+Gradient.export_gradient_scalar_add_and_mulN)r   r	   )__name__
__module____qualname__staticmethodr<   rF   r:   r:   r:   r;   r      s
    ,r   )
__future__r   numpyr+   r(   onnx.backend.test.case.baser   onnx.backend.test.case.modelr   	onnx.defsr   r   r   r:   r:   r:   r;   <module>   s   