§
    1�ÅjO  ã                  ón   — 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„ Zd„ Z G d„ d	e¦  «        ZdS )
é    )ÚannotationsN)ÚBase)Úexpect)ÚAI_ONNX_PREVIEW_TRAINING_DOMAINc                óT   — ||z  |z   }|dk    r|nd}	||z  |	|z  z   }
|| |
z  z
  }||
fS ©Nr   é   © ©ÚrÚtÚxÚgÚvÚnorm_coefficientÚalphaÚbetaÚg_regularizedÚbeta_adjustedÚv_newÚx_news               úUC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/momentum.pyÚapply_momentumr      sL   € à$ qÑ(¨1Ñ,€Mà šE˜E�D�D q€Mà�A‰I˜¨Ñ5Ñ5€Eà��E‘	‰M€EØ�%ˆ<Ðó    c                ó`   — ||z  |z   }|dk    r|nd}	||z  |	|z  z   }
|| |||
z  z   z  z
  }||
fS r   r
   r   s               r   Úapply_nesterovr      sW   € à$ qÑ(¨1Ñ,€Mà šE˜E�D�D q€Mà�A‰I˜¨Ñ5Ñ5€Eà��] U¨U¡]Ñ2Ñ3Ñ3€EØ�%ˆ<Ðr   c                  óV   — e Zd Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )ÚMomentumÚreturnÚNonec            
     ón  — d} d}d}t           j                             dg d¢ddg| ||dt          ¬	¦  «        }t	          j        dt          j        ¬
¦  «        }t	          j        dt          j        ¬
¦  «        }t	          j        ddgt          j        ¬
¦  «        }t	          j        ddgt          j        ¬
¦  «        }t	          j        ddgt          j        ¬
¦  «        }t          |||||| ||¦  «        \  }	}
t          ||||||g|	|
gdt           j         
                    t          d¦  «        g¬¦  «         d S )Nçü©ñÒMbP?çffffffî?çš™™™™™¹?r   ©ÚRÚTÚXÚGÚVÚX_newÚV_newÚstandard©ÚinputsÚoutputsr   r   r   ÚmodeÚdomain©Údtyper   ç333333ó?çffffff@ç®Gázî¿ç      Àç333333û?çÍÌÌÌÌÌ@Útest_momentumr	   ©r/   r0   ÚnameÚopset_imports©ÚonnxÚhelperÚ	make_noder   ÚnpÚarrayÚfloat32Úint64r   r   Úmake_opsetid©r   r   r   Únoder   r   r   r   r   r   r   s              r   Úexport_momentumzMomentum.export_momentum'   sK  € ð !ÐØˆØˆõ Œ{×$Ò$ØØ,Ð,Ð,Ø˜gÐ&Ø-ØØØÝ2ð %ñ 	
ô 	
ˆõ ŒH�S¥¤
Ð+Ñ+Ô+ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆÝŒH�c˜3�Z¥r¤zÐ2Ñ2Ô2ˆÝŒH�e˜T�]­"¬*Ð5Ñ5Ô5ˆÝŒH�c˜3�Z¥r¤zÐ2Ñ2Ô2ˆõ & a¨¨A¨q°!Ð5EÀuÈdÑSÔS‰ˆˆuõ 	ØØ�q˜!˜Q �?Ø˜E�NØ å”×(Ò(Õ)HÈ!ÑLÔLðð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c            
     ón  — d} d}d}t           j                             dg d¢ddg| ||dt          ¬	¦  «        }t	          j        d
t          j        ¬¦  «        }t	          j        dt          j        ¬¦  «        }t	          j        ddgt          j        ¬¦  «        }t	          j        ddgt          j        ¬¦  «        }t	          j        ddgt          j        ¬¦  «        }t          |||||| ||¦  «        \  }	}
t          ||||||g|	|
gdt           j         
                    t          d¦  «        g¬¦  «         d S )Ng{®Gáz„?r#   ç      ð?r   r%   r+   r,   Únesterovr.   r$   r3   r   r5   r6   r7   r8   r9   r:   Útest_nesterov_momentumr	   r<   )r@   rA   rB   r   rC   rD   rE   rF   r   r   rG   rH   s              r   Úexport_nesterov_momentumz!Momentum.export_nesterov_momentumO   sK  € ð  ÐØˆØˆõ Œ{×$Ò$ØØ,Ð,Ð,Ø˜gÐ&Ø-ØØØÝ2ð %ñ 	
ô 	
ˆõ ŒH�S¥¤
Ð+Ñ+Ô+ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆÝŒH�c˜3�Z¥r¤zÐ2Ñ2Ô2ˆÝŒH�e˜T�]­"¬*Ð5Ñ5Ô5ˆÝŒH�c˜3�Z¥r¤zÐ2Ñ2Ô2ˆõ & a¨¨A¨q°!Ð5EÀuÈdÑSÔS‰ˆˆuõ 	ØØ�q˜!˜Q �?Ø˜E�NØ)å”×(Ò(Õ)HÈ!ÑLÔLðð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óp  — d} d}d}t           j                             dg d¢g d¢| ||dt          ¬¦  «        }t	          j        d	t          j        ¬
¦  «        }t	          j        dt          j        ¬
¦  «        }t	          j        dgt          j        ¬
¦  «        }t	          j        dgt          j        ¬
¦  «        }t	          j        dgt          j        ¬
¦  «        }t	          j        ddgt          j        ¬
¦  «        }	t	          j        ddgt          j        ¬
¦  «        }
t	          j        ddgt          j        ¬
¦  «        }t          |||||| ||¦  «        \  }}t          |||	|
|| ||¦  «        \  }}t          |||||	||
||g||||gdt           j         
                    t          d¦  «        g¬¦  «         d S )Nr"   r#   g333333ë?r   )r&   r'   ÚX1ÚX2ÚG1ÚG2ÚH1ÚH2)ÚX1_newÚX2_newÚV1_newÚV2_newr-   r.   r$   r3   r   rL   g      ð¿g       @g      Àg      @Útest_momentum_multipler	   r<   r?   )r   r   r   rI   r   r   Úx1Úg1Úv1Úx2Úg2Úv2Úx1_newÚv1_newÚx2_newÚv2_news                   r   Úexport_momentum_multiplez!Momentum.export_momentum_multiplew   sÀ  € ð !ÐØˆØˆåŒ{×$Ò$ØØAÐAÐAØ<Ð<Ð<Ø-ØØØÝ2ð %ñ 	
ô 	
ˆõ ŒH�S¥¤
Ð+Ñ+Ô+ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆåŒX�s�e¥2¤:Ð.Ñ.Ô.ˆÝŒX�t�f¥B¤JÐ/Ñ/Ô/ˆÝŒX�s�e¥2¤:Ð.Ñ.Ô.ˆåŒX�s˜C�j­¬
Ð3Ñ3Ô3ˆÝŒX�t˜T�l­"¬*Ð5Ñ5Ô5ˆÝŒX�s˜C�j­¬
Ð3Ñ3Ô3ˆõ (¨¨1¨b°"°bÐ:JÈEÐSWÑXÔX‰ˆ�Ý'¨¨1¨b°"°bÐ:JÈEÐSWÑXÔX‰ˆ�õ 	ØØ�q˜"˜b " b¨"¨bÐ1Ø˜V V¨VÐ4Ø)å”×(Ò(Õ)HÈ!ÑLÔLðð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   N)r   r    )Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrJ   rO   rf   r
   r   r   r   r   &   st   € € € € € Øð%
ð %
ð %
ñ „\ð%
ðN ð%
ð %
ð %
ñ „\ð%
ðN ð*
ð *
ð *
ñ „\ð*
ð *
ð *
r   r   )Ú
__future__r   ÚnumpyrC   r@   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   Ú	onnx.defsr   r   r   r   r
   r   r   ú<module>rp      sÀ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð	ð 	ð 	ð	ð 	ð 	ð|
ð |
ð |
ð |
ð |
ˆtñ |
ô |
ð |
ð |
ð |
r   