Ë
    ›¾j¸  ã                   óJ  — d dl mZmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddl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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y	)é    )ÚCallableÚOptionalÚTupleÚcasté   )Úregistry)Úglorot_uniform_initÚ	zero_init)ÚModel)ÚFloats1dÚFloats2d)Ú	get_widthÚpartialz	Linear.v1N)Úinit_WÚinit_bÚnOÚnIr   r   Úreturnc          	      ót   — |€t         }|€t        }t        dt        t	        t
        ||«      | |dœdddœ¬«      S )z;Multiply inputs by a weights matrix and adds a bias vector.NÚlinear)r   r   )ÚWÚb)ÚinitÚdimsÚparams)r	   r
   r   Úforwardr   r   )r   r   r   r   s       ú]/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/linear.pyÚLinearr      sG   € ð €~Ü$ˆØ€~ÜˆÜØÜÜ”T˜6 6Ó*Ø˜bÑ!Ø Ñ%ôð ó    ÚmodelÚXÚis_trainc                 óú   ‡ ‡‡— t        t        ‰ j                  d«      «      Št        t        ‰ j                  d«      «      }‰ j                  j                  ‰‰d¬«      }||z  }dt        dt        fˆˆˆ fd„}||fS )Nr   r   T)Útrans2ÚdYr   c                 óÜ   •— ‰j                  d| j                  d¬«      «       ‰j                  d‰j                  j                  | ‰d¬«      «       ‰j                  j                  | ‰«      S )Nr   r   )Úaxisr   T)Útrans1)Úinc_gradÚsumÚopsÚgemm)r%   r   r!   r    s    €€€r   Úbackpropzforward.<locals>.backprop)   sQ   ø€ Ø�‰�s˜BŸF™F¨˜F›NÔ+Ø�‰�s˜EŸI™IŸN™N¨2¨q¸˜NÓ>Ô?Ø�y‰y�~‰~˜b !Ó$Ð$r   )r   r   Ú	get_paramr   r+   r,   ÚOutTÚInT)r    r!   r"   r   ÚYr-   r   s   ``    @r   r   r   #   sm   ú€ ÜŒX�u—‘ sÓ+Ó,€AÜŒX�u—‘ sÓ+Ó,€AØ�	‰	�‰�q˜! DˆÓ)€AØˆ�F€Að%”Tð %œc÷ %ð
 ˆhˆ;Ðr   r1   c           
      ód  — |�|j                  dt        |«      «       |�|j                  dt        |«      «       |j                  d | |j                  |j	                  d«      |j	                  d«      f«      «       |j                  d ||j                  |j	                  d«      f«      «       y )Nr   r   r   r   )Úset_dimr   Ú	set_paramr+   Úget_dim)r   r   r    r!   r1   s        r   r   r   1   s‡   € ð 	€}Ø�‰�dœI a›LÔ)Ø€}Ø�‰�dœI a›LÔ)Ø	‡O�O�C™ §	¡	¨E¯M©M¸$Ó,?ÀÇÁÈtÓATÐ+UÓVÔWØ	‡O�O�C™ §	¡	¨E¯M©M¸$Ó,?Ð+AÓBÕCr   )NN)Útypingr   r   r   r   Úconfigr   Úinitializersr	   r
   r    r   Útypesr   r   Úutilr   r   r0   r/   ÚlayersÚintr   Úboolr   r   © r   r   ú<module>r?      s/  ðß 2Ó 2å ß 9Ý ß &ß %à€Ø€ð €‡��ÓàØðð "&Ø!%òØ�‰ðà�‰ðð �XÑð	ð
 �XÑðð ˆ3�ˆ9Ñòó ðð*�5˜˜d˜Ñ#ð ¨ð °tð ÀÀdÈHÀnÑ@Uó ð$ ØñDØðDàðDð ��d�ÑðDð ��}ð	Dð
 ��~ðDð 
ôDr   