
    h                     R   S SK JrJrJrJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJrJr  \r\r\R&                  " S5        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)	zero_init)Model)Floats1dFloats2d)	get_widthpartialz
Sigmoid.v1N)init_Winit_bnOnIr   r   returnc          	      n    Uc  [         nUc  [         n[        S[        [        [        X#5      XS.SSS.S9$ )zA dense layer, followed by a sigmoid (logistic) activation function. This
is usually used instead of the Softmax layer as an output for multi-label
classification.
Nsigmoid)r   r   )Wb)initdimsparams)r	   r
   forwardr   r   )r   r   r   r   s       N/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/sigmoid.pySigmoidr      sC     ~~T6*!%     model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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_sigmoidinc_gradsumgemm)r#   r   r    Yr   s    r   backpropforward.<locals>.backprop,   sl    YY''Au'=sBFFFN+sEIINN2qN>?yy~~b!$$r   )	r   r   	get_paramr   r(   affiner   InTOutT)r   r    r!   r   r.   r   r-   s   ``   @@r   r   r   &   s}    Xus+,AXus+,A		Aq!A		!A%S %T % % h;r   r-   c           
         Ub-  UR                  S5      c  UR                  S[        U5      5        Ub-  UR                  S5      c  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   )has_dimset_dimr   	set_paramr(   get_dim)r   r   r   r    r-   s        r   r   r   5   s     	}t,4dIaL)}t,4dIaL)	OOC		EMM$,?tAT+UVW	OOC		EMM$,?+ABCr   )NN)typingr   r   r   r   configr   initializersr	   r   r
   typesr   r   utilr   r   r2   r3   layersintr   boolr   r    r   r   <module>rB      s-   2 2  $  & % 
 "&!% X	
 X 39 05d#  t dHn@U & DDD dD }	D
 ~D 
Dr   