
    i                        d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZ eZeZ ej(                  d      	 	 dd	d	d
dee   dee   dee   dee   de
eef   f
d       Z ej(                  d      	 	 dd	d	ddddee   dee   dee   dee   dedede
eef   fd       Zde
eef   dededeeef   fdZ	 	 ddedede
eef   dee   dee   dd	fdZd Zy	)     )CallableOptionalTuplecast   )registry)	zero_init)Model)Floats1dFloats2d)	ArrayInfo	get_widthpartialz
Softmax.v1N)init_Winit_bnOnIr   r   returnc          
      |    |t         }|t         }t        dt        t        t        ||      | |dd d dddd      S )Nsoftmaxr   r   WbT      ?softmax_normalizesoftmax_temperatureinitdimsparamsattrs)r	   r
   forwardr   r    )r   r   r   r   s       e/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/softmax.pySoftmaxr&      sO     ~~T66*b!%$(E     z
Softmax.v2Tr   )r   r   normalize_outputstemperaturer(   r)   c          
          |t         }|t         }t        |       t        dt        t	        t
        ||      | |dd d d||d      S )Nr   r   r   r   r   )r	   validate_temperaturer
   r$   r   r    )r   r   r   r   r(   r)   s         r%   
Softmax_v2r,   #   sZ     ~~%T66*b!%!2#.

 
r'   modelXis_trainc                    	
  j                   d   xs |} j                   d   
t        
       t        t         j	                  d            t        t
         j	                  d            } j                  j                  |      }|r j                  j                  |
      }t        j                  |      	dt        dt        f	 
fd}dt        fd	}|r||fS ||fS )
Nr   r   r   r   )r)   dYr   c                    j                  |        dk7  r| z  } j                  d| j                  d             j                  dj                  j	                  | d             j                  j	                  |       S )Nr   r   r   )axisr   T)trans1)check_consistencyinc_gradsumopsgemm)r1   r   r.   
array_infor-   r)   s    r%   backpropzforward.<locals>.backpropN   sq    $$R(#k!BsBFFFN+sEIINN2qN>?yy~~b!$$r'   c                     d}t        |      )Nz;backprop is not supported for an unnormalized Softmax layer
ValueError)r1   msgs     r%   backprop_unnormalizedz&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;   r@   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'   rG   c           
         |,|j                  d      |j                  dt        |             |,|j                  d      |j                  dt        |             |j                  d | |j                  |j                  d      |j                  d      f             |j                  d ||j                  |j                  d      f             y )Nr   r   r   r   )has_dimset_dimr   	set_paramr8   get_dim)r   r   r-   r.   rG   s        r%   r    r    a   s     	}t,4dIaL)}t,4dIaL)	OOC		EMM$,?tAT+UVW	OOC		EMM$,?+ABCr'   c                 (    | dk  rd}t        |      y )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   rD   rE   layersintr&   boolfloatr,   r$   r    r+    r'   r%   <module>rX      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'   