
    h"
                        S SK JrJrJrJr  SSKJr  SSKJrJ	r	  SSK
Jr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  \r\r\R0                  " S5         SSSSSS.S\\   S\\   S\\   S\\   S\\   S\\   S\S\\\4   4S jjj5       rS\\\4   S\S\S\\\4   4S jr  S S\S\S\\\4   S\\   S\\   SS4S jjrg)!    )CallableOptionalTuplecast   )registry)glorot_uniform_init	zero_init)Model)Floats2d)	get_widthpartial   )chain)Dropout)	LayerNormz	Maxout.v1NF)init_Winit_bdropout	normalizenOnInPr   r   r   r   returnc          	         Uc  [         nUc  [        n[        S[        [	        [
        X45      XUS.S S S.S9nU(       a  [        U[        U S95      nUb0  [        U[        [        [        [        4   [        U5      5      5      nU$ )Nmaxout)r   r   r   )Wb)initdimsparams)r   )r	   r
   r   forwardr   r   r   r   r   InTOutTr   )r   r   r   r   r   r   r   models           M/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/maxout.pyMaxoutr'      s     ~$~#T6*+%E eY"-.eT%T	"2GG4DEFL    r%   Xis_trainc                 >  ^ ^^^	^
^^ T R                  S5      m
T R                  S5      mT R                  S5      m	T R                  S5      nT R                  S5      mT R                  R                  TT
T-  T	5      mT R                  R	                  TTSS9nUT R                  R                  UT
T-  5      -  nT R                  R                  XDR                  S   T
T5      nT R                  R                  U5      u  nmS	[        S
[        4UUU U	U
UU4S jjnXg4$ )Nr   r   r   r   r   T)trans2r   d_bestr   c                   > TR                   R                  U T
T	5      nTR                  SUR                  SS95        TR                   R	                  XR
                  S   TT	-  5      nTR                   R                  TR                   R                  UTSS9TT	T5      nTR                  SU5        TR                   R                  UTR                   R	                  TTT	-  T5      5      $ )Nr   r   )axisT)trans1r   )opsbackprop_maxoutinc_gradsum	reshape2fshape	reshape3fgemm)r-   dZdYdWr   r)   r%   r   r   r   whichs       r&   backpropforward.<locals>.backprop9   s    YY&&vub9sBFFFN+YY  XXa["r':YY  Ad!CRRPsByy~~b%))"5"5ab""EFFr(   )get_dim	get_paramr1   r5   r8   	reshape1fr7   r6   r   r$   r#   )r%   r)   r*   r   YZbestr=   r   r   r   r   r<   s   ``      @@@@@r&   r"   r"   -   s    	t	B	t	B	t	BAA		ArBw+A		q!D)A		QR	((A		Awwqz2r2A))""1%KD%G G# G G >r(   rB   c           
         Ub  UR                  S[        U5      5        Ub  UR                  S[        U5      5        UR                  S5      UR                  S5      UR                  S5      4nUR                  SU " UR                  U5      5        UR                  SU" UR                  UR                  S5      UR                  S5      45      5        g )Nr   r   r   r   r   )set_dimr   r?   	set_paramr1   )r   r   r%   r)   rB   W_shapes         r&   r   r   E   s     	}dIaL)}dIaL)}}T"EMM$$7t9LMG	OOC		734	OOC		EMM$,?tAT+UVWr(   )NN   )NN)typingr   r   r   r   configr   initializersr	   r
   r%   r   typesr   utilr   r   r   r   r   	layernormr   r#   r$   layersintfloatboolr'   r"   r    r(   r&   <module>rU      se   2 2  9   %     

 "&!%# 	
 X X e_  39 85d#  t dHn@U 8 XXX dX }	X
 ~X 
Xr(   