
    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Relu.v1NF)init_Winit_bdropout	normalizenOnIr   r   r   r   returnc          	         Uc  [         nUc  [        n[        S[        [	        [
        X#5      XS.S S S.S9nU(       a  [        U[        U S95      nUb0  [        U[        [        [        [        4   [        U5      5      5      nU$ )Nrelu)r   r   )Wb)initdimsparams)r   )r	   r
   r   forwardr   r   r   r   r   r   r   )r   r   r   r   r   r   models          K/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/relu.pyRelur%      s     ~$~#T6*!%E eY"-.eT%((:";WW=MNOL    r#   Xis_trainc                 ,  ^ ^^^ [        [        T R                  S5      5      m[        [        T R                  S5      5      nT R                  R                  TTU5      mT R                  R                  T5      mS[        S[        4UUUU 4S jjnTU4$ )Nr   r   dYr   c           	        > TR                   R                  U T5      n TR                  SU R                  SS95        TR                  STR                   R	                  U TSS95        TR                   R	                  U T5      $ )Nr   r   )axisr   T)trans1)opsbackprop_reluinc_gradsumgemm)r*   r   r'   Yr#   s    r$   backpropforward.<locals>.backprop2   sg    YY$$R+sBFFFN+sEIINN2qN>?yy~~b!$$r&   )	r   r   	get_paramr   r.   affiner   OutTInT)r#   r'   r(   r   r4   r   r3   s   ``   @@r$   r"   r"   ,   s{    Xus+,AXus+,A		Aq!A		qA%T %c % % h;r&   r3   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_paramr.   get_dim)r   r   r#   r'   r3   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   r9   r8   layersintfloatboolr%   r"   r    r&   r$   <module>rI      sT   2 2  9  & %     
 "&!%# X	
 X e_  39 65d#  t dHn@U & DDD dD }	D
 ~D 
Dr&   