
    h                        S SK JrJrJrJr  SSKJr  SSKJrJ	r	  SSK
Jr  SSKJrJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  \r\r\R2                  " S5        SSSSSS.S\\   S\\   S\\   S\\   S\\   S\S\\\4   4S jjj5       rS\\\4   S\S\S\\\4   4S jr  SS\S\S\\\4   S\\   S\\   SS4S jjrg)    )CallableOptionalTuplecast   )registry)glorot_uniform_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzMish.v1NF)init_Winit_bdropout	normalizenOnIr   r   r   r   returnc          
      B   Uc  [         nUc  [        n[        S[        [	        [
        X#5      XS.SSS.S9nU(       a.  [        U[        [        [        [        4   [        U S95      5      nUb0  [        U[        [        [        [        4   [        U5      5      5      nU$ )zGDense layer with mish activation.
https://arxiv.org/pdf/1908.08681.pdf
Nmish)r   r   )Wb)initdimsparams)r   )r	   r
   r   forwardr   r   r   r   InTOutTr   r   )r   r   r   r   r   r   models          K/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/mish.pyMishr'      s     ~$~#T6*!%E eT%T	"2I4DEFeT%T	"2GG4DEFL    r%   Xis_trainc                 0  ^ ^^^ [        [        T R                  S5      5      m[        [        T R                  S5      5      nT R                  R                  TTSS9mTU-  mT R                  R                  T5      nS[        S[        4UUUU 4S jjnXE4$ )Nr   r   T)trans2dYr   c           	        > TR                   R                  U T5      nTR                  STR                   R                  UTSS95        TR                  SUR	                  SS95        TR                   R                  UT5      nU$ )Nr   T)trans1r   r   )axis)opsbackprop_mishinc_gradgemmsum)r-   dY_pre_mishdXr   r)   
Y_pre_mishr%   s      r&   backpropforward.<locals>.backprop6   sl    ii--b*=sEIINN;$NGHsKOOO34YY^^K+	r(   )	r   r   	get_paramr   r1   r4   r   r$   r#   )r%   r)   r*   r   Yr9   r   r8   s   ``    @@r&   r"   r"   /   s    Xus+,AXus+,A1T2J!OJ		z"AT c   ;r(   r<   c           
      h   Ub  UR                  S[        U5      5        Ub  UR                  S[        U5      5        UR                  SU " UR                  UR	                  S5      UR	                  S5      45      5        UR                  SU" UR                  UR	                  S5      45      5        g )Nr   r   r   r   )set_dimr   	set_paramr1   get_dim)r   r   r%   r)   r<   s        r&   r   r   @   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   r   r   r   	layernormr   r#   r$   layersintfloatboolr'   r"   r    r(   r&   <module>rL      sT   2 2  9  & %     
 "&!%# X	
 X e_  39 <5d#  t dHn@U * DDD dD }	D
 ~D 
Dr(   