
    iN              
       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     e/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/siamese.pysiameser      sV     
5::,b 13z"MM$'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     FB#ELLOB1MD'#ELLOB1MD''Qth?FI$ $ $ =  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""QqT"*\\!_$$QqT*ELLO,C,CAaD,IJ	LLOa(	MM$Q//56	MM$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FFNvW% 		,1%d
2CT2I,J	
39	 	!d!$'!37!
4>!$ KO	7d	7 (	79A$	7		7r   