Ë
    ›¾jN  ã            
       óR  — d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  ed«      Z ed«      Zeeef   Z ed	e
¬
«      Z ej"                  d«      deeef   deeeef   ef   deeef   fd„«       Zdeeef   dededeeef   fd„Z	 ddeeef   dee   dee   ddfd„Zy)é    )ÚCallableÚOptionalÚTupleÚTypeVaré   )Úregistry)ÚModel)ÚArrayXd)Ú	get_widthÚLayerTÚSimTÚOutT)Úboundz
siamese.v1ÚlayerÚ
similarityÚreturnc           
      ó®   — t        d| j                  › d|j                  › d�t        t        | |g| j	                  d«      |j	                  d«      dœ¬«      S )Nzsiamese(z, ú)ÚnIÚnO)r   r   )ÚinitÚlayersÚdims)r	   ÚnameÚforwardr   Úget_dim)r   r   s     ú^/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/siamese.pyÚsiameser      sV   € ô Ø
�5—:‘:�,˜b §¡Ð 1°Ð3ÜÜØ�zÐ"Ø—M‘M $Ó'¨z×/AÑ/AÀ$Ó/GÑHôð ó    ÚmodelÚX1_X2Úis_trainc                 óÜ   ‡	‡
‡— |\  }} | j                   d   ||«      \  }Š
 | j                   d   ||«      \  }Š | j                   d   ||f|«      \  }Š	dt        dt        fˆ	ˆ
ˆfd„}||fS )Nr   é   Úd_outputr   c                 óB   •—  ‰| «      \  }} ‰|«      } ‰|«      }||fS )N© )r%   Úd_vec1Úd_vec2Úd_input1Úd_input2Ú	bp_outputÚbp_vec1Úbp_vec2s        €€€r   Úfinish_updatezforward.<locals>.finish_update#   s.   ø€ Ù" 8Ó,‰ˆ�Ù˜6“?ˆÙ˜6“?ˆØ˜(Ð#Ð#r   )r   r   ÚInT)r    r!   r"   ÚX1ÚX2Úvec1Úvec2Úoutputr/   r,   r-   r.   s            @@@r   r   r      s�   ú€ ð �F€BˆØ#�E—L‘L ‘O B¨Ó1�M€Dˆ'Ø#�E—L‘L ‘O B¨Ó1�M€Dˆ'Ø'˜Ÿ™ Q™¨¨t¨°hÓ?Ñ€FˆIð$¤ð $¬÷ $ð �=Ð Ð r   NÚXÚYc                 ó  — |��| j                   d   j                  dt        |d   «      «       | j                   d   j                  |d   ¬«       | j                   d   j	                  |d   «      | j                   d   j	                  |d   «      f}| j                   d   j                  ||¬«       | j                  d| j                   d   j                  d«      «       | j                  d| j                   d   j                  d«      «       y )Nr   r   r$   )r6   )r6   r7   r   )r   Úset_dimr   Ú
initializeÚpredictr   )r    r6   r7   s      r   r   r   ,   sÛ   € ð 	€}Ø�‰�Q‰×Ñ ¤i°°!±£oÔ6Ø�‰�Q‰×"Ñ" Q q¡TÐ"Ô*Ø�\‰\˜!‰_×$Ñ$ Q q¡TÓ*¨E¯L©L¸©O×,CÑ,CÀAÀaÁDÓ,IÐJˆØ	‡L�L��O×Ñ  aÐÔ(Ø	‡M�M�$˜Ÿ™ Q™×/Ñ/°Ó5Ô6Ø	‡M�M�$˜Ÿ™ Q™×/Ñ/°Ó5Õ6r   )NN)Útypingr   r   r   r   Úconfigr   r    r	   Útypesr
   Úutilr   r   r   r0   r   r   r   Úboolr   r   r'   r   r   ú<module>rA      s  ðß 5Ó 5å Ý Ý Ý á	�Ó	€Ùˆvƒ€ØˆF�FˆNÑ€Ùˆv˜WÔ%€ð €‡��Óð	Ø�˜�Ñð	Ø,1°%¸¸d¸
Ñ2CÀTÐ2IÑ,Jð	à
ˆ3�ˆ9Ñò	ó ð	ð!Ø��d�Ñð!Ø$'ð!Ø37ð!à
ˆ4�ˆ>Ñó!ð$ KOñ	7Ø��d�Ñð	7Ø (¨¡ð	7Ø9AÀ$¹ð	7à	ô	7r   