§
    1�Åj  ã                  óf   — 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e¦  «        ZdS )é    )ÚannotationsN)ÚBase)Úexpect)ÚAI_ONNX_PREVIEW_TRAINING_DOMAINÚONNX_DOMAINc                  ó>   — e Zd Zedd„¦   «         Zedd„¦   «         ZdS )ÚGradientÚreturnÚNonec                 ón  — t           j                             dddgdgd¬¦  «        } t           j                             dddgdd	gd
t          ddgd¬¦  «        }t	          j        d¦  «                             t          j        ¦  «        }t	          j        d¦  «                             t          j        ¦  «        }||z   }t	          j        d¦  «                             t          j        ¦  «        }t	          j        d¦  «                             t          j        ¦  «        }t           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¬¦  «        }t           j                             t          d¦  «        t           j                             t          d¦  «        g}t           j                             |d|¬¦  «        }	t          |	||g|||g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Úmodels
             úVC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/model/gradient.pyÚexport_gradient_scalar_addz#Gradient.export_gradient_scalar_add   s=  € å”;×(Ò(¨°°c°
¸S¸EÈÐ(ÑQÔQˆÝœ×-Ò-ØØ�#ˆJØ�gÐØÝ2Ø�SˆzØð .ñ 
ô 
ˆõ ŒH�S‰MŒM× Ò ¥¤Ñ,Ô,ˆÝŒH�S‰MŒM× Ò ¥¤Ñ,Ô,ˆØ�‰Eˆå”˜‘”×"Ò"¥2¤:Ñ.Ô.ˆå”˜‘”×"Ò"¥2¤:Ñ.Ô.ˆå”×&Ò&Ø˜]Ð+Ø å”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSÝ”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSðõ
 ”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSÝ”×2Ò2°7½DÔ<LÔ<RÐTVÑWÔWÝ”×2Ò2°7½DÔ<LÔ<RÐTVÑWÔWðð 'ñ 
ô 
ˆõ ŒK×*Ò*­;¸Ñ;Ô;ÝŒK×*Ò*Õ+JÈAÑNÔNð
ˆõ ”×2Ò2Ø ¸vð 3ñ 
ô 
ˆõ 	Ø˜1˜a˜&¨1¨e°UÐ*;ÐBXð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ó    c                 óP  — t           j                             dddgdgd¬¦  «        } t           j                             dddgdgd	¬¦  «        }t           j                             d
ddgddgdt          ddgd¬¦  «        }t	          j        d¦  «                             t          j        ¦  «        }t	          j        d¦  «                             t          j        ¦  «        }||z   }||z  }d|z  |z                        t          j        ¦  «        }|}t           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¬¦  «        }	t           j                             t          d¦  «        t           j                             t          d¦  «        g}
t           j                             |	d|
¬¦  «        }t          |||g|||g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*   )r8   Úmul_noder9   r   r   r   rB   rD   rE   r:   r;   r<   s               r=   Ú"export_gradient_scalar_add_and_mulz+Gradient.export_gradient_scalar_add_and_mul<   sV  € å”;×(Ò(¨°°c°
¸S¸EÈÐ(ÑQÔQˆÝ”;×(Ò(¨°°c°
¸S¸EÈÐ(ÑQÔQˆÝœ×-Ò-ØØ�#ˆJØ�gÐØÝ2Ø�SˆzØð .ñ 
ô 
ˆõ ŒH�S‰MŒM× Ò ¥¤Ñ,Ô,ˆÝŒH�S‰MŒM× Ò ¥¤Ñ,Ô,ˆØ�‰Eˆà�‰Eˆà�Q‘˜‘×"Ò"¥2¤:Ñ.Ô.ˆàˆå”×&Ò&Ø˜X }Ð5Ø)å”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSÝ”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSðõ
 ”×2Ò2°3½Ô8HÔ8NÐPRÑSÔSÝ”×2Ò2°7½DÔ<LÔ<RÐTVÑWÔWÝ”×2Ò2°7½DÔ<LÔ<RÐTVÑWÔWðð 'ñ 
ô 
ˆõ ŒK×*Ò*­;¸Ñ;Ô;ÝŒK×*Ò*Õ+JÈAÑNÔNð
ˆõ ”×2Ò2Ø ¸vð 3ñ 
ô 
ˆõ 	ØØ�q�6Ø˜˜uÐ%Ø/ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r?   N)r
   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr>   rJ   © r?   r=   r	   r	      sS   € € € € € Øð*
ð *
ð *
ñ „\ð*
ðX ð1
ð 1
ð 1
ñ „\ð1
ð 1
ð 1
r?   r	   )Ú
__future__r   Únumpyr.   r+   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.modelr   Ú	onnx.defsr   r   r	   rO   r?   r=   ú<module>rU      s¨   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø /Ð /Ð /Ð /Ð /Ð /Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð`
ð `
ð `
ð `
ð `
ˆtñ `
ô `
ð `
ð `
ð `
r?   