
    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JrJr  \" S\\\\   \\4   S9r\	R"                  " S5      SS	\S
\\\4   4S jj5       rS\\\4   S\S\S
\\\4   4S jrS\\\4   S\S\S
\\\4   4S jrS\\\4   S\S\S
\\\4   4S jrS\\\4   S\S\S
\\\4   4S jrS\\\4   S\\   S\S
\\\   \4   4S jrg)    )CallableListSequenceTupleTypeVarUnioncast   )registry)Model)ArrayXdPaddedRaggedInT)boundz
Dropout.v1ratereturnc                 &    [        S[        U SS.S9$ )zHelp prevent overfitting by adding a random distortion to the input data
during training.  Specifically, cells of the input are zeroed with
probability determined by the `rate` argument.
dropoutT)dropout_rate
is_enabled)attrs)r   forward)r   s    N/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/dropout.pyDropoutr   
   s     GDPT+UVV    modelXis_trainc                    U R                   S   nU R                   S   =(       a    UnUS:X  d  U(       d  US 4$ [        U[        5      (       a   [        XU5      u  pV[	        [
        U5      U4$ [        U[        5      (       a   [        XU5      u  pv[	        [
        U5      U4$ [        U[        5      (       a   [        XU5      u  p[	        [
        U5      U4$ [        U [	        [        U5      U5      u  p[	        [
        U	5      U4$ )Nr   r   r   c                     U $ N )dYs    r   <lambda>forward.<locals>.<lambda>   s    Rr   )r   
isinstancer   _dropout_raggedr	   r   r   _dropout_paddedr   _dropout_lists_dropout_arrayr   )
r   r   r   r   r   data_rbackpropdata_pdata_ldata_as
             r   r   r      s    ;;~&D\*7xJqy
-	Av		*5X>C (**	Av		*5X>C (**	Ax	 	 )%H=C (**)%gq1A8LC (**r   c                    ^ U R                   S   nU R                  R                  UR                  U5      mS[        S[        4U4S jjn[        [        UT-  5      U4$ )Nr   r$   r   c                    > U T-  $ r"   r#   )r$   masks    r   r-    _dropout_array.<locals>.backprop,   s    Dyr   )r   opsget_dropout_maskshaper   r	   )r   r   r   r   r-   r3   s        @r   r+   r+   &   sX     ;;~&D99%%aggt4DW   T"H,,r   Xpc                   ^ UR                   nU R                  R                  UR                  U R                  S   5      mUT-  nS[
        S[
        4U4S jjn[        XAR                  UR                  UR                  5      U4$ )Nr   dYpr   c                 v   > [        U R                  T-  U R                  U R                  U R                  5      $ r"   )r   data	size_at_tlengthsindices)r:   r3   s    r   r-   !_dropout_padded.<locals>.backprop9   s(    chhos}}ckk3;;OOr   )	r<   r5   r6   r7   r   r   r=   r>   r?   )r   r8   r   r   Yr-   r3   s         @r   r)   r)   2   sr     	A99%%aggu{{>/JKD	DAPf P P !\\2::rzz:HDDr   Xrc                    ^ UR                   nUR                  nU R                  R                  UR                  U R
                  S   5      mUT-  nS[        S[        4U4S jjn[        XT5      U4$ )Nr   dYrr   c                 J   > [        U R                  T-  U R                  5      $ r"   )r   r<   r>   )rD   r3   s    r   r-   !_dropout_ragged.<locals>.backpropG   s    chhos{{33r   )r<   r>   r5   r6   r7   r   r   )r   rB   r   r   r>   rA   r-   r3   s          @r   r(   r(   ?   sh     	AjjG99%%aggu{{>/JKD	DA4f 4 4 !x''r   Xsc                 2  ^ U R                   S   nU Vs/ s H(  o@R                  R                  UR                  U5      PM*     snm[	        UT5       VVs/ s H	  u  pEXE-  PM     nnnS[
        [           S[
        [           4U4S jjnXg4$ s  snf s  snnf )Nr   dYsr   c                 V   > [        U T5       VVs/ s H	  u  pX-  PM     snn$ s  snnf r"   )zip)rI   r$   r3   maskss      r   r-    _dropout_lists.<locals>.backpropT   s%    *-c5/:/hb	/:::s   %)r   r5   r6   r7   rK   r   r   )	r   rG   r   r   r   r3   Ysr-   rL   s	           @r   r*   r*   M   s     ;;~&D@BC1YY''6CE"%b%.	1.wq!(.B	1;d7m ;W ; < D	1s   /BBN)g        )typingr   r   r   r   r   r   r	   configr   r   r   typesr   r   r   r   layersfloatr   boolr   r+   r)   r(   r*   r#   r   r   <module>rU      s   H H H   + +e5(7*;VV!KLM 
W% W%S/ W W+5c? +s +d +uS(]?S +&	-c?	-&	-26	-
7H	-
Ec?
E &
E26
E
68
E(c?( &(26(
68(
c?
 ( 1
=A

8Gh&'
r   