
    hN              
       T   S SK JrJrJrJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  \" S5      r\" S5      r\\\4   r\" S	\
S
9r\R"                  " S5      S\\\4   S\\\\4   \4   S\\\4   4S j5       rS\\\4   S\S\S\\\4   4S jr SS\\\4   S\\   S\\   SS4S jjrg)    )CallableOptionalTupleTypeVar   )registry)Model)ArrayXd)	get_widthLayerTSimTOutT)boundz
siamese.v1layer
similarityreturnc           
          [        SU R                   SUR                   S3[        [        X/U R	                  S5      UR	                  S5      S.S9$ )Nzsiamese(z, )nInO)r   r   )initlayersdims)r	   nameforwardr   get_dim)r   r   s     N/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/siamese.pysiameser      sT     
5::,b 13"MM$'z/A/A$/GH     modelX1_X2is_trainc                    ^	^
^ Uu  p4U R                   S   " X25      u  nm
U R                   S   " XB5      u  nmU R                   S   " XV4U5      u  nm	S[        S[        4U	U
U4S jjnXx4$ )Nr      d_outputr   c                 >   > T" U 5      u  pT" U5      nT" U5      nX44$ )N )r%   d_vec1d_vec2d_input1d_input2	bp_outputbp_vec1bp_vec2s        r   finish_update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      sv     FBLLOB1MD'LLOB1MD'Qh?FI$ $ $ $   r   NXYc                    Ub  U R                   S   R                  S[        US   5      5        U R                   S   R                  US   S9  U R                   S   R	                  US   5      U R                   S   R	                  US   5      4nU R                   S   R                  XS9  U R                  SU R                   S   R                  S5      5        U R                  SU R                   S   R                  S5      5        g )Nr   r   r$   )r7   )r7   r8   r   )r   set_dimr   
initializepredictr   )r    r7   r8   s      r   r   r   ,   s     	}Qi!o6Q""QqT"*\\!_$$QqT*ELLO,C,CAaD,IJ	LLO(	MM$Q//56	MM$Q//56r   )NN)typingr   r   r   r   configr   r    r	   typesr
   utilr   r   r   r1   r   r   r   boolr   r   r'   r   r   <module>rB      s   5 5    		vFFNvW% 
		,1%d
2CT2I,J	
39	 	!d!$'!37!
4>!$ KO	7d	7 (	79A$	7		7r   