
    i&                     
   d dl mZmZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZ  e       Z G d	 d
e      Zej:                  j=                  g dd      Zej:                  j=                  g dd      Z ej:                  j=                  g dg dg dgd      Z!ej:                  j=                  g dg dgd      Z"ej:                  jG                  dd      Z$ ee!ej:                  j=                  ddgd            Z% ee$eejM                  g d      ejM                  g d            Z'e!jP                  d   Z) ejF                  e"jU                         dfd      Z+d Z,g di e!e!fdddde!e!fdi e!e!fdi e!e!fdi e!e!fdi e!e!fdi e!e!fdd d!d"e!e!fdddde!e!fd#i e!e!fd#ddde!e!fd#d d!d"e!e!fd$i e!e!fd$d d!d"e!e!fd%i e!e!fd%ddde!e!fd&i e!e!fd&ddde!e!fd'i e!e!fd'ddde!e!fd(i e!e!fd(ddde!e!fd)i e!e!fd)ddde!e!fd*i e!e!fd*ddde!e!fd+i e!e!fd+ddde!e!fd,i e!e!fd,ddde!e!fd-i e!e!fd-ddde!e!fd.i e!e!fd/i e!e!fd0i e!e!fd0ddde!e!fd1i e!e!fd1ddde!e!fd2d3d4ie!e!ge!e!gf ejZ                  d5d4e)e)d6e!e!ge!e!gej\                  j_                  e d78      9      Z0g e0 ejZ                  d5d e)dz  e)d6e!e!ge!e!gej\                  j_                  e d78      9      d2d3d ie!e!ge!e!gfd:i e%e!fd;i e%e!fd<i e%e!fd=i e!e!fd=i e%e%fd>d e1e"jU                         dz         d d!d?e"e!fd>d e1e jU                         dz         d@e e!fdAd e1e"jU                               d d!d?e"e!fdAddd@e e!fdBdCdDie!e!fdEi e%e%fdFi e%e%fdFdGdHd-iie%e%fdIi  ej<                  g ddJ      e ej<                  ddgd      fe!fdKi  ej<                  g ddJ      e ej<                  ddgd      fe!fdLdMdig dNe"fdOi ddP ejd                  g dg dg      jf                  e"fdQi ddP ejd                  g dg dg      jf                  e"fZ4ej\                  jk                  dRe4      dS        Z6ej\                  jk                  dRe0      dT        Z7ej\                  jk                  dUe!e%e'e!e!gg      dV        Z8ej\                  jk                  dRe4      dW        Z9dXe
eef   dYedZefd[Z:dXe
ee   ee   f   dYee   dZee   fd\Z;dXe
eef   dYedZefd]Z<y)^    )ListOptionalN)assert_almost_equal)DropoutModelNumpyOpsregistrywith_padded)r   )	has_torch)Array2dFloats2dFloatsXdPaddedRaggedShape)data_validation	get_widthc                   &    e Zd Zdedee   defdZy)NoDropoutOpsshapedropreturnc                 `    ||dk  r| j                   j                  |d      S t        d      )Nr   fdtypez0During prediction, dropout should not be applied)xpones
ValueError)selfr   r   s      s/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/layers/test_layers_api.pyget_dropout_maskzNoDropoutOps.get_dropout_mask   s0    <41977<<S<11OPP    N)__name__
__module____qualname__r   r   floatr   r"    r#   r!   r   r      s$    Qe Q8E? Qx Qr#   r   )         r   r   i)   r*   r+   r-   )r)      r+   r)   )	      r.      )r-   r.      )r+   r+   r+   r*   r)   )r)   r*   r+   r-   c                    t        |       t        |      k(  sJ t        |t        j                  j                        rBt        | t        j                  j                        sJ |j
                  | j
                  k(  sJ y t        |t              rqt        | t              sJ |j                  j
                  | j                  j
                  k(  sJ |j                  j
                  | j                  j
                  k(  sJ y t        |t              rt        | t              sJ |j                  j
                  | j                  j
                  k(  sJ |j                  j
                  | j                  j
                  k(  sJ t        |j                        t        | j                        k(  sJ t        |j                        t        | j                        k(  sJ y t        |t        t        f      r-t        | t        t        f      sJ t        d | D              sJ y t!        j"                  dt        |        d|         y )Nc              3   P   K   | ]  }t        |t        j                           y w)N)
isinstancenumpyndarray).0xs     r!   	<genexpr>z$assert_data_match.<locals>.<genexpr>7   s     ;A:a/;s   $&zwrong output of z: )typer5   OPSr   r7   ndimr   datalengthsr   	size_at_tlenindiceslisttupleallpytestfail)Yout_datas     r!   assert_data_matchrJ   &   s   7d8n$$$(CFFNN+!SVV^^,,,}}&&&	Hf	%!V$$$}}!!QVV[[000$$		666	Hf	%!V$$$}}!!QVV[[000!!&&!++*:*::::8##$AII6668##$AII666	HtUm	,!dE]+++;;;;;&tAwir!56r#   zDish.v1r-   )nOnIz
Dropout.v1zLayerNorm.v1z	Linear.v1zLogistic.v1z	Maxout.v1T皙?)	normalizedropoutzMish.v1zRelu.v1z
Sigmoid.v1zClippedLinear.v1zReluK.v1zHardSigmoid.v1zHardTanh.v1zHardSwish.v1zHardSwishMobilenet.v1zSwish.v1zGelu.v1zsigmoid_activation.v1zsoftmax_activation.v1z
Softmax.v1z
Softmax.v2zLSTM.v1biFzPyTorchLSTM.v1)rP   rK   rL   zneeds PyTorch)reason)markszreduce_max.v1zreduce_mean.v1zreduce_sum.v1zexpand_window.v1zEmbed.v1)rK   nVcolumnrO   )rK   rS   zHashEmbed.v1zMultiSoftmax.v1nOs)r)   r+   zParametricAttention.v1zParametricAttention.v2key_transform@layerszSparseLinear.v1uint64zSparseLinear.v2zremap_ids.v1r   )ar)   g      @zremap_ids.v2)mapping_tablerT   zpremap_ids.v1zname,kwargs,in_data,out_datac                 4   d| i|}t        j                  d|i      }t        j                  |      sJ t        j                  d|i      d   }d| v rt        |      }d}t        |      5  |j                  ||        ||d      \  }}	|j                  d      rt        |      |j                  d      k(  sJ t        ||        |	|      }
t        |
|       |j                  t                      |j                  |       d d d        y # 1 sw Y   y xY w)NrW   configLSTMTis_trainrK   )r	   fillsrslyis_json_serializableresolver
   r   
initializehas_dimr   get_dimrJ   _to_opsr   predict)namekwargsin_datarI   cfg
filled_cfgmodelvalidrH   backpropdXs              r!   test_layers_from_configrr      s   d
%f
%C#/J%%j111h_-h7E~E"E		 
(+Gd38==Q<5==#6666!X&a["g&ln%g
 
 
s   +BDDc                     dd| i|d}t        j                  d|i      d   }d| v rt        |      }|j                  ||        ||d      \  }}t	        ||        ||      }t	        ||       y )Nzresidual.v1rW   )rW   layerr\   r]   Tr^   )r	   rc   r
   rd   rJ   )	ri   rj   rk   rI   rl   rn   rH   rp   rq   s	            r!   test_layers_with_residualru      s}    #y$.I&.I
JCh_-h7E~E"	Wh'$/KAxa"	!Bb'"r#   r>   c                     t        d      }|j                  | |         || d      \  }}t        ||         ||      }t        ||        y )NrM   Fr^   )r   rd   rJ   )r>   rn   rH   rp   rq   s        r!   test_dropoutrw      sH    CLE	T4 u-KAxa	!Bb$r#   c                    d| i|}t        j                  d|i      d   }d| v ry d| v rt        |      }t        |||       y t	        |t
        j                  j                        rO|j                  dk(  r@t	        |t
        j                  j                        r|j                  dk(  rt        |||       t	        |t              rCt	        |t
        j                  j                        r|j                  dk(  rt        |||       y y y y )NrW   r\   expand_windowr]   r*   )r	   rc   r
   util_batch_unbatch_listr5   r<   r   r7   r=   util_batch_unbatch_arrayr   util_batch_unbatch_ragged)ri   rj   rk   rI   rl   rn   s         r!   test_layers_batching_allr}      s    d
%f
%Ch_-h7E$~E"w9gsvv~~.7<<13D(CFFNN38J(Bgv&(CFFNN38J)%(C 9K3 'r#   rn   rk   rI   c                    |D cg c]  }| j                   j                  |dd      ! }}t        d      5  | j                  ||       | j	                  |      j                         }|D cg c]$  }| j	                  |      d   j                         & }}t        ||d       d d d        y c c}w c c}w # 1 sw Y   y xY w)Nr)   Tr   r-   decimal)ops	reshape2fr   rd   rh   tolistr   )rn   rk   rI   rY   	unbatched	Y_batcheduY_not_batcheds           r!   r{   r{      s     9@@1$$Q2.@I@		 A(+MM'*113	?HI!q)!,335III}a@	A A A JA As"   $B.6B8,)B3B83B88Cc                     t        d      5  | j                  ||       | j                  |      }|D cg c]  }| j                  |g      d    }}t        ||d       d d d        y c c}w # 1 sw Y   y xY wNTr   r-   r   )r   rd   rh   r   )rn   rk   rI   r   r   r   s         r!   rz   rz      s~    
 
	 A(+MM'*	8?@1s+A.@@I}a@	A A AA As   (A.A)A.)A..A7c                    t        d      5  | j                  ||       | j                  |      }t        t	        |            D cg c]  }| j                  ||         d    }}t        ||d       d d d        y c c}w # 1 sw Y   y xY wr   )r   rd   rh   rangerA   r   )rn   rk   rI   r   r,   r   s         r!   r|   r|      s     
	 A(+MM'*	?DS\?RS!wqz215SSI}a@	A A TA As   :BA=$B=BB)=typingr   r   r6   rF   ra   numpy.testingr   	thinc.apir   r   r   r	   r
   thinc.backendsthinc.compatr   thinc.typesr   r   r   r   r   r   
thinc.utilr   r   r<   r   r   asarrayarray1d
array1dintarray2d
array2dintzerosarray3dragged	asarray1ipaddedr   widthmaxvectorsrJ   parammarkskipifTEST_CASES_SUMMABLEintarrayT
TEST_CASESparametrizerr   ru   rw   r}   r{   rz   r|   r(   r#   r!   <module>r      s	   !    - E E # " J J 1jQ8 Q &&..#.
.VV^^IS^1

&&..,lC3.
OVV^^Y	2#^>

&&,,y,
,	Ac:	;	WcmmL13==3N
 	a
%++z~~'+3
77,-GW%- q"GW5- 2w(	-
 R'*- "gw'- B)- "gw'- 5wH- !$gw7- GW%- q"GW5- ds3WgF- GW%- ds3WgF-  2w(!-" !1%w8#-$ Wg.%-& +Wg>'-( Wg&)-* #Wg6+-, r7G,--. aq)7G</-0 B)1-2 1A&93-4 R'*5-6 AQ'':7-8 b'739-: Qa0'7C;-< Wg&=-> #Wg6?-@ GW%A-B q"GW5C-D b'73E-F b'73G-H 2w(I-J !1%w8K-L 2w(M-N !1%w8O-T u1GW3EFU-V FLL!%uE#JWV]L^ahjq`r  {A  {F  {F  {M  {M  R[  N[  ds  {M  {t  uW- ^!!FLL519E2	'	'kk  Y G! tw07G2DE! b&'*! r67+! b&'*!  Wg.!!" VV,#!$ Z^^%5%9!:aTWXZdfmn%!& Z^^%5%9!:;ZQ'!( AS)9%:aTWXZdfmn)!* AQ'W=+!, ':-!0 r6621!2 r6623!4 )Y1GH&RXY5!6 ]U]]9HEwP]PUP]P]_`bc^dloPpqsz{7!8 ]U]]9HEwP]PUP]P]_`bc^dloPpqsz{9!: gs^]J?;!< rQ7iQZE[9\9^9^`jk=!> a8+%++yR[F\:]:_:_akl?!
H 7D E* 79LM	# N	# '66GW;M!NO  P  7DD ED"A7"#A.6ABIA	AgW-.	A']	A 7m	AA!A,2A>EAr#   