
    i                        d dl mZmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ eZeZ ej2                  d      	 	 dddddddee   dee   dee   dee   de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y)    )CallableOptionalTuplecast   )registry)glorot_uniform_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzMish.v1NF)init_Winit_bdropout	normalizenOnIr   r   r   r   returnc          	      B   |t         }|t        }t        dt        t	        t
        ||      | |dddd      }|r1t        |t        t        t        t        f   t        |                   }|0t        |t        t        t        t        f   t        |                  }|S )zODense layer with mish activation.
    https://arxiv.org/pdf/1908.08681.pdf
    Nmish)r   r   )Wb)initdimsparams)r   )r	   r
   r   forwardr   r   r   r   InTOutTr   r   )r   r   r   r   r   r   models          b/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/mish.pyMishr'      s     ~$~#T66*b!%E eT%T	"2I4DEFeT%T	"2GG4DEFL    r%   Xis_trainc                 4    t        t         j                  d            t        t         j                  d            } j                  j                  d      |z   j                  j                        }dt        dt        f fd}||fS )Nr   r   T)trans2dYr   c                    j                   j                  |       }j                  dj                   j                  |d             j                  d|j	                  d             j                   j                  |      }|S )Nr   T)trans1r   r   )axis)opsbackprop_mishinc_gradgemmsum)r-   dY_pre_mishdXr   r)   
Y_pre_mishr%   s      r&   backpropzforward.<locals>.backprop6   sl    ii--b*=sEIINN;$NGHsKOOO34YY^^K+	r(   )	r   r   	get_paramr   r1   r4   r   r$   r#   )r%   r)   r*   r   Yr9   r   r8   s   ``    @@r&   r"   r"   /   s    Xus+,AXus+,A1T2J!OJ		z"AT c   h;r(   r;   c           
      d   ||j                  dt        |             ||j                  dt        |             |j                  d | |j                  |j	                  d      |j	                  d      f             |j                  d ||j                  |j	                  d      f             y )Nr   r   r   r   )set_dimr   	set_paramr1   get_dim)r   r   r%   r)   r;   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   r#   r$   layersintfloatboolr'   r"   r    r(   r&   <module>rK      sV   2 2  9  & %      "&!%# X	
 X e_  39 <5d#  t dHn@U * DDD dD }	D
 ~D 
Dr(   