
    i	                     v   d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ eZ ej                   d      d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
eef   dee   dee   dd	fdZde
eef   dedeeef   fdZdededeeeef   fdZdededededeeeef   f
dZy	)    )CallableOptionalTuplecast   )Ops)registry)Model)Floats2d)	get_widthzLayerNorm.v1NnIreturnc           	      >    t        dt        t        | | dd d d      S )N	layernorm)r   nO)Gb)initdimsparams)r
   forwardr   )r   s    g/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/layernorm.py	LayerNormr      s(    b!%     modelXis_trainc                     	 t         j                        \  	z
  	dz  z  }t         |      \  }dt        dt        f 	fd}||fS )N      dYr   c                      |       } t        j                  | 	      \  }}}| z  |z
  |
dz  z  |z  z
  }|
dz  z  }|z  }|S )Ng      r   )_get_d_momentsops)r    distsum_dysum_dy_distd_xhatNr   backprop_rescaler   muvars        r   backpropzforward.<locals>.backprop   se    b!$2599b!R$H!fkR&4#$-#7+#EE#(##!r   )_get_momentsr#   _begin_update_scale_shiftInT)
r   r   r   XhatYr,   r(   r)   r*   r+   s
   ``    @@@@r   r   r      sb    eii+JAr3Fcj))D3E4@AS S   h;r   r1   c                 
   |0t        |      }| j                  d|       | j                  d|       n1|/t        |      }| j                  d|       | j                  d|       | j                  d      }| j                  d      s| j                  d|       | j	                  d| j
                  j                  |      dz          | j	                  d| j
                  j                  |             | j                  d      J y )Nr   r   r      r   )r   set_dimget_dimhas_dim	set_paramr#   alloc1f)r   r   r1   X_widthY_widthr   s         r   r   r   '   s     	}A,dG$dG$	
A,dG$dG$	t	B==dB	OOC**2.23	OOC**2./==***r   c                       j                  d       j                  d      }z  }||z  }dt        dt        f fd}||fS )Nr   r   r    r   c                     j                  d| j                  d             j                  d| z  j                  d             | z  S )Nr   r   )axisr   )inc_gradsum)r    r   r   r   s    r   finish_update_scale_shiftz<_begin_update_scale_shift.<locals>.finish_update_scale_shift@   sA    sBFFFN+sR!VLLaL01Avr   )	get_paramr/   )r   r   r   r1   r@   r   s   ``   @r   r.   r.   :   sR    AA	AAFAc c 
 '''r   r#   c                     |j                  dd      }|j                  dd      dz   }t        t        | j	                  |j
                  d   g            ||fS )Nr3   Tr=   keepdimsg:0yE>)meanr+   r   r   	asarray_fshape)r#   r   r*   r+   s       r   r-   r-   H   sR    66q460BEEq4E058C#--56C??r   dyr*   c                     ||z
  }|| j                   j                  |dd      | j                   j                  ||z  dd      fS )Nr3   TrC   )xpr?   )r#   rH   r   r*   r$   s        r   r"   r"   O   sJ     r6D

2A
-

291t
4 r   )N)NN)typingr   r   r   r   backendsr   configr	   r   r
   typesr   utilr   r/   layersintr   boolr   r   r.   r-   r"    r   r   <module>rT      sT   2 2       (3- 5c?  !5c? s d uS(]?S " IM+c?+'}+8@+	+&(U38_ ( (sH}AU (@c @h @58X1M+N @	'-5
8Xx'(r   