Ë
    ›¾j‹  ã            
       óª  — 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 )zÇHelp 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    ú^/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/dropout.pyÚDropoutr   
   s   € ô �œG¸DÐPTÑ+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Ø—‘˜\Ñ*Ò7¨x€JØˆq‚y™
Ø‘-ÐÐÜ	�A”vÔ	Ü*¨5°!°XÓ>Ñˆ�Ü”C˜Ó  (Ð*Ð*Ü	�A”vÔ	Ü*¨5°!°XÓ>Ñˆ�Ü”C˜Ó  (Ð*Ð*Ü	�A”xÔ	 Ü)¨%°°HÓ=Ñˆ�Ü”C˜Ó  (Ð*Ð*ä)¨%´´g¸qÓ1AÀ8Ó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   ø€ Ø�D‰yÐr   )r   ÚopsÚget_dropout_maskÚshaper   r	   )r   r   r   r   r,   r2   s        @r   r*   r*   &   sX   ø€ ð �;‰;�~Ñ&€DØ�9‰9×%Ñ% a§g¡g¨tÓ4€Dð”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(   ø€ Ü�c—h‘h ‘o s§}¡}°c·k±kÀ3Ç;Á;ÓOÐOr   )	r:   r3   r4   r5   r   r   r;   r<   r=   )r   r6   r   r   ÚYr,   r2   s         @r   r(   r(   2   st   ø€ ð 	�‰€AØ�9‰9×%Ñ% a§g¡g¨u¯{©{¸>Ñ/JÓK€DØ	ˆD‰€AðP”fð P¤õ Pô �!�R—\‘\ 2§:¡:¨r¯z©zÓ:¸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   ø€ Ü�c—h‘h ‘o s§{¡{Ó3Ð3r   )r:   r<   r3   r4   r5   r   r   )r   r?   r   r   r<   r>   r,   r2   s          @r   r'   r'   ?   sj   ø€ ð 	�‰€AØ�j‰j€GØ�9‰9×%Ñ% a§g¡g¨u¯{©{¸>Ñ/JÓK€DØ	ˆD‰€Að4”fð 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%   ø€ Ü*-¨c°5«/×:™h˜b $��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ÖC¸1ˆU�Y‰Y×'Ñ'¨¯©°Õ6ÒC€EÜ"% b¨%£.×	1‘w�q˜$ˆ!ˆd‹(Ð	1€BÑ	1ð;”dœ7‘mð ;¬¬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å Ý ß +Ñ +áˆe˜5 ¨(°7Ñ*;¸VÀVÐ!KÑLÔM€ð €‡��ÓñW�%ð W %¨¨S¨¡/ò Wó ðWð+�5˜˜c˜‘?ð + sð +°dð +¸uÀSÈ(À]Ñ?Só +ð&	-Ø��c�‰?ð	-Ø&ð	-Ø26ð	-à
ˆ7�HÐÑó	-ð
EØ��c�‰?ð
EØ &ð
EØ26ð
Eà
ˆ6�8ÐÑó
Eð(Ø��c�‰?ð(Ø &ð(Ø26ð(à
ˆ6�8ÐÑó(ð
Ø��c�‰?ð
Ø (¨Ñ 1ð
Ø=Að
à
ˆ8�GÑ˜hÐ&Ñ'ô
r   