o
    i	                     @   sP  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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)glorot_uniform_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzRelu.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relu)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"   E/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/relu.pyRelu   s    

r$   r!   Xis_trainc                    s`   t td t td}j |jdtdtf fdd}|fS )Nr   r   dYr   c                    sJ   j | } d| jdd dj j| dd j |  S )Nr   r   )axisr   T)trans1)opsbackprop_reluinc_gradsumgemm)r'   r   r%   Yr!   r"   r#   backprop2   s   zforward.<locals>.backprop)	r   r   	get_paramr   r*   affiner   OutTInT)r!   r%   r&   r   r1   r"   r/   r#   r    ,   s   r    r0   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%   r0   r"   r"   r#   r   ;   s   $ r   )NN) typingr   r   r   r   configr   initializersr   r	   r!   r
   typesr   r   utilr   r   r   r   r   	layernormr   r5   r4   layersintfloatboolr$   r    r   r"   r"   r"   r#   <module>   sd    
*
