
    i                     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HardSwishMobilenet.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hardswishmobilenet)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          r/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/hard_swish_mobilenet.pyHardSwishMobilenetr%      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_hard_swish_mobilenetinc_gradsumgemm)r*   r   r'   Y_preactr#   s    r$   backpropzforward.<locals>.backprop1   sl    YY44R54QsBFFFN+sEIINN2qN>?yy~~b!$$r&   )r   r   	get_paramr   r/   affinehard_swish_mobilenet)r#   r'   r(   r   Yr5   r   r4   s   ``    @@r$   r"   r"   )   s     	Xus+,AXus+,Ayy1a(H		&&x0A%X %( % % h;r&   r9   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'   r9   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>rI      sW   2 2  4  & %     () "&!%# X	
 X e_  8X *68#$)1=A
8X* ! DDD 8#$D 	D
 D 
Dr&   