
    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mZmZ  edeeee   eef         Z e	j"                  d      dd	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eeef   ded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eeef   deded
eeef   fdZdeeef   dee   ded
eee   ef   fdZy)    )CallableListSequenceTupleTypeVarUnioncast   )registry)Model)ArrayXdPaddedRaggedInT)boundz
Dropout.v1ratereturnc                 ,    t        dt        | dd      S )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    e/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/dropout.pyDropoutr   
   s     GDPT+UVV    modelXis_trainc                    | j                   d   }| j                   d   xr |}|dk(  s|s|d fS t        |t              r"t        | ||      \  }}t	        t
        |      |fS t        |t              r"t        | ||      \  }}t	        t
        |      |fS t        |t              r"t        | ||      \  }}t	        t
        |      |fS t        | t	        t        |      |      \  }	}t	        t
        |	      |fS )Nr   r   r   c                     | S N )dYs    r   <lambda>zforward.<locals>.<lambda>   s    R r   )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	*5!X>C (**	Av	*5!X>C (**	Ax	 )%H=C (**)%gq1A8LC (**r   c                     | j                   d   }| j                  j                  |j                  |      dt        dt        ffd}t        t        |z        |fS )Nr   r$   r   c                     | z  S r"   r#   )r$   masks    r   r,   z _dropout_array.<locals>.backprop,   s    Dyr   )r   opsget_dropout_maskshaper   r	   )r   r   r   r   r,   r2   s        @r   r*   r*   &   sX     ;;~&D99%%aggt4DW   T"H,,r   Xpc                    |j                   }| j                  j                  |j                  | j                  d         |z  }dt
        dt
        ffd}t        ||j                  |j                  |j                        |fS )Nr   dYpr   c                 v    t        | j                  z  | j                  | j                  | j                        S r"   )r   data	size_at_tlengthsindices)r8   r2   s    r   r,   z!_dropout_padded.<locals>.backprop9   s(    chhos}}ckk3;;OOr   )	r:   r3   r4   r5   r   r   r;   r<   r=   )r   r6   r   r   Yr,   r2   s         @r   r(   r(   2   st     	A99%%aggu{{>/JKD	DAPf P P !R\\2::rzz:HDDr   Xrc                     |j                   }|j                  }| j                  j                  |j                  | j
                  d         |z  }dt        dt        ffd}t        ||      |fS )Nr   dYrr   c                 J    t        | j                  z  | j                        S r"   )r   r:   r<   )rA   r2   s    r   r,   z!_dropout_ragged.<locals>.backpropG   s    chhos{{33r   )r:   r<   r3   r4   r5   r   r   )r   r?   r   r   r<   r>   r,   r2   s          @r   r'   r'   ?   sj     	AjjG99%%aggu{{>/JKD	DA4f 4 4 !Wx''r   Xsc                 *   | j                   d   }|D cg c](  }| j                  j                  |j                  |      * c}t	        |      D cg c]
  \  }}||z   }}}dt
        t           dt
        t           ffd}||fS c c}w c c}}w )Nr   dYsr   c                 T    t        |       D cg c]
  \  }}||z   c}}S c c}}w r"   )zip)rE   r$   r2   maskss      r   r,   z _dropout_lists.<locals>.backpropT   s%    *-c5/:hb$T	:::s   $)r   r3   r4   r5   rG   r   r   )	r   rC   r   r   r   r2   Ysr,   rH   s	           @r   r)   r)   M   s     ;;~&D@BC1UYY''6CE"%b%.	1wq$!d(	1B	1;d7m ;W ; x< 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>rP      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   