
    iA                     x   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j.                  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)he_normal_init	zero_init)Model)Floats1dFloats2d)	get_widthpartial   )chain)Dropout)	LayerNormzDish.v1NF)init_Winit_bdropout	normalizenOnIr   r   r   r   returnc          	         |t         }|t        }t        dt        t	        t
        ||      | |dd d d      }|rt        |t        |             }|0t        |t        t        t        t        f   t        |                  }|S )Ndish)r   r   )Wb)initdimsparams)r   )r	   r
   r   forwardr   r   r   r   r   r   r   )r   r   r   r   r   r   models          b/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/dish.pyDishr%      s     ~~',T66*b!%(E eY"-.eT%((:";WW=MNOL    r#   Xis_trainc                 $    t        t         j                  d            t        t         j                  d            } j                  j                  |      } j                  j                  |      }dt        dt        f fd}||fS )Nr   r   dYr   c                    j                   j                  | d      } j                  d| j                  d             j                  dj                   j	                  | d             j                   j	                  |       S )	NF)inplacer   r   )axisr   T)trans1)opsbackprop_dishinc_gradsumgemm)r*   r   r'   r#   s    r$   backpropzforward.<locals>.backprop1   sl    YY$$RE$:sBFFFN+sEIINN2qN>?yy~~b!$$r&   )r   r   	get_paramr   r/   affiner   )r#   r'   r(   r   Y_preactYr4   r   s   ``     @r$   r"   r"   )   sx     	Xus+,AXus+,Ayy1a(H		x A%X %( % h;r&   r8   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_paramr/   get_dim)r   r   r#   r'   r8   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   layersintfloatboolr%   r"   r    r&   r$   <module>rH      sV   2 2  4  & %      "&!%# X	
 X e_  8X 68#$)1=A
8X* ! DDD 8#$D 	D
 D 
Dr&   