
    i                     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       d/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/linear.pyLinearr      sG     ~$~T66*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    sBFFFN+sEIINN2qN>?yy~~b!$$r   )r   r   	get_paramr   r+   r,   OutTInT)r    r!   r"   r   Yr-   r   s   ``    @r   r   r   #   sm    Xus+,AXus+,A		q!D)AFA%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     	}dIaL)}dIaL)	OOC		EMM$,?tAT+UVW	OOC		EMM$,?+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 dHn@U $ DDD dD }	D
 ~D 
Dr   