
    i              
       N   d dl mZ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  ed      Zeee      ZeZee   ZeZ e
j*                  d      deee   ef   d	e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d	efdZ	 ddeeef   dee   dee   d	dfdZy)    )AnyCallableListOptionalSequenceTupleTypeVarcast   )registry)Model)ArrayXdListXdItemTzwith_flatten.v1layerreturnc                 N    t        d| j                   dt        | gt              S )Nzwith_flatten())layersinit)r   nameforwardr   )r   s    j/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/with_flatten.pywith_flattenr      s"    =A.dSS    modelXnestis_trainc                 l   	
  j                   d   
t        |      } 
||      \  }	
j                  j                  |d d D cg c]  }t	        |       c}      }|j                         
j                  j                  j                  |d      }dt        dt        f	
 fd}||fS c c}w )Nr   axisdYnestr   c                     j                   j                  |       } |      }j                   j                  j                  |d      }|S )Nr    r!   )opsflattenxpsplit)r#   dYflatdXflatdXnestbackprop_layerr   r   splitss       r   backpropzforward.<locals>.backprop   sE    ""6*'##FF#<r   )
r   _flattenr%   	asarray1ilencumsumr'   r(   OutTInT)r   r   r   XflatYflatxarrYnestr.   r,   r   r-   s   `        @@@r   r   r      s     ).QEUOE!%2E>
))

uSbz:!s1v:
;CZZ\FIILLuf15E #   (? ;s   B1nestedc                 V    g }| D ]  }|j                  |        t        t        |      S )N)extendr
   r4   )r:   flatitems      r   r/   r/   (   s.    D DT?r   NXYc                     | j                   d   j                  |t        |      nd |7| j                   d   j                  j                  j                  |             y d        y )Nr   )r   
initializer/   r%   r'   hstack)r   r?   r@   s      r   r   r   /   sU     
LLO}$,-MQ%%a(?Cr   )NN)typingr   r   r   r   r   r   r	   r
   configr   r   r   typesr   r   r   r4   r3   InnerInT	InnerOutTr   r   boolr   r/   r    r   r   <module>rK      s   P P P   #xE?	 "#Thuoy89 TeCJPTDT>U T $Td$'37
4>*S X  KOd (9A$	r   