U
    rh                     @  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                   @  s0   e Zd ZeddddZeddddZdS )GradientNone)returnc            
      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      ?       @   ZGradientOfAddZnodesr   inputsoutputs   backend-testZproducer_nameZopset_importsZtest_gradient_of_addr   r   r   onnxhelperZ	make_noder   nparrayZastypeZfloat32Z
make_graphZmake_tensor_value_infoZTensorProtoFLOATZmake_operatorsetidr   Zmake_model_gen_versionr   )
add_nodegradient_noder   r   r   r   r   graphopsetsmodel r-   I/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/model/gradient.pyexport_gradient_scalar_add   sP    
     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   ZMuldZmy_mulr   dd_dadd_dbr   r   r   r      ZGradientOfTwoOperatorsr   r   r   r   r    Ztest_gradient_of_add_and_mulr!   r"   )r(   Zmul_noder)   r   r   r   r0   r1   r2   r*   r+   r,   r-   r-   r.   "export_gradient_scalar_add_and_mul<   sT    
  z+Gradient.export_gradient_scalar_add_and_mulN)__name__
__module____qualname__staticmethodr/   r4   r-   r-   r-   r.   r      s   ,r   )
__future__r   Znumpyr%   r#   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.modelr   Z	onnx.defsr   r   r   r-   r-   r-   r.   <module>   s   