Ë
    ›¾j¥  ã                   óÒ  — d dl 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 ddlmZmZmZ eZeZ ej(                  d«      	 	 dd	d	d
œdee   dee   dee   dee   de
eef   f
d„«       Z ej(                  d«      	 	 dd	d	dddœdee   dee   dee   dee   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dedede
eef   dee   dee   dd	fd„Zd„ Zy	) é    )ÚCallableÚOptionalÚTupleÚcasté   )Úregistry)Ú	zero_init)ÚModel)ÚFloats1dÚFloats2d)Ú	ArrayInfoÚ	get_widthÚpartialz
Softmax.v1N)Úinit_WÚinit_bÚnOÚnIr   r   Úreturnc          
      ó|   — |€t         }|€t         }t        dt        t        t        ||«      | |dœd d dœdddœ¬«      S )NÚsoftmax©r   r   ©ÚWÚbTç      ð?©Úsoftmax_normalizeÚsoftmax_temperature©ÚinitÚdimsÚparamsÚattrs)r	   r
   Úforwardr   r    )r   r   r   r   s       ú^/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/softmax.pyÚSoftmaxr&      sO   € ð €~ÜˆØ€~ÜˆÜØÜÜ”T˜6 6Ó*Ø˜bÑ!Ø Ñ%Ø$(ÀÑEôð ó    z
Softmax.v2Tr   )r   r   Únormalize_outputsÚtemperaturer(   r)   c          
      ó’   — |€t         }|€t         }t        |«       t        dt        t	        t
        ||«      | |dœd d dœ||dœ¬«      S )Nr   r   r   r   r   )r	   Úvalidate_temperaturer
   r$   r   r    )r   r   r   r   r(   r)   s         r%   Ú
Softmax_v2r,   #   sZ   € ð €~ÜˆØ€~ÜˆÜ˜Ô%ÜØÜÜ”T˜6 6Ó*Ø˜bÑ!Ø Ñ%à!2Ø#.ñ
ô
ð 
r'   ÚmodelÚXÚis_trainc                 óØ  ‡ ‡‡‡	‡
— ‰ j                   d   xs |}‰ j                   d   Š
t        ‰
«       t        t        ‰ j	                  d«      «      Št        t
        ‰ j	                  d«      «      }‰ j                  j                  ‰‰|«      }|r‰ j                  j                  |‰
¬«      }t        j                  |«      Š	dt        dt        fˆˆˆ	ˆ ˆ
fd„}dt        fd	„}|r||fS ||fS )
Nr   r   r   r   )r)   ÚdYr   c                 ó  •— ‰j                  | «       ‰dk7  r| ‰z  } ‰j                  d| j                  d¬«      «       ‰j                  d‰j                  j	                  | ‰d¬«      «       ‰j                  j	                  | ‰«      S )Nr   r   r   )Úaxisr   T)Útrans1)Úcheck_consistencyÚinc_gradÚsumÚopsÚgemm)r1   r   r.   Ú
array_infor-   r)   s    €€€€€r%   Úbackpropzforward.<locals>.backpropN   sq   ø€ Ø×$Ñ$ RÔ(Ø˜#ÒØ�kÑ!ˆBà�‰�s˜BŸF™F¨˜F›NÔ+Ø�‰�s˜EŸI™IŸN™N¨2¨q¸˜NÓ>Ô?Ø�y‰y�~‰~˜b !Ó$Ð$r'   c                 ó   — d}t        |«      ‚)Nz;backprop is not supported for an unnormalized Softmax layer©Ú
ValueError)r1   Úmsgs     r%   Úbackprop_unnormalizedz&forward.<locals>.backprop_unnormalizedW   s   € ØKˆÜ˜‹oÐr'   )r#   r+   r   r   Ú	get_paramr   r8   Úaffiner   r   Ú
from_arrayÚInTÚOutT)r-   r.   r/   Ú	normalizer   ÚYr;   r@   r   r:   r)   s   ``      @@@r%   r$   r$   ?   sÛ   ü€ Ø—‘Ð/Ñ0Ò<°H€Ià—+‘+Ð3Ñ4€KÜ˜Ô%äŒX�u—‘ sÓ+Ó,€AÜŒX�u—‘ sÓ+Ó,€AØ�	‰	×Ñ˜˜A˜qÓ!€AáØ�I‰I×Ñ˜a¨[ÐÓ9ˆä×%Ñ% aÓ(€Jð%”Sð %œT÷ %ñ %ð¤#ó ñ Ø�(ˆ{ÐàÐ'Ð'Ð'r'   rG   c           
      ó¨  — |�,|j                  d«      €|j                  dt        |«      «       |�,|j                  d«      €|j                  dt        |«      «       |j                  d | |j                  |j                  d«      |j                  d«      f«      «       |j                  d ||j                  |j                  d«      f«      «       y )Nr   r   r   r   )Úhas_dimÚset_dimr   Ú	set_paramr8   Úget_dim)r   r   r-   r.   rG   s        r%   r    r    a   s£   € ð 	€}˜Ÿ™ tÓ,Ð4Ø�‰�dœI a›LÔ)Ø€}˜Ÿ™ tÓ,Ð4Ø�‰�dœI a›LÔ)Ø	‡O�O�C™ §	¡	¨E¯M©M¸$Ó,?ÀÇÁÈtÓATÐ+UÓVÔWØ	‡O�O�C™ §	¡	¨E¯M©M¸$Ó,?Ð+AÓBÕCr'   c                 ó(   — | dk  rd}t        |«      ‚y )Ng        z0softmax temperature must not be zero or negativer=   )r)   r?   s     r%   r+   r+   p   s   € Ø�cÒØ@ˆÜ˜‹oÐð r'   )NN)Útypingr   r   r   r   Úconfigr   Úinitializersr	   r-   r
   Útypesr   r   Úutilr   r   r   rD   rE   ÚlayersÚintr&   ÚboolÚfloatr,   r$   r    r+   © r'   r%   ú<module>rX      sÍ  ðß 2Ó 2å Ý $Ý ß &ß 0Ñ 0à€Ø€ð €‡��ÓàØðð "&Ø!%òØ�‰ðà�‰ðð �XÑð	ð
 �XÑðð ˆ3�ˆ9Ñòó ðð* €‡��ÓàØðð "&Ø!%Ø"ØòØ�‰ðà�‰ðð �XÑð	ð
 �XÑðð ðð ðð ˆ3�ˆ9Ñòó ðð6(�5˜˜d˜Ñ#ð (¨ð (°tð (ÀÀdÈHÀnÑ@Uó (ðL ØñDØðDàðDð ��d�ÑðDð ��}ð	Dð
 ��~ðDð 
óDór'   