
    i
                        d dl mZmZmZ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mZmZmZ ddlmZmZ dd	lmZ dd
lmZ  edeeef         ZeZ e	j6                  d      	 	 ddddddee   dee   dee   dee   dee   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deeef   dee   dee   ddf
dZ!y)    )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          	         i }|t         }|||d<   t        dt        t        t        |      || |dddi      }|!t        t        t        dd      |f      |      }||j                  d<   t        t        t        t        f   |      S )	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          c/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/embed.pyEmbedr,      s     13E" 'nT;'b!T{E 
 lE!TNF#;<eD"EKKc4i %((    r*   idsis_trainc                 f   	 t        t         j                  d            		j                  d   }j                  d    j                  j                  d      }	   }d |r2t        t         j                  j                  |f|            |z  }dt        dt        f 	fd}||fS )Nr"   r   r   r    d_outputr   c                     | z  }  j                   j                  j                   }j                   j                  ||        j	                  d|       j                   j                        }|S )Nr"   )opsalloc2fshapescatter_addinc_gradalloc1i)r1   	d_vectorsdX	drop_maskr.   r*   nNvectorss      r+   backpropzforward.<locals>.backprop>   sj     	!H%EII%%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   8r-   XYc                     ||j                  dt        |             |j                  d      |j                  d      f}|j                  d | |j                  |             y )Nr   r   r"   )set_dimr   get_dim	set_paramr3   )r   r*   rC   rD   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>rT      sP   H H H  '  6 6 % ' e501 ) !&*#))) SM	)
 (#) e_) 39) )@%+7;
4>< 		8	8	8 	8 ~		8
 
	8r-   