
    ih              
          d dl 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  edee      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eef   fdZde	eef   ded	eeef   fdZy)    )CallableTupleTypeVarUnioncast   )registry)Model)Floats2dRaggedInTzexpand_window.v1window_sizereturnc                 *    t        dt        d| i      S )zFor each vector in an input, construct an output vector that contains the
    input and a window of surrounding vectors. This is one step in a convolution.
    expand_windowr   )attrs)r
   forward)r   s    k/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/expand_window.pyr   r   
   s    
 '-1MNN    modelXis_trainc                 R    t        |t              rt        | |      S t        | |      S N)
isinstancer   _expand_window_ragged_expand_window_floats)r   r   r   s      r   r   r      s&    !V$UA..$UA..r   c                      j                   d   t        |      dkD  r j                  j                  |      }n2t        |      dk(  sJ  j                  j	                  |dz  dz         }dt
        dt
        f fd}||fS )Nr   r   r      dYr   c                 <    j                   j                  |       S r   )opsbackprop_seq2col)r    r   nWs    r   backpropz'_expand_window_floats.<locals>.backprop#   s    yy))"b11r   )r   lenr"   seq2coltiler   )r   r   Yr%   r$   s   `   @r   r   r      s     
]	#B
1vzIIa$1v{{IINN1rAvl+2X 2( 2 h;r   Xrc                       j                   d   t         j                  j                  t	        t
        j                        j                        j                        }dt        dt        f fd}||fS )Nr   lengthsdYrr   c                     t        j                  j                  t        t        | j
                        j                        j                        S )Nr,   )r   r"   r#   r   r   datar-   )r.   r*   r   r$   s    r   r%   z'_expand_window_ragged.<locals>.backprop1   sF    II&&Xsxx("bjj '  JJ	
 	
r   )r   r   r"   r'   r   r   r0   r-   )r   r*   r)   r%   r$   s   ``  @r   r   r   )   sj     
]	#B		$x12rzzJBJJ	A
f 
 
 h;r   N)r   )typingr   r   r   r   r   configr	   r   r
   typesr   r   r   layersintr   boolr   r   r    r   r   <module>r8      s    8 8   $eXv& #$Os O5c? O %O/5c? /s /d /uS(]?S /c?'
8X c? &
68r   