
    h                        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Jr  \r\r\R(                  " S5        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S\
\\4   S\S\S\\\4   4S jr  SS\S\S\
\\4   S\\   S\\   SS	4S jjrS rg	)     )CallableOptionalTuplecast   )registry)	zero_init)Model)Floats1dFloats2d)	ArrayInfo	get_widthpartialz
Softmax.v1N)init_Winit_bnOnIr   r   returnc          
      v    Uc  [         nUc  [         n[        S[        [        [        X#5      XS.S S S.SSS.S9$ )Nsoftmaxr   r   WbT      ?softmax_normalizesoftmax_temperatureinitdimsparamsattrs)r	   r
   forwardr   r    )r   r   r   r   s       N/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/softmax.pySoftmaxr&      sK     ~~T6*!%$(E     z
Softmax.v2Tr   )r   r   normalize_outputstemperaturer(   r)   c          
          Uc  [         nUc  [         n[        U5        [        S[        [	        [
        X#5      XS.S S S.UUS.S9$ )Nr   r   r   r   r   )r	   validate_temperaturer
   r$   r   r    )r   r   r   r   r(   r)   s         r%   
Softmax_v2r,   #   sV     ~~%T6*!%!2#.

 
r'   modelXis_trainc                   ^ ^^^	^
 T R                   S   =(       d    UnT R                   S   m
[        T
5        [        [        T R	                  S5      5      m[        [
        T R	                  S5      5      nT R                  R                  TTU5      nU(       a  T R                  R                  UT
S9n[        R                  " U5      m	S[        S[        4UUU	U U
4S jjnS[        4S	 jnU(       a  XV4$ XW4$ )
Nr   r   r   r   )r)   dYr   c           	        > TR                  U 5        TS:w  a  U T-  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   r   )axisr   T)trans1)check_consistencyinc_gradsumopsgemm)r1   r   r.   
array_infor-   r)   s    r%   backpropforward.<locals>.backpropN   sq    $$R(#k!BsBFFFN+sEIINN2qN>?yy~~b!$$r'   c                     Sn[        U5      e)Nz;backprop is not supported for an unnormalized Softmax layer
ValueError)r1   msgs     r%   backprop_unnormalized&forward.<locals>.backprop_unnormalizedW   s    Kor'   )r#   r+   r   r   	get_paramr   r8   affiner   r   
from_arrayInTOutT)r-   r.   r/   	normalizer   Yr;   rA   r   r:   r)   s   ``      @@@r%   r$   r$   ?   s    /0<HI++34K%Xus+,AXus+,A		Aq!AIIa[9%%a(J%S %T % %#  {''r'   rI   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_paramr8   get_dim)r   r   r-   r.   rI   s        r%   r    r    a   s     	}t,4dIaL)}t,4dIaL)	OOC		EMM$,?tAT+UVW	OOC		EMM$,?+ABCr'   c                 *    U S::  a  Sn[        U5      eg )Ng        z0softmax temperature must not be zero or negativer>   )r)   r@   s     r%   r+   r+   p   s    c@o r'   )NN)typingr   r   r   r   configr   initializersr	   r-   r
   typesr   r   utilr   r   r   rF   rG   layersintr&   boolfloatr,   r$   r    r+    r'   r%   <module>rZ      s   2 2  $  & 0 0 
 "&!% X	
 X 39 * 
 "&!%" X	
 X   39 6(5d# ( (t (dHn@U (L DDD dD }	D
 ~D 
Dr'   