
    i                     >   d dl 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 ddlmZ  ede      Z ed	e      Z ej$                  d
      de
eef   de
eef   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
eef   dee   dee   ddfdZy)    )AnyCallableDictOptionalTupleTypeVar   )registry)Model)ArrayXd
XY_XY_OutT)	get_widthInT)boundOutTzadd.v1layer1layer2layersreturnc                     | |f|z   }|d   j                   dk(  r&|d   j                  j                  |dd        |d   S ddi}t        d |D              rddd}t	        dt
        t        ||      S )	zCompose two or more models `f`, `g`, etc, such that their outputs are
    added, i.e. `add(f, g)(x)` computes `f(x) + g(x)`.
    r   add   NnOc              3   B   K   | ]  }|j                  d       dv   yw)nI)TNN)has_dim).0nodes     a/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/add.py	<genexpr>zadd.<locals>.<genexpr>   s     
A$4<<-
As   )r   r   )initdimsr   )namer   extendallr   forwardr!   )r   r   r   r"   s       r   r   r      s     f&Fay~~q	qr
+ay '+D\D

A&
AA$'dfEE    modelXis_trainc                    	 | j                   s|d fS  | j                   d   ||      \  }	g | j                   dd  D ]%  } |||      \  }}||z  }j                  |       ' dt        dt        f	fd}||fS )Nc                     | S N )dYs    r   <lambda>zforward.<locals>.<lambda>"   s    R r'   r   )r*   r   r/   r   c                 <     |       }D ]  }| ||       z  } |S r-   r.   )r/   dXcallback	callbacksfirst_callbacks      r   backpropzforward.<locals>.backprop*   s/    B! 	H(2,B		r'   )r   appendr   r   )
r(   r)   r*   Ylayerlayer_Ylayer_callbackr6   r4   r5   s
           @@r   r&   r&       s    <<-'QH=A~Iab! )"'H"=	W()
S T  h;r'   Nr8   c                 h   |n| j                  d      dur| j                  dt        |             | j                  D ]1  }|j                  d      dus|j                  dt        |             3 |n| j                  d      dur| j                  dt        |             | j                  D ]1  }|j                  d      dus|j                  dt        |             3 | j                  D ]  }|j	                  ||        | j                  d| j                  d   j                  d             y )Nr   Fr   )r)   r8   r   )r   set_dimr   r   
initializeget_dim)r(   r)   r8   r9   s       r   r!   r!   3   s    	}==e+MM$	!-\\ 	2E}}T"%/dIaL1	2 	}==e+MM$	!-\\ 	2E}}T"%/dIaL1	2  #1"#	MM$Q//56r'   )NN)typingr   r   r   r   r   r   configr
   r(   r   typesr   r   utilr   r   r   r   r   boolr&   r!   r.   r'   r   <module>rE      s    @ @   ' e3vW% F#t)F&+CI&6FAFF
3
?F F&5d#  t dHn@U ( KO7d7 (79A$7	7r'   