
    h
                        S SK JrJrJr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JrJrJr  SSKJrJr  SS	KJr  SS
KJr  \" S\\\4   S9r\r\	R6                  " S5        SSSSS.S\\   S\\   S\\   S\\   S\\   S\\\4   4S jjj5       rS\\\4   S\S\S\\\4   4S jr   SS\S\\\4   S\\   S\\   SS4
S jjr!g)    )CallableDictOptionalTupleTypeVarUnioncast   )registry)uniform_init)Model)Floats1dFloats2dInts1dInts2d)	get_widthpartial   )ints_getitem)chainInT)boundzEmbed.v1N)columninitializerdropoutnOnVr   r   r   returnc          	         0 nUc  [         nUb  XES'   [        S[        [        [        U5      UXS.SS0S9nUb!  [        [        [        SS5      U45      U5      nX&R                  S'   [        [        [        [        4   U5      $ )	z9Map integers to vectors, using a fixed-size lookup table.Ndropout_rateembed)r   r   E)initattrsdimsparamsr   r   )r   r   forwardr   r#   r   r   slicer$   r	   r   OutT)r   r   r   r   r   r$   models          L/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/embed.pyEmbedr,      s     13E" 'nT;'!T{E 
 lE!TNF#;<eD"KKc4i %((    r*   idsis_trainc                 t  ^ ^^^^	 [        [        T R                  S5      5      m	T	R                  S   nTR                  S   mT R                  R                  S5      nT	T   nS mU(       a3  [        [        T R                  R                  U4U5      5      mTb  UT-  nS[        S[        4UUU UU	4S jjnXV4$ )Nr"   r   r   r    d_outputr   c                    > Tb  U T-  n TR                   R                  " TR                  6 nTR                   R                  UTU 5        TR	                  SU5        TR                   R                  T5      nU$ )Nr"   )opsalloc2fshapescatter_addinc_gradalloc1i)r1   	d_vectorsdX	drop_maskr.   r*   nNvectorss      r+   backpropforward.<locals>.backprop>   sh     	!HII%%w}}5			ih7sI&YYr"	r-   )r	   r   	get_paramr5   r$   getr   r3   get_dropout_maskr)   r   )
r*   r.   r/   r   r   outputr>   r;   r<   r=   s
   ``     @@@r+   r'   r'   0   s     8U__S12G	q	B	1B${{~>GS\FI599#=#=reW#MN	 iF4 F   r-   XYc                     Ub  UR                  S[        U5      5        UR                  S5      UR                  S5      4nUR                  SU " UR                  U5      5        g )Nr   r   r"   )set_dimr   get_dim	set_paramr3   )r   r*   rD   rE   r5   s        r+   r#   r#   K   sP     	}dIaL)]]4 %--"56E	OOCUYY67r-   )NN)"typingr   r   r   r   r   r   r	   configr   initializersr   r*   r   typesr   r   r   r   utilr   r   array_getitemr   r   r   r)   layersintfloatr,   boolr'   r#    r-   r+   <module>rU      sN   H H H  '  6 6 % ' e501 
) !&*#))) SM	)
 (#) e_) 39) )@%+7;
4>< 		8	8	8 	8 ~		8
 
	8r-   