o
    iP                     @   sH  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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dZdeeef dededeeef fddZ		d!dededeeef dee dee ddfdd ZdS )"    )CallableOptionalTuplecast   )registry)he_normal_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzSwish.v1NF)init_Winit_bdropout	normalizenOnIr   r   r   r   returnc                C   sz   |d u rt }|d u rt}tdttt||| |dd d dd}|r)t|t| d}|d ur;t|ttt	t	f t
|}|S )Nswish)r   r   )Wb)initdimsparams)r   )r   r	   r
   forwardr   r   r   r   r   r   r   )r   r   r   r   r   r   model r"   F/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/swish.pySwish   s    

r$   r!   Xis_trainc                    sb   t td t td}j |jdtdtf fdd}|fS )Nr   r   dYr   c                    sP   j j| dd} d| jdd dj j| dd j |  S )	NF)inplacer   r   )axisr   T)trans1)opsbackprop_swishinc_gradsumgemm)r'   r   r%   YY_preactr!   r"   r#   backprop1   s   zforward.<locals>.backprop)r   r   	get_paramr   r+   affiner   )r!   r%   r&   r   r3   r"   r0   r#   r    )   s   r    r1   c              	   C   st   |d ur| dt| |d ur| dt| |d| |j|d|df |d||j|df d S )Nr   r   r   r   )set_dimr   	set_paramr+   get_dim)r   r   r!   r%   r1   r"   r"   r#   r   :   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   r"   r"   r"   r#   <module>   sp    




