
    h_                     L   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.                  " S5        S.SSSSSSS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\R.                  " S$5        S.SSSSS%.S\\   S\\   S\\   S\\   S\\   S\S\\\4   4S& jjj5       r\R.                  " S'5        S.SSSSS%.S\\   S\\   S\\   S\\   S\\   S\S\\\4   4S( jjj5       r\R.                  " S)5        S.SSSSS*S+.S\\   S\\   S\\   S\\   S\\   S\S,\S\\\4   4S- jjj5       r g)/    )CallableOptionalTuplecast   )registry)glorot_uniform_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzClippedLinear.v1NF      ?        )init_Winit_bdropout	normalizeslopeoffsetmin_valmax_valnOnIr   r   r   r   r   r   r   r   returnc          	         Uc  [         nUc  [        nUUUU	S.n
[        S[        [	        [
        X#5      XS.S S S.U
S9nU(       a  [        U[        U S95      nUb0  [        U[        [        [        [        4   [        U5      5      5      nU$ )N)r   r   r   r   clipped_linear)r   r   )Wb)forwardinitdimsparamsattrs)r   )r	   r
   r   r%   r   r&   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   model_attrsmodels               U/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/clipped_linear.pyClippedLinearr-      s     ~$~	K (-T6*!%(E eY"-.eT%((:";WW=MNOL    r+   Xis_trainc           	        ^ ^^^^^	^
^ T R                   S   mT R                   S   m
T R                   S   m	T R                   S   m[        [        T R                  S5      5      m[        [        T R                  S5      5      nT R
                  R                  TTU5      mT R
                  R                  TTT
T	T5      nS[        S[        4UUUUU	U U
U4S	 jjnXE4$ )
Nr   r   r   r   r#   r$   dYr    c           
        > TR                   R                  U TTTTTSS9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      $ )	NF)inplacer$   r   )axisr#   T)trans1)opsbackprop_clipped_linearinc_gradsumgemm)	r2   r#   r/   Y_preactr   r   r+   r   r   s	    r,   backpropforward.<locals>.backpropB   s{    YY..%'5 / 
 	sBFFFN+sEIINN2qN>?yy~~b!$$r.   )r)   r   r   	get_paramr   r7   affiner"   )r+   r/   r0   r$   Yr=   r#   r<   r   r   r   r   s   ``    @@@@@@r,   r%   r%   4   s    
 KK E[["Fkk)$Gkk)$GXus+,AXus+,Ayy1a(H		  5&'7KA%X %( % % ;r.   rA   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_paramr7   get_dim)r   r   r+   r/   rA   s        r,   r&   r&   M   s     	}dIaL)}dIaL)	OOC		EMM$,?tAT+UVW	OOC		EMM$,?+ABCr.   zHardSigmoid.v1)r   r   r   r   c          
      D    Uc  [         nUc  [        n[        U UUUUSSS9$ )Ng?g      ?)r   r   r   r   r   r   r   r	   r
   r-   r   r   r   r   r   r   s         r,   HardSigmoidrI   \   s:     ~$~ r.   zHardTanh.v1c          
      D    Uc  [         nUc  [        n[        U UUUUSSS9$ )Ng      r   r   r   r   r   r   r   r   rG   rH   s         r,   HardTanhrL   u   s:     ~$~ r.   zReluK.v1g      @)r   r   r   r   krM   c          
      D    Uc  [         nUc  [        n[        U UUUUSUS9$ )Nr   rK   rG   )r   r   r   r   r   r   rM   s          r,   ReluKrO      s:     ~$~ r.   )NN)!typingr   r   r   r   configr   initializersr	   r
   r+   r   typesr   r   utilr   r   r   r   r   	layernormr   layersintfloatboolr-   r%   r&   rI   rL   rO    r.   r,   <module>r[      sd   2 2  9  & %     
#$# "&!%#### X	#
 X# e_# # # # # # 8X# %#L8#$  8X	: ! DDD 8#$D 	D
 D 
D 
!" "&!%# X	
 X e_  8X #0 
 "&!%# X	
 X e_  8X  0 
 "&!%# X	
 X e_   8X r.   