Ë
    ÌÓ^j5¬ ã                   ób  — U d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlZd dlZd dlmZ d dlmc 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mZm Z 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,Zd dl-m.Z. d dl/m0Z0 d dl/m1Z1 ejd                  Z2dZ3d„ Z4d„ Z5 e6ddddd„ de!rdndejn                  ¬«       e6dddddd „ de!rdndejn                  ¬!«	       e6d"d#d$ejn                  ¬%«       e6d"d&d'd(d)d$ejn                  ¬*«       e6d+d,d-„ ejn                  ¬.«       e6d/d0d1d2d$d$ejn                  ¬3«      gZ8d4„ Z9d5„ Z:d6„ Z;d7„ Z<d8„ Z=d9„ Z>d:„ Z?d;„ Z@d<„ ZAd=„ ZBd>„ ZCd?„ ZDd@„ ZEdA„ ZFdB„ ZGdC„ ZHdD„ ZIdE„ ZJdF„ ZKdG„ ZLdH„ ZMdI„ ZNdJ„ ZOdK„ ZPdL„ ZQdM„ ZRdN„ ZSdO„ ZTdP„ ZUdQ„ ZVdR„ ZWdS„ ZXdT„ ZYdU„ ZZdV„ Z[dW„ Z\dX„ Z]dY„ Z^dZ„ Z_d[„ Z`d\„ Zad]„ Zbd^„ Zcd_„ Zdd`„ Zeda„ Zfdb„ Zgdc„ Zhdd„ Zide„ Zjdf„ Zkdg„ Zldh„ Zmdi„ ZndÊdj„Zo	 	 dËdk„Zp	 	 dÌdl„Zq	 	 dÍdm„Zr	 	 dÍdn„Zs	 	 	 	 	 dÎdo„Zt	 	 dËdp„ZudÏdq„ZvdÏdr„Zwds„ ZxdÐdt„ZydÑdu„ZzdÐdv„Z{dw„ Z|dÒdx„Z}dÓdy„Z~	 	 dÔdz„ZdÓd{„Z€dÓd|„Z�i d}eo“d~ eeod¬«      “d€eu“d�ep“d‚ev“dƒew“d„ey“d…ez“d†e{“d‡e}“dˆe~“d‰e“dŠe€“d‹e�“dŒes“d�et“Z‚e6dŽe0f   eƒd�<   g Z„d�„ Z…g d‘¢Z†g d’¢Z‡ e
e†e‡«      D ]9  \  ZˆZ‰ e6eˆ› d“e‰› �eˆd”œd•„d–d–e…d$ejn                  ¬—«      ZŠe„�j                  eŠ«       Œ; e‡D ]3  Z‰ e6d˜e‰› �d™„ dš„ d›„ e…d$ejn                  ¬œ«      ZŠe„�j                  eŠ«       Œ5 d�dž„ dŸ„ fd d¡„ d¢„ fd…d£„ d¤„ fd„d¥„ d¦„ fd†d§„ d¨„ fd€d©„ dª„ fdˆd«„ d¬„ fdŠd­„ d®„ fd‰d¯„ d°„ fd±d²„ d³„ fg
ZŒd„d´d$iiZ�e6eŽe6f   eƒdµ<   d$d$d$d$d$d¶œZ�g d’¢Z‡ e
eŒe‡«      D ]o  \  \  ZˆZ�Z‘Z‰ e6eˆ› d“e‰› �eˆd”œd·„e�fd¸„e‘fd¹„e…de��j%                  eˆd«      ¬º«      Z“e��j%                  eˆi «      Z”e“�j+                  e”«       e„�j                  e“«       Œq  G d»„ d¼e«      Z– G d½„ d¾«      Z— G d¿„ dÀe—«      Z˜ G dÁ„ dÂ«      Z™ G dÃ„ dÄe™e˜«      Zš G dÅ„ dÆe™e—«      Z›dÕdÇ„ZœdÖdÈ„Z�dÉ„ Zžy)×é    )ÚabstractmethodN)Údeepcopy)ÚreduceÚpartial)Úproduct)Úmul)Ú
_reduction)Úcommon_utils)	ÚTestCaseÚto_gpuÚfreeze_rng_stateÚis_iterableÚ	gradcheckÚgradgradcheckÚset_default_dtypeÚskipIfTorchDynamoÚTEST_WITH_ROCM)Ú	TEST_CUDAÚSM90OrLater)Ú_get_numerical_jacobianÚ_iter_tensors)ÚVariable)Ú_TensorOrTensors)ÚAny)ÚCallable)ÚSequenceçñhãˆµøä>c                 ó„   — t        | dd «      }|€#t        j                  t        | dd «      dd¬«      }|€t        d«      ‚|S )NÚ	reductionÚsizeAverageTF)Úemit_warningzExpected result to not be None)ÚgetattrÚ
_ReductionÚlegacy_get_stringÚAssertionError©ÚmÚresults     úl/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/testing/_internal/common_nn.pyÚget_reductionr*   #   sI   € Ü�Q˜ TÓ*€FØ€~Ü×-Ñ-¬g°a¸ÈÓ.MÈtÐbgÔhˆØ€~ÜÐ=Ó>Ð>Ø€Mó    c                 ó>   — t        | dd «      }|�|S t        | dd «      S )NÚweightÚweights)r"   r&   s     r)   Ú
get_weightr/   ,   s*   € Ü�Q˜ $Ó'€FØÐØˆÜ�1�i Ó&Ð&r+   ÚLinear)é
   é   ztorch::nn::LinearOptions(10, 8))é   r1   c                 óœ   — t        j                  | |d   j                  «       «      |d   j                  dd«      j	                  dd«      z   S )Nr   é   éÿÿÿÿr3   r2   )ÚtorchÚmmÚtÚviewÚexpand©ÚiÚpÚ_s      r)   ú<lambda>r@   o   s>   € ¤U§X¡X¨a°°1±·±³Ó%:¸Q¸q¹T¿Y¹YÀqÈ"Ó=M×=TÑ=TÐUVÐXYÓ=ZÑ%Z€ r+   Tç{®Gáz„?ç{®Gázt?)Úmodule_nameÚconstructor_argsÚcpp_constructor_argsÚ
input_sizeÚreference_fnÚ	with_tf32Útf32_precisionÚdefault_dtype)r1   r2   Fz+torch::nn::LinearOptions(10, 8).bias(false)Úno_biasc                 óP   — t        j                  | |d   j                  «       «      S ©Nr   )r7   r8   r9   r<   s      r)   r@   r@   |   s   € ¤U§X¡X¨a°°1±·±³Ó%:€ r+   )	rC   rD   rE   rF   ÚdescrG   rH   rI   rJ   ÚRReLU)r5   é   rP   F)rC   rF   Ú	test_cudarJ   ©çš™™™™™¹?gÍÌÌÌÌÌì?ú/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r3   r3   é   Úwith_up_down©rC   rD   rE   rF   rN   rQ   rJ   ÚFlatten©rP   é   r3   rU   c                 ó.   — t        j                  | d«      S ©Nr5   )r7   Úflatten)r=   r?   s     r)   r@   r@   –   s   € ¤5§=¡=°°AÓ#6€ r+   )rC   rF   rG   rJ   ÚCrossMapLRN2d)rU   rB   çü©ñÒMbP?rP   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)©rP   rZ   é   ra   )rC   rD   rE   rF   Úcheck_gradgradÚcheck_batched_gradrJ   c                  ó„   — t        t        | d«      } t        j                  |«      j                  | Ž j                  «       S r\   )r   r   r7   Úrandpermr:   Údouble)ÚsizeÚtotals     r)   Ú_rand_tensor_non_equalri   ª   s5   € Ü”3˜˜aÓ €EØ%Œ5�>‰>˜%Ó ×%Ñ% tÐ,×3Ñ3Ó5Ð5r+   c                 óB   ‡ ‡—  G ˆ ˆfd„dt         j                  «      }|S )Nc                   ó   •— e Zd Zˆ ˆfd„Zy)ú)wrap_functional.<locals>.FunctionalModulec                 ó   •—  ‰|i ‰¤ŽS ©N© )ÚselfÚargsÚfnÚkwargss     €€r)   Úforwardz1wrap_functional.<locals>.FunctionalModule.forward±   s   ø€ Ù�tÐ&˜vÑ&Ð&r+   N)Ú__name__Ú
__module__Ú__qualname__rt   )rr   rs   s   €€r)   ÚFunctionalModulerl   °   s   ø„ ö	'r+   rx   )ÚnnÚModule)rr   rs   rx   s   `` r)   Úwrap_functionalr{   ¯   s   ù€ ÷'œ2Ÿ9™9ô 'ð Ðr+   c            
      ó˜   ‡ — t        j                  dd«      Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd„d	t         j                  ¬
«      S )Nr1   ÚPoissonNLLLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S ©NÚnone©r   )ÚFÚpoisson_nll_lossÚtype_as©r=   r9   s    €r)   r@   z/poissonnllloss_no_reduce_test.<locals>.<lambda>»   ó   ø€ ”a×(Ñ(¨¨A¯I©I°a«LÀFÔK€ r+   zaF::poisson_nll_loss(i, t.to(i.options()), F::PoissonNLLLossFuncOptions().reduction(torch::kNone))c                  ó.   — t        j                  dd«      S ©Nr1   ©r7   Úrandro   r+   r)   r@   z/poissonnllloss_no_reduce_test.<locals>.<lambda>¾   s   € œŸ™ B¨Ó+€ r+   ú_get_input()r…   c                 óH   •— | j                  «       ‰j                  | «      z
  S rn   )Úexpr   ©r=   r?   r9   s     €r)   r@   z/poissonnllloss_no_reduce_test.<locals>.<lambda>À   s   ø€  1§5¡5£7¨Q¯U©U°1«XÑ#5€ r+   F©ÚfullnameÚconstructorÚcpp_function_callÚinput_fnÚcpp_var_maprG   ÚpicklerJ   ©r7   ÚrandnÚdictr{   rf   ©r9   s   @r)   Úpoissonnllloss_no_reduce_testrš   ¶   sM   ø€ Ü�‰�B˜Ó€AÜØ+Ü#ÛKóMðjá+Ø(¨qÑ1Û5ØÜ—l‘lô
$ð 
$r+   c                  ó  ‡ — t        t        j                  dd«      j                  d«      j	                  t        j
                  «      «      Š t        dt        ˆ fd„«      dd„ d‰ d	œˆ fd
„ddt        j
                  ¬«	      S )Né   r1   r   ÚBCELoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úbinary_cross_entropyr„   r…   s    €r)   r@   z(bceloss_no_reduce_test.<locals>.<lambda>Ê   ó   ø€ ”a×,Ñ,¨Q°·	±	¸!³ÈÔO€ r+   úiF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().reduction(torch::kNone))c                  óN   — t        j                  dd«      j                  dd«      S ©Nrœ   r1   çyé&1¬œ?ç´Èv¾Ÿï?©r7   rŠ   Úclamp_ro   r+   r)   r@   z(bceloss_no_reduce_test.<locals>.<lambda>Í   ó   € œŸ™ B¨Ó+×2Ñ2°6¸:ÓF€ r+   r‹   r…   c                 ó`   •— ‰| j                  «       z  d‰z
  d| z
  j                  «       z  z    S r\   ©ÚlogrŽ   s     €r)   r@   z(bceloss_no_reduce_test.<locals>.<lambda>Ï   ó,   ø€  Q¨¯©«¡[°A¸±E¸aÀ!¹e¿[¹[»]Ñ3JÑ%JÐ#K€ r+   FgÇº¸�ðF?©	r�   r‘   r’   r“   r”   rG   r•   Ú	precisionrJ   )r   r7   r—   ÚgtÚtorf   r˜   r{   r™   s   @r)   Úbceloss_no_reduce_testr²   Å   so   ø€ Ü”—‘˜R Ó$×'Ñ'¨Ó*×-Ñ-¬e¯l©lÓ;Ó<€AÜØ$Ü#ÛOóQðnáFØ(¨qÑ1ÛKØØÜ—l‘lô$ð $r+   c            
      óî   ‡ — t        j                  d«      j                  d«      j                  t         j                  «      Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
t         j                  ¬«      S )Nro   r   ÚBCELoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rŸ   r…   s    €r)   r@   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>Ú   r¡   r+   r¢   c                  óL   — t        j                  d«      j                  dd«      S ©Nro   r¥   r¦   r§   ro   r+   r)   r@   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>Ý   ó   € œŸ™ B›×.Ñ.¨v°zÓB€ r+   r‹   r…   c                 ó`   •— ‰| j                  «       z  d‰z
  d| z
  j                  «       z  z    S r\   r«   rŽ   s     €r)   r@   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>ß   r­   r+   Fr�   )r7   r—   r°   r±   rf   r˜   r{   r™   s   @r)   Úbceloss_no_reduce_scalar_testrº   Õ   sd   ø€ Ü�‰�B‹×Ñ˜1Ó× Ñ ¤§¡Ó.€AÜØ+Ü#ÛOóQðnáBØ(¨qÑ1ÛKØÜ—l‘lô
$ð 
$r+   c                  óv  ‡ ‡— t        t        j                  ddt        j                  ¬«      j	                  d«      j                  t        j                  «      «      Š t        j                  dt        j                  ¬«      Št        dt        ˆ ˆfd„«      dd„ d	‰ ‰d
œˆ ˆfd„ddt        j                  ¬«	      S )Nrœ   r1   ©Údtyper   ÚBCELoss_weights_no_reducec                 ór   •— t        j                  | ‰j                  | «      ‰j                  | «      d¬«      S ©Nr€   ©r-   r   rŸ   ©r=   r9   r.   s    €€r)   r@   z0bceloss_weights_no_reduce_test.<locals>.<lambda>ê   ó.   ø€ ”a×,Ñ,¨Q°·	±	¸!³Ø4;·O±OÀAÓ4FÐRXôZ€ r+   z‰F::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  óN   — t        j                  dd«      j                  dd«      S r¤   r§   ro   r+   r)   r@   z0bceloss_weights_no_reduce_test.<locals>.<lambda>ï   r©   r+   r‹   rÂ   c                 óf   •— ‰| j                  «       z  d‰z
  d| z
  j                  «       z  z    ‰z  S r\   r«   )r=   r>   r'   r9   r.   s      €€r)   r@   z0bceloss_weights_no_reduce_test.<locals>.<lambda>ñ   s2   ø€  q¨1¯5©5«7¡{°a¸!±eÀÀAÁ¿{¹{»}Ñ5LÑ'LÐ%MÐPWÑ%W€ r+   Fça2U0*©3?r®   )	r   r7   r—   rf   r°   r±   rŠ   r˜   r{   ©r9   r.   s   @@r)   Úbceloss_weights_no_reduce_testrÈ   ä   s‘   ù€ Ü”—‘˜R ¬5¯<©<Ô8×;Ñ;¸AÓ>×AÑAÄ%Ç,Á,ÓOÓP€AÜ�j‰j˜¤5§<¡<Ô0€GÜØ,Ü#ôZó[ðxñ GØ(¨q¸WÑEÜWØØÜ—l‘lôð r+   c            
      ó@  ‡ ‡— t        j                  d«      j                  d«      j                  t         j                  «      Š t        j
                  dt         j                  ¬«      Št        dt        ˆ ˆfd„«      dd‰ ‰dœd	„ ˆ ˆfd
„dt         j                  ¬«      S )Nro   r   r¼   Ú BCELoss_weights_no_reduce_scalarc                 ór   •— t        j                  | ‰j                  | «      ‰j                  | «      d¬«      S rÀ   rŸ   rÂ   s    €€r)   r@   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>þ   rÃ   r+   z¢F::binary_cross_entropy(
            i, t.to(i.options()),
            F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))r‹   rÂ   c                  óL   — t        j                  d«      j                  dd«      S r·   r§   ro   r+   r)   r@   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>  r¸   r+   c                 óf   •— ‰| j                  «       z  d‰z
  d| z
  j                  «       z  z    ‰z  S r\   r«   ©r=   r?   r9   r.   s     €€r)   r@   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>  s1   ø€  Q¨¯©«¡[°A¸±E¸aÀ!¹e¿[¹[»]Ñ3JÑ%JÐ#KÈgÑ#U€ r+   F)r�   r‘   r’   r”   r“   rG   r•   rJ   )r7   r—   r°   r±   rf   rŠ   r˜   r{   rÇ   s   @@r)   Ú%bceloss_weights_no_reduce_scalar_testrÏ   ø   s   ù€ Ü�‰�B‹×Ñ˜1Ó× Ñ ¤§¡Ó.€AÜ�j‰j˜¤5§<¡<Ô0€GÜØ3Ü#ôZó[ðkð )¨q¸WÑEÙBÜUØÜ—l‘lôð r+   c                  ó0  ‡ ‡— t        t        j                  dd«      j                  d«      j	                  t        j
                  «      «      Št        j                  «       Š t        dt        ˆfd„«      dd„ d‰d	œˆ ˆfd
„ddt        j
                  ¬«	      S )Nrœ   r1   r   ÚBCEWithLogitsLoss_legacy_enumc                 óR   •— t        j                  | ‰j                  | «      d¬«      S )NF)r   ©r‚   Ú binary_cross_entropy_with_logitsr„   r…   s    €r)   r@   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  s   ø€ ”a×8Ñ8¸¸A¿I¹IÀa»LÐQVÔW€ r+   úŒF::binary_cross_entropy_with_logits(
            i, t.to(i.options()), F::BinaryCrossEntropyWithLogitsFuncOptions().reduction(torch::kNone))c                  óN   — t        j                  dd«      j                  dd«      S r¤   r§   ro   r+   r)   r@   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  r©   r+   r‹   r…   c                 óx   •— ‰ ‰| «      j                  «       z  d‰z
  d ‰| «      z
  j                  «       z  z    S r\   r«   ©r=   r?   Úsigmoidr9   s     €€r)   r@   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  ó:   ø€  Q©°«¯©Ó)9Ñ%9¸QÀ¹UÀqÉ7ÐSTË:Á~×FZÑFZÓF\Ñ<\Ñ%\Ð#]€ r+   F©	r�   r‘   r’   r“   r”   rG   rb   r•   rJ   ©
r   r7   r—   r°   r±   rf   ry   ÚSigmoidr˜   r{   ©rÙ   r9   s   @@r)   Ú"bce_with_logistic_legacy_enum_testrß     sz   ù€ Ü”—‘˜R Ó$×'Ñ'¨Ó*×-Ñ-¬e¯l©lÓ;Ó<€AÜ�j‰j‹l€GÜØ0Ü#ÛWóYðkáFØ(¨qÑ1Ü]ØØÜ—l‘lôð r+   c                  ó0  ‡ ‡— t        t        j                  dd«      j                  d«      j	                  t        j
                  «      «      Št        j                  «       Š t        dt        ˆfd„«      dd„ d‰d	œˆ ˆfd
„ddt        j
                  ¬«	      S )Nrœ   r1   r   ÚBCEWithLogitsLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rÓ   r…   s    €r)   r@   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>#  ó   ø€ ”a×8Ñ8¸¸A¿I¹IÀa»LÐTZÔ[€ r+   rÕ   c                  óN   — t        j                  dd«      j                  dd«      S r¤   r§   ro   r+   r)   r@   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>&  r©   r+   r‹   r…   c                 óx   •— ‰ ‰| «      j                  «       z  d‰z
  d ‰| «      z
  j                  «       z  z    S r\   r«   rØ   s     €€r)   r@   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>(  rÚ   r+   FrÛ   rÜ   rÞ   s   @@r)   Ú bce_with_logistic_no_reduce_testræ     sz   ù€ Ü”—‘˜R Ó$×'Ñ'¨Ó*×-Ñ-¬e¯l©lÓ;Ó<€AÜ�j‰j‹l€GÜØ.Ü#Û[ó]ðkáFØ(¨qÑ1Ü]ØØÜ—l‘lôð r+   c                  ó  ‡ ‡— t        j                  d«      j                  d«      j                  t         j                  «      Št        j                  «       Š t        dt        ˆfd„«      dd„ d‰dœˆ ˆfd	„d
d
t         j                  ¬«	      S )Nro   r   Ú"BCEWithLogitsLoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rÓ   r…   s    €r)   r@   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>5  rã   r+   rÕ   c                  óL   — t        j                  d«      j                  dd«      S r·   r§   ro   r+   r)   r@   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>8  r¸   r+   r‹   r…   c                 óx   •— ‰ ‰| «      j                  «       z  d‰z
  d ‰| «      z
  j                  «       z  z    S r\   r«   rØ   s     €€r)   r@   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>:  rÚ   r+   FrÛ   )	r7   r—   r°   r±   rf   ry   rÝ   r˜   r{   rÞ   s   @@r)   Ú'bce_with_logistic_no_reduce_scalar_testrì   /  sr   ù€ Ü�‰�B‹×Ñ˜1Ó× Ñ ¤§¡Ó.€AÜ�j‰j‹l€GÜØ5Ü#Û[ó]ðkáBØ(¨qÑ1Ü]ØØÜ—l‘lôð r+   c                  óº   ‡ — t        j                  ddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nr1   r¼   ÚKLDivLoss_with_target_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úkl_divr„   r…   s    €r)   r@   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>F  ó   ø€ ”a—h‘h˜q !§)¡)¨A£,¸&ÔA€ r+   úNF::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone))c                  óJ   — t        j                  dd«      j                  «       S rˆ   ©r7   rŠ   r¬   ro   r+   r)   r@   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>H  ó   € œŸ™ B¨Ó+×/Ñ/Ó1€ r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S ©NÚ	KLDivLossr€   r�   ©Úloss_reference_fnsr„   rŽ   s     €r)   r@   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>J  ó!   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|ÀvÔNð r+   TF©	r�   r‘   r’   r“   r”   rG   Úsupports_forward_adr•   rJ   ©r7   rŠ   rf   r˜   r{   r™   s   @r)   Ú$kldivloss_with_target_no_reduce_testr   A  sV   ø€ Ü�
‰
�2�r¤§¡Ô.€AÜØ2Ü#ÛAóCàjÙ1Ø(¨qÑ1óOà ØÜ—l‘lô$ð $r+   c                  óº   ‡ — t        j                  ddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nr1   r¼   ÚKLDivLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rð   r…   s    €r)   r@   z*kldivloss_no_reduce_test.<locals>.<lambda>V  rò   r+   ró   c                  óJ   — t        j                  dd«      j                  «       S rˆ   rõ   ro   r+   r)   r@   z*kldivloss_no_reduce_test.<locals>.<lambda>X  rö   r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S rø   rú   rŽ   s     €r)   r@   z*kldivloss_no_reduce_test.<locals>.<lambda>Z  rü   r+   TFrý   rÿ   r™   s   @r)   Úkldivloss_no_reduce_testr  Q  sV   ø€ Ü�
‰
�2�r¤§¡Ô.€AÜØ&Ü#ÛAóCàjÙ1Ø(¨qÑ1óOà ØÜ—l‘lôð r+   c                  ó¸   ‡ — t        j                  dt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nro   r¼   ÚKLDivLoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rð   r…   s    €r)   r@   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>g  rò   r+   ró   c                  óH   — t        j                  d«      j                  «       S ©Nro   rõ   ro   r+   r)   r@   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>i  ó   € œŸ™ B›×+Ñ+Ó-€ r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S rø   rú   rŽ   s     €r)   r@   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>k  rü   r+   TFrý   rÿ   r™   s   @r)   Úkldivloss_no_reduce_scalar_testr  b  sT   ø€ Ü�
‰
�2œUŸ\™\Ô*€AÜØ-Ü#ÛAóCàjÙ-Ø(¨qÑ1óOà ØÜ—l‘lô$ð $r+   c                  óÖ   ‡ — t        j                  ddt         j                  ¬«      j                  «       Š t	        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nr1   r¼   Ú#KLDivLoss_with_log_target_no_reducec                 óT   •— t        j                  | ‰j                  | «      dd¬«      S ©Nr€   T)r   Ú
log_targetrð   r…   s    €r)   r@   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>w  ó   ø€ ”a—h‘h˜q !§)¡)¨A£,¸&ÈTÔR€ r+   ú_F::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone).log_target(true))c                  óJ   — t        j                  dd«      j                  «       S rˆ   rõ   ro   r+   r)   r@   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>y  rö   r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S ©NÚKLDivLoss_log_targetr€   r�   rú   rŽ   s     €r)   r@   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>{  ó#   ø€ ÜÐ5Ñ6°q¸!¿)¹)ÀA»,ÐRXÔYð r+   TFrý   ©r7   rŠ   rf   r¬   r˜   r{   r™   s   @r)   Ú(kldivloss_with_log_target_no_reduce_testr  r  s_   ø€ Ü�
‰
�2�r¤§¡Ô.×2Ñ2Ó4€AÜØ6Ü#ÛRóTà{Ù1Ø(¨qÑ1óZà ØÜ—l‘lô$ð $r+   c                  óÖ   ‡ — t        j                  ddt         j                  ¬«      j                  «       Š t	        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nr1   r¼   ÚKLDivLoss_no_reduce_log_targetc                 óT   •— t        j                  | ‰j                  | «      dd¬«      S r  rð   r…   s    €r)   r@   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>‡  r  r+   r  c                  óJ   — t        j                  dd«      j                  «       S rˆ   rõ   ro   r+   r)   r@   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>‰  rö   r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S r  rú   rŽ   s     €r)   r@   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>‹  r  r+   TFrý   r  r™   s   @r)   Ú#kldivloss_no_reduce_log_target_testr"  ‚  s_   ø€ Ü�
‰
�2�r¤§¡Ô.×2Ñ2Ó4€AÜØ1Ü#ÛRóTà{Ù1Ø(¨qÑ1óZà ØÜ—l‘lôð r+   c                  óÔ   ‡ — t        j                  dt         j                  ¬«      j                  «       Š t	        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nro   r¼   Ú%KLDivLoss_no_reduce_scalar_log_targetc                 óT   •— t        j                  | ‰j                  | «      dd¬«      S r  rð   r…   s    €r)   r@   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>˜  r  r+   r  c                  óH   — t        j                  d«      j                  «       S r  rõ   ro   r+   r)   r@   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>š  r  r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S r  rú   rŽ   s     €r)   r@   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>œ  r  r+   TFrý   r  r™   s   @r)   Ú*kldivloss_no_reduce_scalar_log_target_testr(  “  s]   ø€ Ü�
‰
�2œUŸ\™\Ô*×.Ñ.Ó0€AÜØ8Ü#ÛRóTà{Ù-Ø(¨qÑ1óZà ØÜ—l‘lô$ð $r+   c                  ó¼   ‡ — t        j                  dddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt         j                  ¬«	      S )NrP   rZ   r3   r¼   ÚL1Loss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úl1_lossr„   r…   s    €r)   r@   z'l1loss_no_reduce_test.<locals>.<lambda>¨  ó   ø€ ”a—i‘i  1§9¡9¨Q£<¸6ÔB€ r+   úPF::l1_loss(i, t.to(i.options()), F::L1LossFuncOptions().reduction(torch::kNone))c                  ó0   — t        j                  ddd«      S ©NrP   rZ   r3   ©r7   r—   ro   r+   r)   r@   z'l1loss_no_reduce_test.<locals>.<lambda>ª  ó   € œŸ™ Q¨¨1Ó-€ r+   r‹   r…   c                 óH   •— | ‰j                  | «      z
  j                  «       S rn   ©r„   ÚabsrŽ   s     €r)   r@   z'l1loss_no_reduce_test.<locals>.<lambda>¬  ó   ø€  A¨¯	©	°!«Ñ$4×#9Ñ#9Ó#;€ r+   TFrý   ©r7   r—   rf   r˜   r{   r™   s   @r)   Úl1loss_no_reduce_testr9  £  sU   ø€ Ü�‰�A�q˜!¤5§<¡<Ô0€AÜØ#Ü#ÛBóDàlÙ-Ø(¨qÑ1Û;Ø ØÜ—l‘lô
$ð 
$r+   c            
      óž   ‡ — t        j                  dddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d	‰ d
œˆ fd„dd¬«      S )NrP   rZ   r3   r¼   ÚL1Loss_no_reduce_complexc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   r,  r…   s    €r)   r@   z/l1loss_no_reduce_complex_test.<locals>.<lambda>·  r.  r+   r/  c                  óP   — t        j                  dddt         j                  ¬«      S )NrP   rZ   r3   r¼   )r7   r—   Úcdoublero   r+   r)   r@   z/l1loss_no_reduce_complex_test.<locals>.<lambda>¹  s   € œŸ™ Q¨¨1´E·M±MÔB€ r+   r‹   r…   c                 óH   •— | ‰j                  | «      z
  j                  «       S rn   r5  rŽ   s     €r)   r@   z/l1loss_no_reduce_complex_test.<locals>.<lambda>»  r7  r+   TF)r�   r‘   r’   r“   r”   rG   rþ   r•   )r7   r—   r>  r˜   r{   r™   s   @r)   Úl1loss_no_reduce_complex_testr@  ²  sN   ø€ Ü�‰�A�q˜!¤5§=¡=Ô1€AÜØ+Ü#ÛBóDàlÙBØ(¨qÑ1Û;Ø Øô	ð 	r+   c                  ó¸   ‡ — t        j                  dt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nro   r¼   ÚL1Loss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   r,  r…   s    €r)   r@   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>Å  r.  r+   r/  c                  ó,   — t        j                  d«      S r  r2  ro   r+   r)   r@   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>Ç  ó   € œŸ™ R›€ r+   r‹   r…   c                 óH   •— | ‰j                  | «      z
  j                  «       S rn   r5  rŽ   s     €r)   r@   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>É  r7  r+   TFrý   r8  r™   s   @r)   Úl1loss_no_reduce_scalar_testrG  À  sQ   ø€ Ü�‰�BœeŸl™lÔ+€AÜØ*Ü#ÛBóDàlÙ(Ø(¨qÑ1Û;Ø ØÜ—l‘lô
$ð 
$r+   c                  ó¶   ‡— d} t        j                  | dt         j                  iŽŠt        dt	        ˆfd„«      d| d‰dœˆfd„d	d
t         j                  ¬«	      S )NrY   r½   ÚMSELoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úmse_lossr„   ©r=   Útargets    €r)   r@   z(mseloss_no_reduce_test.<locals>.<lambda>Õ  ó   ø€ ”a—j‘j  F§N¡N°1Ó$5ÀÔH€ r+   úWF::mse_loss(i, target.to(i.options()), F::MSELossFuncOptions().reduction(torch::kNone))r‹   rM  c                 ó,   •— | ‰z
  j                  d«      S ©NrP   ©Úpow©r=   r?   rN  s     €r)   r@   z(mseloss_no_reduce_test.<locals>.<lambda>Ù  ó   ø€  A¨¡J×#3Ñ#3°AÓ#6€ r+   TF©	r�   r‘   r’   rF   r”   rG   rþ   r•   rJ   r8  ©rF   rN  s    @r)   Úmseloss_no_reduce_testrY  Ï  sY   ø€ Ø€JÜ�[‰[˜*Ð9¬E¯L©LÑ9€FÜØ$Ü#ÛHóJàsØØ(°FÑ;Û6Ø ØÜ—l‘lô
$ð 
$r+   c                  óº   ‡— d} t        j                  | t         j                  ¬«      Št        dt	        ˆfd„«      d| d‰dœˆfd„d	d
t         j                  ¬«	      S )Nro   r¼   ÚMSELoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rK  rM  s    €r)   r@   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>å  rO  r+   rP  r‹   rM  c                 ó,   •— | ‰z
  j                  d«      S rR  rS  rU  s     €r)   r@   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>é  rV  r+   TFrW  r8  rX  s    @r)   Úmseloss_no_reduce_scalar_testr^  ß  sV   ø€ Ø€JÜ�[‰[˜¬5¯<©<Ô8€FÜØ+Ü#ÛHóJàsØØ(°FÑ;Û6Ø ØÜ—l‘lô
$ð 
$r+   c            
      ó(  ‡ ‡— t        t        j                  d«      j                  «       j	                  d«      j                  «       j                  «       «      ŠddiŠ t        dt        ˆ ˆfd„«      dd„ d	‰d
œˆ ˆfd„dt        j                  ¬«      S )Nrœ   r1   r   r€   ÚNLLLoss_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S ©Nr   r�   ©r‚   Únll_lossr„   Úlong©r=   rs   r9   s    €€r)   r@   z(nllloss_no_reduce_test.<locals>.<lambda>õ  ó*   ø€ ”a—j‘j  A§I¡I¨a£L×$5Ñ$5Ó$7À6È+ÑCVÔW€ r+   úpF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().reduction(torch::kNone))c                  óJ   — t        j                  dd«      j                  «       S ©Nrœ   r1   rõ   ro   r+   r)   r@   z(nllloss_no_reduce_test.<locals>.<lambda>ø  rö   r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS ©NÚNLLLoss©rû   r„   re  ©r=   r?   rs   r9   s     €€r)   r@   z(nllloss_no_reduce_test.<locals>.<lambda>ú  ó-   ø€ Ü˜yÑ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÑKÀFÑKð r+   Fr�   ©
r   r7   ÚemptyÚuniform_r   Úfloorre  r˜   r{   rf   ©rs   r9   s   @@r)   Únllloss_no_reduce_testrv  ï  s‚   ù€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AØ˜6Ð"€FÜØ$Ü#ÜWóYðgá1Ø(¨qÑ1ôLàÜ—l‘lô$ð $r+   c            
      ó*  ‡ ‡— t        t        j                  d«      j                  «       j	                  d«      j                  «       j                  «       «      ŠdddœŠ t        dt        ˆ ˆfd„«      dd	„ d
‰dœˆ ˆfd„dt        j                  ¬«      S )Nrœ   r1   rP   r€   ©Úignore_indexr   ÚNLLLoss_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S ©Nry  r   rx  ©r‚   rd  r„   re  ÚintÚstrrf  s    €€r)   r@   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  ó@   ø€ ”a—j‘j  A§I¡I¨a£L×$5Ñ$5Ó$7ÄcÈ&ÐQ_ÑJ`ÓFaÜ+.¨v°kÑ/BÓ+CôE€ r+   z€F::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(2).reduction(torch::kNone))c                  óJ   — t        j                  dd«      j                  «       S rj  rõ   ro   r+   r)   r@   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>
  rö   r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS rl  rn  ro  s     €€r)   r@   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  rp  r+   Fr�   rq  ru  s   @@r)   Ú#nllloss_no_reduce_ignore_index_testrƒ     s…   ù€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AØ45ÀFÑ#K€FÜØ1Ü#ôEóFðwá1Ø(¨qÑ1ôLàÜ—l‘lô$ð $r+   c            
      óX  ‡ ‡‡— t        t        j                  d«      j                  «       j	                  d«      j                  «       j                  «       «      Št        j                  d«      Šˆfd„Š t        dt        ˆ ˆfd„«      dd„ d‰‰d	œˆ ˆfd
„dt        j                  ¬«      S )Nrœ   r1   c                 ó,   •— ‰j                  | «      ddœS rÀ   ©r„   ©r=   r-   s    €r)   rs   z.nllloss_no_reduce_weights_test.<locals>.kwargs  ó   ø€ Ø Ÿ.™.¨Ó+¸&ÑAÐAr+   ÚNLLLoss_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rn   rc  rf  s    €€r)   r@   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  ó,   ø€ ”a—j‘j  A§I¡I¨a£L×$5Ñ$5Ó$7ÑE¹6À!»9ÑE€ r+   ú›F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone))c                  óh   — t        j                  dd«      j                  d«      j                  «       S ©Nrœ   r1   rA   ©r7   rŠ   Úaddr¬   ro   r+   r)   r@   z0nllloss_no_reduce_weights_test.<locals>.<lambda>   ó%   € œŸ™ B¨Ó+×/Ñ/°Ó5×9Ñ9Ó;€ r+   r‹   ©r=   r9   r-   c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rl  rn  ro  s     €€r)   r@   z0nllloss_no_reduce_weights_test.<locals>.<lambda>"  ó1   ø€ Ü˜yÑ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÑNÁFÈ1ÃIÑNð r+   Fr�   ©r   r7   rr  rs  r   rt  re  rŠ   r˜   r{   rf   ©rs   r9   r-   s   @@@r)   Únllloss_no_reduce_weights_testr—    s‘   ú€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AÜ�Z‰Z˜‹^€FôBô Ø,Ü#ÜEóGð_ñ <Ø(¨q¸FÑCôOàÜ—l‘lô$ð $r+   c            
      óX  ‡ ‡‡— t        t        j                  d«      j                  «       j	                  d«      j                  «       j                  «       «      Št        j                  d«      Šˆfd„Š t        dt        ˆ ˆfd„«      dd„ d‰‰d	œˆ ˆfd
„dt        j                  ¬«      S )Nrœ   r1   c                 ó.   •— ‰j                  | «      dddœS )Nr€   rP   ©r-   r   ry  r†  r‡  s    €r)   rs   z;nllloss_no_reduce_weights_ignore_index_test.<locals>.kwargs,  s   ø€ Ø Ÿ.™.¨Ó+¸&Ø !ñ#ð 	#r+   Ú&NLLLoss_no_reduce_weights_ignore_indexc                 óŒ   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| j                  «      ¤ŽS rn   )r‚   rd  r„   re  Údatarf  s    €€r)   r@   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>3  s0   ø€ ”a—j‘j  A§I¡I¨a£L×$5Ñ$5Ó$7ÑJ¹6À!Ç&Á&»>ÑJ€ r+   z«F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone).ignore_index(2))c                  óh   — t        j                  dd«      j                  d«      j                  «       S rŽ  r�  ro   r+   r)   r@   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>7  r‘  r+   r‹   r’  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rl  rn  ro  s     €€r)   r@   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>9  r”  r+   Fr�   r•  r–  s   @@@r)   Ú+nllloss_no_reduce_weights_ignore_index_testr   (  s�   ú€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AÜ�Z‰Z˜‹^€Fô#ô Ø9Ü#ÜJóLðoñ <Ø(¨q¸FÑCôOàÜ—l‘lô$ð $r+   c            
      óØ  ‡ ‡‡— t        t        j                  d«      j                  «       j	                  d«      j                  «       j                  «       «      Št        j                  d«      Šˆfd„Š t        dt        ˆ ˆfd„«      dt        j                  ddt        j                  ¬«      j                  d«      j                  «       d	‰‰d
œˆ ˆfd„dt        j                  ¬«      S )Nrœ   r1   c                 ó.   •— ‰j                  | «      dddœS )Nr€   r6   rš  r†  r‡  s    €r)   rs   z?nllloss_no_reduce_weights_ignore_index_neg_test.<locals>.kwargsC  s   ø€ Ø Ÿ.™.¨Ó+¸&Ø "ñ$ð 	$r+   Ú*NLLLoss_no_reduce_weights_ignore_index_negc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rn   rc  rf  s    €€r)   r@   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>J  r‹  r+   z¬F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone).ignore_index(-1))r¼   rA   r‹   r’  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rl  rn  ro  s     €€r)   r@   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>P  r”  r+   F)r�   r‘   r’   Úinputr”   rG   r•   rJ   )r   r7   rr  rs  r   rt  re  rŠ   r˜   r{   rf   r�  r¬   r–  s   @@@r)   Ú/nllloss_no_reduce_weights_ignore_index_neg_testr§  ?  sµ   ú€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AÜ�Z‰Z˜‹^€Fô$ô Ø=Ü#ÜEóGðpô �j‰j˜˜R¤u§|¡|Ô4×8Ñ8¸Ó>×BÑBÓDØ(¨q¸FÑCôOàÜ—l‘lô$ð $r+   c            
      ó  ‡ ‡— t        t        j                  ddd«      j                  d«      j	                  «       j                  «       «      ŠddiŠ t        dt        ˆ ˆfd„«      dd	„ d
‰dœˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   r   r€   ÚNLLLoss2d_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S rb  rc  rf  s    €€r)   r@   z*nllloss2d_no_reduce_test.<locals>.<lambda>\  rg  r+   rh  c                  óN   — t        j                  dddd«      j                  «       S ©NrP   rZ   rU   rõ   ro   r+   r)   r@   z*nllloss2d_no_reduce_test.<locals>.<lambda>_  ó   € œŸ™ A q¨!¨QÓ/×3Ñ3Ó5€ r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS ©NÚ	NLLLossNdrn  ro  s     €€r)   r@   z*nllloss2d_no_reduce_test.<locals>.<lambda>a  ó-   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|×/@Ñ/@Ó/BÑMÀfÑMð r+   Fr�   ©	r   r7   rŠ   r   rt  re  r˜   r{   rf   ru  s   @@r)   Únllloss2d_no_reduce_testr³  V  s~   ù€ Ü”—‘˜A˜q !Ó$×(Ñ(¨Ó+×1Ñ1Ó3×8Ñ8Ó:Ó;€AØ˜6Ð"€FÜØ&Ü#ÜWóYðgá5Ø(¨qÑ1ôNàÜ—l‘lô$ð $r+   c            
      ó  ‡ ‡— t        t        j                  ddd«      j                  d«      j	                  «       j                  «       «      ŠdddœŠ t        dt        ˆ ˆfd„«      d	d
„ d‰dœˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   r5   r€   rx  Ú NLLLoss2d_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S r|  r}  rf  s    €€r)   r@   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>m  r€  r+   ú€F::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(1).reduction(torch::kNone))c                  óN   — t        j                  dddd«      j                  «       S r¬  rõ   ro   r+   r)   r@   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>q  r­  r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS r¯  rn  ro  s     €€r)   r@   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>s  r±  r+   Fr�   r²  ru  s   @@r)   Ú%nllloss2d_no_reduce_ignore_index_testrº  g  s�   ù€ Ü”—‘˜A˜q !Ó$×(Ñ(¨Ó+×1Ñ1Ó3×8Ñ8Ó:Ó;€AØ45ÀFÑ#K€FÜØ3Ü#ôEóFðwá5Ø(¨qÑ1ôNàÜ—l‘lô$ð $r+   c            
      ó@  ‡ ‡‡— t        t        j                  ddd«      j                  d«      j	                  «       j                  «       «      Št        j                  d«      Šˆfd„Š t        dt        ˆ ˆfd„«      dd„ d	‰‰d
œˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   c                 ó,   •— ‰j                  | «      ddœS rÀ   r†  r‡  s    €r)   rs   z0nllloss2d_no_reduce_weights_test.<locals>.kwargs}  rˆ  r+   ÚNLLLoss2d_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rn   rc  rf  s    €€r)   r@   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>ƒ  r‹  r+   rŒ  c                  óN   — t        j                  dddd«      j                  «       S r¬  rõ   ro   r+   r)   r@   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>‡  r­  r+   r‹   r’  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS r¯  rn  ro  s     €€r)   r@   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>‰  ó1   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|×/@Ñ/@Ó/BÑPÁfÈQÃiÑPð r+   Fr�   r²  r–  s   @@@r)   Ú nllloss2d_no_reduce_weights_testrÂ  y  s�   ú€ Ü”—‘˜A˜q !Ó$×(Ñ(¨Ó+×1Ñ1Ó3×8Ñ8Ó:Ó;€AÜ�Z‰Z˜‹]€FôBô Ø.Ü#ÜEóGð_ñ 6Ø(¨q¸FÑCôQàÜ—l‘lô$ð $r+   c            
      ó  ‡ ‡— t        t        j                  ddddd«      j                  d«      j	                  «       j                  «       «      ŠddiŠ t        dt        ˆ ˆfd„«      dd	„ d
‰dœˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   r   r€   ÚNLLLossNd_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S rb  rc  rf  s    €€r)   r@   z*nlllossNd_no_reduce_test.<locals>.<lambda>•  rg  r+   rh  c                  óR   — t        j                  dddddd«      j                  «       S r¬  rõ   ro   r+   r)   r@   z*nlllossNd_no_reduce_test.<locals>.<lambda>˜  ó"   € œŸ™ A q¨!¨Q°°1Ó5×9Ñ9Ó;€ r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS r¯  rn  ro  s     €€r)   r@   z*nlllossNd_no_reduce_test.<locals>.<lambda>š  r±  r+   Fr�   r²  ru  s   @@r)   ÚnlllossNd_no_reduce_testrÉ  �  s‚   ù€ Ü”—‘˜A˜q ! Q¨Ó*×.Ñ.¨qÓ1×7Ñ7Ó9×>Ñ>Ó@ÓA€AØ˜6Ð"€FÜØ&Ü#ÜWóYðgá;Ø(¨qÑ1ôNàÜ—l‘lô$ð $r+   c            
      ó  ‡ ‡— t        t        j                  ddddd«      j                  d«      j	                  «       j                  «       «      ŠdddœŠ t        dt        ˆ ˆfd„«      d	d
„ d‰dœˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   r5   r€   rx  Ú NLLLossNd_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S r|  r}  rf  s    €€r)   r@   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>¦  r€  r+   r·  c                  óR   — t        j                  dddddd«      j                  «       S r¬  rõ   ro   r+   r)   r@   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>ª  rÇ  r+   r‹   r…   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS r¯  rn  ro  s     €€r)   r@   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>¬  r±  r+   Fr�   r²  ru  s   @@r)   Ú%nlllossNd_no_reduce_ignore_index_testrÏ     s…   ù€ Ü”—‘˜A˜q ! Q¨Ó*×.Ñ.¨qÓ1×7Ñ7Ó9×>Ñ>Ó@ÓA€AØ45ÀFÑ#K€FÜØ3Ü#ôEóFðwá;Ø(¨qÑ1ôNàÜ—l‘lô$ð $r+   c            
      óD  ‡ ‡‡— t        t        j                  ddddd«      j                  d«      j	                  «       j                  «       «      Št        j                  d«      Šˆfd„Š t        dt        ˆ ˆfd„«      dd„ d	‰‰d
œˆ ˆfd„dt        j                  ¬«      S )NrP   rU   rZ   c                 ó,   •— ‰j                  | «      ddœS rÀ   r†  r‡  s    €r)   rs   z0nlllossNd_no_reduce_weights_test.<locals>.kwargs¶  rˆ  r+   ÚNLLLossNd_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rn   rc  rf  s    €€r)   r@   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>¼  r‹  r+   rŒ  c                  óR   — t        j                  dddddd«      j                  «       S r¬  rõ   ro   r+   r)   r@   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>À  rÇ  r+   r‹   r’  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS r¯  rn  ro  s     €€r)   r@   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>Â  rÁ  r+   Fr�   r²  r–  s   @@@r)   Ú nlllossNd_no_reduce_weights_testrÖ  ²  s‘   ú€ Ü”—‘˜A˜q ! Q¨Ó*×.Ñ.¨qÓ1×7Ñ7Ó9×>Ñ>Ó@ÓA€AÜ�Z‰Z˜‹]€FôBô Ø.Ü#ÜEóGð_ñ <Ø(¨q¸FÑCôQàÜ—l‘lô$ð $r+   c                  ó¼   ‡ — t        j                  dddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt         j                  ¬«	      S )NrP   rZ   r3   r¼   ÚSmoothL1Loss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úsmooth_l1_lossr„   r…   s    €r)   r@   z-smoothl1loss_no_reduce_test.<locals>.<lambda>Í  ó   ø€ ”a×&Ñ& q¨!¯)©)°A«,À&ÔI€ r+   újF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone))c                  ó0   — t        j                  ddd«      S r1  r2  ro   r+   r)   r@   z-smoothl1loss_no_reduce_test.<locals>.<lambda>Ð  r3  r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S ©NÚSmoothL1Lossr€   r�   rú   rŽ   s     €r)   r@   z-smoothl1loss_no_reduce_test.<locals>.<lambda>Ò  ó!   ø€ Ü˜~Ñ.¨q°!·)±)¸A³,È&ÔQð r+   TFrý   r8  r™   s   @r)   Úsmoothl1loss_no_reduce_testrã  È  s[   ø€ Ü�‰�A�q˜!¤5§<¡<Ô0€AÜØ)Ü#ÛIóKð[á-Ø(¨qÑ1óRà ØÜ—l‘lô$ð $r+   c                  ó¸   ‡ — t        j                  dt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )Nro   r¼   ÚSmoothL1Loss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   rÚ  r…   s    €r)   r@   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>Þ  rÜ  r+   rÝ  c                  ó,   — t        j                  d«      S r  r2  ro   r+   r)   r@   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>á  rE  r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S rà  rú   rŽ   s     €r)   r@   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>ã  râ  r+   TFrý   r8  r™   s   @r)   Ú"smoothl1loss_no_reduce_scalar_testré  Ù  sW   ø€ Ü�‰�BœeŸl™lÔ+€AÜØ0Ü#ÛIóKð[á(Ø(¨qÑ1óRà ØÜ—l‘lô$ð $r+   c                  ó¼   ‡ — t        j                  dddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt         j                  ¬«	      S )NrP   rZ   r3   r¼   ÚSmoothL1Loss_betac                 óT   •— t        j                  | ‰j                  | «      dd¬«      S )Nr€   ç      à?©r   ÚbetarÚ  r…   s    €r)   r@   z(smoothl1loss_beta_test.<locals>.<lambda>ï  s    ø€ ”a×&Ñ& q¨!¯)©)°A«,À&ÈsÔS€ r+   zoF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0.5)c                  ó0   — t        j                  ddd«      S r1  r2  ro   r+   r)   r@   z(smoothl1loss_beta_test.<locals>.<lambda>ò  r3  r+   r‹   r…   c                 óF   •— t        d   | ‰j                  | «      dd¬«      S )Nrá  r€   rí  rî  rú   rŽ   s     €r)   r@   z(smoothl1loss_beta_test.<locals>.<lambda>ô  s$   ø€ Ü˜~Ñ.¨q°!·)±)¸A³,È&ÐWZÔ[ð r+   TFrý   r8  r™   s   @r)   Úsmoothl1loss_beta_testrò  ê  s[   ø€ Ü�‰�A�q˜!¤5§<¡<Ô0€AÜØ$Ü#ÛSóUð`á-Ø(¨qÑ1ó\à ØÜ—l‘lô$ð $r+   c                  ó¼   ‡ — t        j                  dddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt         j                  ¬«	      S )NrP   rZ   r3   r¼   ÚSmoothL1Loss_zero_betac                 óT   •— t        j                  | ‰j                  | «      dd¬«      S )Nr€   r   rî  rÚ  r…   s    €r)   r@   z-smoothl1loss_zero_beta_test.<locals>.<lambda>   s    ø€ ”a×&Ñ& q¨!¯)©)°A«,À&ÈqÔQ€ r+   zmF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0)c                  ó0   — t        j                  ddd«      S r1  r2  ro   r+   r)   r@   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  r3  r+   r‹   r…   c                 óF   •— t        d   | ‰j                  | «      dd¬«      S )Nrá  r€   r   rî  rú   rŽ   s     €r)   r@   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  s$   ø€ Ü˜~Ñ.¨q°!·)±)¸A³,È&ÐWXÔYð r+   TFrý   r8  r™   s   @r)   Úsmoothl1loss_zero_beta_testrø  û  s[   ø€ Ü�‰�A�q˜!¤5§<¡<Ô0€AÜØ)Ü#ÛQóSð^á-Ø(¨qÑ1óZà ØÜ—l‘lô$ð $r+   c                  óœ   ‡ — t        j                  ddd«      Š t        dt        ˆ fd„«      dd„ d‰ d	œˆ fd
„ddt         j                  ¬«	      S )NrP   rZ   r3   ÚHuberLoss_deltac                 óT   •— t        j                  | ‰j                  | «      dd¬«      S )Nr€   rí  ©r   Údelta)r‚   Ú
huber_lossr„   r…   s    €r)   r@   z&huberloss_delta_test.<locals>.<lambda>  s   ø€ ”a—l‘l 1 a§i¡i°£l¸fÈCÔP€ r+   znF::huber_loss(
            i, t.to(i.options()), F::HuberLossFuncOptions().reduction(torch::kNone).delta(0.5))c                  ó0   — t        j                  ddd«      S r1  r2  ro   r+   r)   r@   z&huberloss_delta_test.<locals>.<lambda>  r3  r+   r‹   r…   c                 óF   •— t        d   | ‰j                  | «      dd¬«      S )NÚ	HuberLossr€   rí  rü  rú   rŽ   s     €r)   r@   z&huberloss_delta_test.<locals>.<lambda>  s$   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|ÀvÐUXÔYð r+   TFrý   r–   r™   s   @r)   Úhuberloss_delta_testr    sU   ø€ Ü�‰�A�q˜!Ó€AÜØ"Ü#ÛPóRðcá-Ø(¨qÑ1óZà ØÜ—l‘lô$ð $r+   c                  ó˜   ‡ — t        j                  d«      j                  «       Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd„d	d
d
¬«	      S )Nro   Ú!MultiLabelMarginLoss_0d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   ©r‚   Úmultilabel_margin_lossr„   re  r…   s    €r)   r@   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>"  ó(   ø€ ”a×.Ñ.¨q°!·)±)¸A³,×2CÑ2CÓ2EÐQWÔX€ r+   ú‹F::multilabel_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultilabelMarginLossFuncOptions().reduction(torch::kNone))c                  ó,   — t        j                  d«      S r  r2  ro   r+   r)   r@   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>%  rE  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S ©NÚMultiLabelMarginLossr€   r�   ©rû   r�  r„   re  rŽ   s     €r)   r@   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>'  ó1   ø€ ÜÐ5Ñ6°q¸!¿&¹&¿.¹.ÈÓ:K×:PÑ:PÓ:RÐ^dÔeð r+   TF)	r�   r‘   r’   r“   r”   rG   Úcheck_sum_reductionrb   r•   )r7   Úzerosre  r˜   r{   r™   s   @r)   Ú&multilabelmarginloss_0d_no_reduce_testr    sU   ø€ Ü�‰�B‹×ÑÓ€AÜØ4Ü#ÛXóZðtá(Ø(¨qÑ1ófà ØØôð r+   c                  ó  ‡ — t        t        j                  d«      j                  d«      j	                  «       j                  «       «      Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd„d	d
d
t        j                  ¬«
      S )Nr1   Ú!MultiLabelMarginLoss_1d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   r  r…   s    €r)   r@   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>3  r  r+   r	  c                  ó,   — t        j                  d«      S rˆ   r2  ro   r+   r)   r@   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>6  rE  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S r  r  rŽ   s     €r)   r@   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>8  r  r+   TF©
r�   r‘   r’   r“   r”   rG   r  rb   r•   rJ   r²  r™   s   @r)   Ú&multilabelmarginloss_1d_no_reduce_testr  .  su   ø€ Ü”—‘˜B“×#Ñ# BÓ'×-Ñ-Ó/×4Ñ4Ó6Ó7€AÜØ4Ü#ÛXóZðtá(Ø(¨qÑ1ófà ØØÜ—l‘lô$ð $r+   c                  óL  ‡ — t        t        j                  t        j                  dd«      j	                  d«      j                  d«      j                  «       j                  «       d¬«      «      Š t        dt        ˆ fd„«      d	d
„ d‰ dœˆ fd„dddt        j                  ¬«
      S )NrU   r1   g      à¿é   r6   ©ÚminÚMultiLabelMarginLoss_index_negc                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   r  r…   s    €r)   r@   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>E  r  r+   r	  c                  ó.   — t        j                  dd«      S ©NrU   r1   r2  ro   r+   r)   r@   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>H  ó   € œŸ™ Q¨Ó+€ r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S r  r  rŽ   s     €r)   r@   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>J  r  r+   TFr  )r   r7   ÚclamprŠ   r�  r   rt  re  r˜   r{   rf   r™   s   @r)   Ú#multilabelmarginloss_index_neg_testr%  @  s�   ø€ Ü”—‘œUŸZ™Z¨¨2Ó.×2Ñ2°3Ó7×;Ñ;¸BÓ?×EÑEÓG×LÑLÓNÐTVÔWÓX€AÜØ1Ü#ÛXóZðtá+Ø(¨qÑ1ófà ØØÜ—l‘lô$ð $r+   c                  ó  ‡ — t        t        j                  dd«      j                  d«      j	                  «       j                  «       «      Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt        j                  ¬«
      S )NrU   r1   ÚMultiLabelMarginLoss_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   r  r…   s    €r)   r@   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>W  r  r+   r	  c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>Z  r"  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S r  r  rŽ   s     €r)   r@   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>\  r  r+   TFr  r²  r™   s   @r)   Ú#multilabelmarginloss_no_reduce_testr+  R  sx   ø€ Ü”—‘˜A˜rÓ"×&Ñ& rÓ*×0Ñ0Ó2×7Ñ7Ó9Ó:€AÜØ1Ü#ÛXóZðtá+Ø(¨qÑ1ófà ØØÜ—l‘lô$ð $r+   c                  ó>  ‡ — t        t        j                  d«      j                  d«      j	                  t        j
                  «      j                  d«      j                  d«      «      Š t        dt        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt        j
                  ¬«	      S )Nr1   r   rP   r5   ÚHingeEmbeddingLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úhinge_embedding_lossr„   r…   s    €r)   r@   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>i  r¡   r+   zvF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().reduction(torch::kNone))c                  ó,   — t        j                  d«      S rˆ   r2  ro   r+   r)   r@   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>l  rE  r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S )NÚHingeEmbeddingLossr€   r�   rú   rŽ   s     €r)   r@   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>n  s#   ø€ ÜÐ3Ñ4°Q¸¿	¹	À!»ÐPVÔWð r+   TF©	r�   r‘   r’   r“   r”   rG   r  r•   rJ   ©
r   r7   r—   r°   r±   rf   Úmul_Úsubr˜   r{   r™   s   @r)   Ú!hingeembeddingloss_no_reduce_testr8  d  s…   ø€ Ü”—‘˜R“×#Ñ# AÓ&×)Ñ)¬%¯,©,Ó7×<Ñ<¸QÓ?×CÑCÀAÓFÓG€AÜØ/Ü#ÛOóQðaá(Ø(¨qÑ1óXà ØÜ—l‘lô$ð $r+   c                  ó>  ‡ — t        t        j                  d«      j                  d«      j	                  t        j
                  «      j                  d«      j                  d«      «      Š t        dt        ˆ fd„«      dd„ d	‰ d
œˆ fd„ddt        j
                  ¬«	      S )Nr1   r   rP   r5   Ú#HingeEmbeddingLoss_margin_no_reducec                 óT   •— t        j                  | ‰j                  | «      dd¬«      S ©Nrí  r€   ©Úmarginr   r/  r…   s    €r)   r@   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>z  s!   ø€ ”a×,Ñ,¨Q°·	±	¸!³ÀSÐTZÔ[€ r+   z‚F::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().margin(0.5).reduction(torch::kNone))c                  ó,   — t        j                  d«      S rˆ   r2  ro   r+   r)   r@   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>}  rE  r+   r‹   r…   c                 óF   •— t        d   | ‰j                  | «      dd¬«      S )Nr3  rí  r€   r=  rú   rŽ   s     €r)   r@   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>  s%   ø€ ÜÐ3Ñ4°Q¸¿	¹	À!»ÈSÐ\bÔcð r+   TFr4  r5  r™   s   @r)   Ú(hingeembeddingloss_margin_no_reduce_testrA  u  s…   ø€ Ü”—‘˜R“×#Ñ# AÓ&×)Ñ)¬%¯,©,Ó7×<Ñ<¸QÓ?×CÑCÀAÓFÓG€AÜØ6Ü#Û[ó]ðmá(Ø(¨qÑ1ódà ØÜ—l‘lô$ð $r+   c                  óº   ‡ — t        j                  ddt         j                  ¬«      Š t        dt	        ˆ fd„«      dd„ d‰ dœˆ fd	„d
dt         j                  ¬«	      S )NrU   r¼   ÚSoftMarginLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   )r‚   Úsoft_margin_lossr„   r…   s    €r)   r@   z/softmarginloss_no_reduce_test.<locals>.<lambda>‹  r†   r+   znF::soft_margin_loss(
            i, t.to(i.options()), F::SoftMarginLossFuncOptions().reduction(torch::kNone))c                  ó.   — t        j                  dd«      S )NrU   r2  ro   r+   r)   r@   z/softmarginloss_no_reduce_test.<locals>.<lambda>Ž  s   € œŸ™ Q¨Ó*€ r+   r‹   r…   c                 óD   •— t        d   | ‰j                  | «      d¬«      S )NÚSoftMarginLossr€   r�   rú   rŽ   s     €r)   r@   z/softmarginloss_no_reduce_test.<locals>.<lambda>�  s"   ø€ ÜÐ/Ñ0°°A·I±I¸a³LÈFÔSð r+   TFrý   r8  r™   s   @r)   Úsoftmarginloss_no_reduce_testrI  †  sY   ø€ Ü�‰�A�q¤§¡Ô-€AÜØ+Ü#ÛKóMð]á*Ø(¨qÑ1óTà ØÜ—l‘lô$ð $r+   c                  óÔ   ‡ — t        j                  dd«      j                  d«      j                  «       Š t	        dt        ˆ fd„«      dd„ d‰ d	œˆ fd
„ddt         j                  ¬«	      S )NrU   r1   rP   Ú"MultiLabelSoftMarginLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r   ©r‚   Úmultilabel_soft_margin_lossr„   r…   s    €r)   r@   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>œ  s   ø€ ”a×3Ñ3°A°q·y±yÀ³|ÈvÔV€ r+   zƒF::multilabel_soft_margin_loss(
            i, t.to(i.options()), F::MultilabelSoftMarginLossFuncOptions().reduction(torch::kNone))c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>Ÿ  r"  r+   r‹   r…   c                 óØ   •— ‰| j                  «       j                  «       z  d‰z
  |  j                  «       j                  «       z  z    j                  d¬«      | j                  d«      z  S ©Nr5   ©Údim©rÙ   r¬   Úsumrg   rŽ   s     €r)   r@   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>¡  s`   ø€ Ø�1—9‘9“;—?‘?Ó$Ñ$¨¨A©°1°"·±³×1CÑ1CÓ1EÑ'EÑEÐF×KÑKÐPQÐKÓRÐUV×U[ÑU[Ð\]ÓU^Ñ^ð r+   FrÛ   ©r7   rŠ   r   rt  r˜   r{   rf   r™   s   @r)   Ú'multilabelsoftmarginloss_no_reduce_testrW  —  sg   ø€ Ü�
‰
�1�bÓ×Ñ˜aÓ ×&Ñ&Ó(€AÜØ5Ü#ÛVóXðgá+Ø(¨qÑ1ó_àØÜ—l‘lô$ð $r+   c                  ó  ‡ ‡— t        j                  dd«      j                  d«      j                  «       Š t        j                  d«      Št	        dt        ˆ ˆfd„«      dd„ d‰ ‰d	œˆ ˆfd
„dddt         j                  ¬«
      S )NrU   r1   rP   Ú*MultiLabelSoftMarginLoss_weights_no_reducec                 ór   •— t        j                  | ‰j                  | «      ‰j                  | «      d¬«      S rÀ   rM  rÂ   s    €€r)   r@   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>®  s.   ø€ ”a×3Ñ3°A°q·y±yÀ³|Ø;B¿?¹?È1Ó;MÐY_ôa€ r+   z¯F::multilabel_soft_margin_loss(
            i, t.to(i.options()),
            F::MultilabelSoftMarginLossFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>³  r"  r+   r‹   rÂ   c                 óÞ   •— ‰| j                  «       j                  «       z  d‰z
  |  j                  «       j                  «       z  z    ‰z  j                  d¬«      | j                  d«      z  S rQ  rT  rÎ   s     €€r)   r@   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>µ  se   ø€ Ø�1—9‘9“;—?‘?Ó$Ñ$¨¨A©°1°"·±³×1CÑ1CÓ1EÑ'EÑEÐFÈÑP×UÑUÐZ[ÐUÓ\Ð_`×_eÑ_eÐfgÓ_hÑhð r+   TFr  rV  rÇ   s   @@r)   Ú/multilabelsoftmarginloss_weights_no_reduce_testr]  ¨  s~   ù€ Ü�
‰
�1�bÓ×Ñ˜aÓ ×&Ñ&Ó(€AÜ�j‰j˜‹n€GÜØ=Ü#ôaóbðqñ ,Ø(¨q¸WÑEôià ØØÜ—l‘lô$ð $r+   c                  óð   ‡ — t        j                  d«      j                  d«      j                  «       j	                  «       Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt         j                  ¬«
      S )NrU   r2   ÚMultiMarginLoss_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   ©r‚   Úmulti_margin_lossr„   re  r…   s    €r)   r@   z0multimarginloss_no_reduce_test.<locals>.<lambda>Â  ó'   ø€ ”a×)Ñ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÈFÔS€ r+   ú�F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().reduction(torch::kNone))c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   z0multimarginloss_no_reduce_test.<locals>.<lambda>Å  r"  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S ©NÚMultiMarginLossr€   r�   r  rŽ   s     €r)   r@   z0multimarginloss_no_reduce_test.<locals>.<lambda>Ç  ó1   ø€ ÜÐ0Ñ1°!°Q·V±V·^±^ÀAÓ5F×5KÑ5KÓ5MÐY_Ô`ð r+   TFr  ©r7   rŠ   r   rt  re  r˜   r{   rf   r™   s   @r)   Úmultimarginloss_no_reduce_testrk  ½  sp   ø€ Ü�
‰
�1‹×Ñ˜!Ó×"Ñ"Ó$×)Ñ)Ó+€AÜØ,Ü#ÛSóUðoá+Ø(¨qÑ1óaà ØØÜ—l‘lô$ð $r+   c                  óð   ‡ — t        j                  d«      j                  d«      j                  «       j	                  «       Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt         j                  ¬«
      S )Nr5   r2   ÚMultiMarginLoss_1d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   ra  r…   s    €r)   r@   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>Ô  rc  r+   rd  c                  ó,   — t        j                  d«      S rˆ   r2  ro   r+   r)   r@   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>×  rE  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S rg  r  rŽ   s     €r)   r@   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>Ù  ri  r+   TFr  rj  r™   s   @r)   Ú!multimarginloss_1d_no_reduce_testrq  Ï  sp   ø€ Ü�
‰
�1‹×Ñ˜!Ó×"Ñ"Ó$×)Ñ)Ó+€AÜØ/Ü#ÛSóUðoá(Ø(¨qÑ1óaà ØØÜ—l‘lô$ð $r+   c                  óð   ‡ — t        j                  d«      j                  d«      j                  «       j	                  «       Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt         j                  ¬«
      S )Nro   r2   Ú,multimarginloss_1d_input_0d_target_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r   ra  r…   s    €r)   r@   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>æ  rc  r+   rd  c                  ó,   — t        j                  d«      S rˆ   r2  ro   r+   r)   r@   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>é  rE  r+   r‹   r…   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S rg  r  rŽ   s     €r)   r@   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>ë  ri  r+   TFr  rj  r™   s   @r)   Ú1multimarginloss_1d_input_0d_target_no_reduce_testrw  á  sp   ø€ Ü�
‰
�2‹×Ñ˜1Ó×#Ñ#Ó%×*Ñ*Ó,€AÜØ?Ü#ÛSóUðoá(Ø(¨qÑ1óaà ØØÜ—l‘lô$ð $r+   c                  óð   ‡ — t        j                  d«      j                  d«      j                  «       j	                  «       Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt         j                  ¬«
      S )NrU   r2   ÚMultiMarginLoss_p_no_reducec                 óp   •— t        j                  | ‰j                  | «      j                  «       dd¬«      S )NrP   r€   ©r>   r   ra  r…   s    €r)   r@   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>ø  s*   ø€ ”a×)Ñ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÀAÐQWÔX€ r+   z†F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().p(2).reduction(torch::kNone))c                  óN   — t        j                  dd«      j                  dd«      S )NrU   r1   rA   g®Gáz®ï?)r7   r—   r¨   ro   r+   r)   r@   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>û  s   € œŸ™ Q¨Ó+×2Ñ2°4¸ÓB€ r+   r‹   r…   c                 óv   •— t        d   | ‰j                  j                  | «      j                  «       dd¬«      S )Nrh  rP   r€   r{  r  rŽ   s     €r)   r@   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>ý  s4   ø€ ÜÐ0Ñ1°!°Q·V±V·^±^ÀAÓ5F×5KÑ5KÓ5MÐQRÐ^dÔeð r+   TFr  rj  r™   s   @r)   Ú multimarginloss_p_no_reduce_testr~  ó  sp   ø€ Ü�
‰
�1‹×Ñ˜!Ó×"Ñ"Ó$×)Ñ)Ó+€AÜØ.Ü#ÛXóZðtáBØ(¨qÑ1ófà ØØÜ—l‘lô$ð $r+   c                  óð   ‡ — t        j                  d«      j                  d«      j                  «       j	                  «       Š t        dt        ˆ fd„«      dd„ d‰ dœˆ fd	„d
ddt         j                  ¬«
      S )NrU   r2   Ú MultiMarginLoss_margin_no_reducec                 óp   •— t        j                  | ‰j                  | «      j                  «       dd¬«      S r<  ra  r…   s    €r)   r@   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>
  s*   ø€ ”a×)Ñ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÈÐX^Ô_€ r+   z™F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::MultiMarginLossFuncOptions().margin(0.5).reduction(torch::kNone))c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  r"  r+   r‹   r…   c                 óv   •— t        d   | ‰j                  j                  | «      j                  «       dd¬«      S )Nrh  rí  r€   r=  r  rŽ   s     €r)   r@   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  s6   ø€ ÜÐ0Ñ1°!°Q·V±V·^±^ÀAÓ5F×5KÑ5KÓ5MØ9<ÈôPð r+   TFr  rj  r™   s   @r)   Ú%multimarginloss_margin_no_reduce_testr„    st   ø€ Ü�
‰
�1‹×Ñ˜!Ó×"Ñ"Ó$×)Ñ)Ó+€AÜØ3Ü#Û_óaðTñ ,Ø(¨qÑ1óPð !ØØÜ—l‘lô$ð $r+   c                  óB  ‡ ‡— t        j                  d«      j                  d«      j                  «       j	                  «       Š t        j                  dt         j
                  ¬«      Št        dt        ˆ ˆfd„«      dd„ d	‰ ‰d
œˆ ˆfd„dddt         j
                  ¬«
      S )NrU   r2   r1   r¼   Ú!MultiMarginLoss_weights_no_reducec                 óŽ   •— t        j                  | ‰j                  | «      j                  «       ‰j                  | «      d¬«      S rÀ   ra  rÂ   s    €€r)   r@   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  s6   ø€ ”a×)Ñ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÈÏÉÐYZÓI[Ø4:ô<€ r+   z­F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::MultiMarginLossFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  ó.   — t        j                  dd«      S r!  r2  ro   r+   r)   r@   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>$  r"  r+   r‹   rÂ   c                 óv   •— t        d   | ‰j                  j                  | «      j                  «       ‰d¬«      S )Nrh  r€   rÁ   r  rÎ   s     €€r)   r@   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>&  s6   ø€ ÜÐ0Ñ1°!°Q·V±V·^±^ÀAÓ5F×5KÑ5KÓ5MØ9@ÈFôTð r+   TFr  )r7   rŠ   r   rt  re  rf   r˜   r{   rÇ   s   @@r)   Ú&multimarginloss_weights_no_reduce_testrŠ    s‹   ù€ Ü�
‰
�1‹×Ñ˜!Ó×"Ñ"Ó$×)Ñ)Ó+€AÜ�j‰j˜¤5§<¡<Ô0€GÜØ4Ü#ô<ó=ðhñ ,Ø(¨q¸WÑEôTð !ØØÜ—l‘lô!$ð $r+   c                 ó¾   — d„ } || «      }t        |t        j                  «      r|gn|}t        «       5   ||Ž j	                  d«      cddd«       S # 1 sw Y   yxY w)zÕReference function for modules supporting no batch dimensions.

    The module is passed the input and target in batched form with a single item.
    The output is squeezed to compare with the no-batch input.
    c                 ó˜   — t        | t        t        f«      r| D �cg c]  }|j                  d«      ‘Œ c}S | j                  d«      S c c}w rM   ©Ú
isinstanceÚlistÚtupleÚ	unsqueeze©Úinpr9   s     r)   Úunsqueeze_inpz0single_batch_reference_fn.<locals>.unsqueeze_inp5  ó=   € Ü�cœD¤%˜=Ô)Ø,/Ö0 q�A—K‘K •NÒ0Ð0Ø�}‰}˜QÓÐùò 1ó   ›Ar   N)rŽ  r7   ÚTensorr   Úsqueeze)r¦  Ú
parametersÚmoduler”  Úsingle_batch_inputs        r)   Úsingle_batch_reference_fnrœ  /  sa   € ò ñ
 ' uÓ-ÐÜ1;Ð<NÔPU×P\ÑP\Ô1]Ð,Ñ-ÐcuÐÜ	Ó	ñ 6ÙÐ)Ð*×2Ñ2°1Ó5÷6÷ 6ò 6ús   µAÁAc                  ó=  — t        j                  «        g t        «       ‘t        «       ‘t	        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t        «       ‘t!        «       ‘t#        «       ‘t%        «       ‘t'        «       ‘t)        «       ‘t+        «       ‘t-        «       ‘t/        «       ‘t1        «       ‘t3        «       ‘t5        «       ‘t7        «       ‘t9        «       ‘t;        «       ‘t=        «       ‘t?        «       ‘tA        «       ‘tC        «       ‘tE        «       ‘tG        «       ‘tI        «       ‘tK        «       ‘tM        «       ‘tO        «       ‘tQ        «       ‘tS        «       ‘tU        «       ‘tW        «       ‘tY        «       ‘t[        «       ‘t]        «       ‘t_        «       ‘ta        «       ‘tc        «       ‘te        «       ‘tg        «       ‘ti        dddddddtj        jl                  ¬«      ‘ti        ddd	ddd
ddtj        jl                  ¬«	      ‘ti        ddddddddtj        jl                  ¬«	      ‘ti        ddddddddtj        jl                  ¬«	      ‘ti        ddddddddtj        jl                  ¬«	      ‘ti        ddddddddtj        jl                  ¬«	      ‘ti        dddddddd¬«      ‘ti        dd„ ddddtj        jl                  ¬ «      ‘ti        d!d"„ d#d$dddtj        jl                  ¬%«      ‘ti        d&d'„ d(ddddtj        jl                  ¬%«      ‘ti        d)d*„ d+ddddtj        jl                  ¬%«      ‘ti        d,d-„ d.ddddtj        jl                  ¬%«      ‘ti        d/d0„ d1ddddtj        jl                  ¬%«      ‘ti        d2d3„ d4dd5ddtj        jl                  ¬6«      ‘ti        d2d7d8d9dd:ddtj        jl                  ¬«	      ‘ti        d2d;d<d9dd=ddtj        jl                  ¬«	      ‘ti        d>d?„ d@ddAddtj        jl                  ¬6«      ‘ti        dBdCdDdEddddtj        jl                  ¬F«	      ‘ti        dBdGdHdIddJdddtj        jl                  ¬K«
      ‘ti        dBdLdMdIddNdddtj        jl                  ¬K«
      ‘ti        dBdOdPdQdd=dddtj        jl                  ¬K«
      ‘ti        dBdRdSdTdd:dddUtj        jl                  ¬K«
      ‘ti        dBdCdDdVdddd¬W«      ‘ti        dXdY„ dZd[ddddUtj        jl                  ¬\«	      ‘ti        d]d^„ dZd[dddUtj        jl                  ¬_«      ‘ti        d`da„ dbdcdddtj        jl                  ¬%«      ‘ti        ddde„ dfdcdddtj        jl                  ¬%«      ‘ti        dgdh„ didcdddtj        jl                  ¬%«      ‘ti        djdkdlddmdddtj        jl                  ¬n«	      ‘ti        djdodpdqdd=dddtj        jl                  ¬K«
      ‘ti        djdrdsdqdd:dddtj        jl                  ¬K«
      ‘ti        dtdu„ dvdwddddtj        jl                  ¬\«	      ‘ti        dxdy„ dzd{ddtj        jl                  ¬ «      ‘ti        d|d}„ d~d{ddtj        jl                  ¬ «      ‘ti        dd€„ d�d{ddtj        jl                  ¬ «      ‘ti        d‚dƒ„ d„d{ddtj        jl                  ¬ «      ‘ti        d…d†„ d‡dˆddtj        jl                  ¬ «      ‘ti        d‰dŠd‹dŒdddd�tj        jl                  ¬F«	      ‘ti        d‰dŽd�d�dd:ddd�tj        jl                  ¬K«
      ‘ti        d‰d‘d�d�dd’d“dd�tj        jl                  ¬K«
      ‘ti        d‰d”d•d–dd
ddd�tj        jl                  ¬K«
      ‘ti        d‰d—d˜d–dd™ddd�tj        jl                  ¬K«
      ‘ti        d‰dšd›dœdddd¬�«      ‘ti        dždŸ„ d dŒddddtj        jl                  ¬\«	      ‘ti        d¡d¢„ d£d–dd�tj        jl                  ¬ «      ‘ti        d¤d¥„ d¦d–dd�tj        jl                  ¬ «      ‘ti        d§d¨„ d©dªddd�tj        jl                  ¬%«      ‘ti        d«d¬„ d­dªddd�tj        jl                  ¬%«      ‘ti        d®d¯„ d°dªddd�tj        jl                  ¬%«      ‘ti        d±dŠd²ddŒdd�tj        jl                  ¬³«      ‘ti        d±d´dµddŒd=dd�tj        jl                  ¬¶«	      ‘ti        d·d¸d¹dºtj        jl                  ¬»«      ‘ti        d·d¸d¹d¼tn        d½tj        jl                  ¬¾«      ‘ti        d·d¸d¹d¿„ ddÀ¬Á«      ‘ti        dÂdÃdÄdÅ„ d“tj        jl                  tq        dÆ«      ¬Ç«      ‘ti        dÂdÃdÄdÈ„ d“dÉtj        jl                  tq        dÆ«      ¬Ê«      ‘ti        dËdÃdÌdÍ„ d“dÎtj        jl                  ¬Ï«      ‘ti        dËdÃdÌdÐ„ d“dÉtj        jl                  ¬Ï«      ‘ti        dËdÑdÒdÓ„ d“dÔtj        jl                  ¬Ï«      ‘ti        dËdÕdÖd×„ d“dØtj        jl                  ¬Ï«      ‘ti        dÙdÚ„ dÛdÜ„ d“tj        jl                  ¬Ý«      ‘ti        dÞdß„ dàdá„ d“tj        jl                  ¬Ý«      ‘ti        dâdã„ dädå„ d“tj        jl                  ¬Ý«      ‘ti        dædç„ dèdé„ d“d¬ê«      ‘ti        dë„ dìdí„ dîd“d¬ï«      ‘ti        dðdñdòdótj        jl                  ¬»«      ‘ti        dôdñdõdötj        jl                  ¬»«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      dúdûdüd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      dúdþdÿd“�¬ «      ‘ti        ts        tt        jv                  �dd dø¬ù«      dú�d�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �ddø¬ù«      �ddû�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �dd“�¬«      �d	dû�d
d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  �dd �dd“�¬«      �d�d�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d�dd“�¬«      �ddû�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �dd“�¬«      �d	dþ�dd“�¬ «      ‘ti        ts        tt        jv                  d÷d �dd�¬«      �ddû�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d�dd�¬«      �ddû�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  �dd dø¬ù«      �d�d�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      �d�d�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  �dd dø¬ù«      �d�d�dd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �ddø¬ù«      �d �d�d!d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      �d�d"�d#d“�¬ «      ‘ti        ts        tt        jv                  d÷d �d$d“�¬«      �d%�d�d&d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �d$d“�¬«      �d%�d"�d'd“�¬ «      ‘ti        ts        tt        jv                  �d(d �d$d“�¬«      �d)�d*�d+d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d�d$d“�¬«      �d,�d�d-d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d.�d$d“�¬«      �d/�d�d0d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d1�d$d“�¬«      �d2�d�d3d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  �d(d �d$d�¬«      �d4�d�d5d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d1�d$d�¬«      �d6�d�d7d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �d8d“�¬«      �d9�d�d:d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �d8d“�¬«      �d9�d"�d;d“�¬ «      ‘ti        ts        tt        jv                  �d(d �d8d“�¬«      �d<�d*�d=d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d�d8d“�¬«      �d>�d�d?d“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d.�d8d“�¬«      �d@�d�dAd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d1�d8d“�¬«      �dB�d�dCd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  �d(d �d8d�¬«      �dD�d�dEd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d1�d8d�¬«      �dF�d�dGd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      �dH�dI�dJd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d dø¬ù«      �dH�dK�dLd“�¬ «      ‘ti        ts        tt        jv                  �dMd dø¬ù«      �dN�dO�dPd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �ddø¬ù«      �dQ�dI�dRd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �dSd“�¬«      �dT�dI�dUd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d÷d �dSd“�¬«      �dT�dK�dVd“�¬ «      ‘ti        ts        tt        jv                  �dWd �dSd“�¬«      �dX�dY�dZd“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d[�dSd“�¬«      �d\d��d]�d^d“tj        jl                  �¬_«      ‘ti        ts        tt        jv                  �dWd �dSd�¬«      �d`�dY�dad“tj        jl                  ¬ý«      ‘ti        ts        tt        jv                  d �d[�dSd�¬«      �db�dO�dc�d^d“tj        jl                  �¬_«      ‘ti        ts        tt        jx                  �dd�¬e«      �df�dg�dhd“tj        jl                  ¬ý«      ‘ti        ts        tt        jx                  �ditj        jz                  �¬j«      �dk�dg�dld“d“tj        jl                  �¬m«      ‘ti        ts        tt        jx                  �di�¬e«      �dn�do�dpd“tj        jl                  ¬ý«      ‘ti        ts        tt        jx                  �di�¬e«      �dn�dq�drd“tj        jl                  ¬ý«      ‘ti        ts        tt        jx                  �ditj        jz                  �¬j«      �dk�dq�dsd“d“tj        jl                  �¬m«      ‘ti        ts        tt        jx                  �dt�¬e«      �du�dv�dwd“d“tj        jl                  �¬x«      ‘ti        ts        tt        jx                  �dy�¬e«      �dz�dv�d{d“d“tj        jl                  �¬x«      ‘ti        ts        tt        jx                  �dd�¬e«      �df�d|�d}d“d“�¬~«      ‘ti        ts        tt        j|                  �dd�¬e«      �d�dg�d€d“tj        jl                  ¬ý«      ‘ti        ts        tt        j|                  �di�¬e«      �d��do�d‚d“tj        jl                  ¬ý«      ‘ti        ts        tt        j|                  �di�¬e«      �d��dq�dƒd“tj        jl                  ¬ý«      ‘ti        ts        tt        j|                  �dt�¬e«      �d„�dv�d…d“tj        jl                  ¬ý«      ‘ti        ts        tt        j|                  �dy�¬e«      �d†�dv�d‡d“tj        jl                  ¬ý«      ‘ti        ts        tt        j|                  �dt�¬e«      �d„�d|�dˆd“�¬ «      ‘ti        �d‰�dŠ„ �d‹�dŒd“dtj        jl                  �¬�«      ‘ti        �dŽ�d�„ �d��d‘d“dtj        jl                  �¬�«      ‘ti        �d’�d“„ �d��d”d“tn        dtj        jl                  �¬•«      ‘ti        �d–�d—„ �d˜�dŒd“dtj        jl                  �¬�«      ‘ti        �d™�dš„ �d›�d‘d“dtj        jl                  �¬�«      ‘ti        �dœ�d�„ �d›�d”tn        d“dtj        jl                  �¬ž«      ‘ti        �dŸ�d �d¡�d|�d¢d“tj        jl                  �¬£«      ‘ti        �d¤�d¥„ tj        jl                  �¬¦«      ‘ti        �d¤�d§„ �d¨tj        jl                  �¬©«      ‘ti        �d¤�dª„ �d«tj        jl                  �¬©«      ‘ti        �d¤�d¬�d­�d®„ �d¯tj        jl                  �¬°«      ‘ti        �d¤�d±„ tn        d½tj        jl                  �¬²«      ‘ti        �d³�d´�dµ�d¶�d·d�d¸d“d“tj        jl                  �¬¹«
      ‘ti        �d³�dº�d�d»�d¼tt        j~                  f�d½�d¶d“�d¾dt€        r�d¿nd�tj        jl                  �¬À«	      ‘ti        �dÁ�dÂ�dÃ�dÄ„ d“�d·dd�tj        jl                  �¬Å«	      ‘ti        �dÁ�dº�d�d»�d¼tt        j~                  f�dÆ�dÇ„ d“�d¾dd�tj        jl                  �¬Å«	      ‘ti        �dÈ�dº�d�d�d�d»�d¼tt        j‚                  f�dÉ�dÊ„ d“�dËdt€        rd�n�dÌtj        jl                  �¬Å«	      ‘ti        �dÍ�dÎ�dÏ�dÐ„ �dÑ„ d½ddtj        jl                  �¬Ò«	      ‘ti        �dÓ�dÔ�dÕ�dÖtn        d½tj        jl                  �¬×«      ‘ti        �dØ�dÙ�dÚtk        j„                  �d�dg«      f�dÖtn        d½tj        jl                  �¬×«      ‘ti        �dÛg �dÜ¢�dÝd“f�dÞ�dßdddd�dà�¬á«	      ‘} t‡        g �dâ¢g �dã¢d�¬ä«      D ]×  \  }}�dD ]Ì  }|�dyk(  r|�dåk(  rŒt‰        t‹        �di|�diz   «      «      }�dæ�dçj�                  t�        t�        |«      «      z   �dèz   }�dé�d|z  z   }�dêt‰        �dë„ |D «       «      z   }| j“                  ti        �dì|› �dí��d�dy�dy�d|�di�did|f	�dî|› �dï|› �dð|› �dñ�||d|› �dò�dd�tj        jl                  �¬ó«
      «       ŒÎ ŒÙ g �dô¢}i �dõ�dötj        jl                  �d÷œ“�dø�dù�d1i“�dúd“d“tj        jl                  �dûœ“�düd“d“tj        jl                  �dûœ“�dŸd“tj        jl                  �dýœ“�dþ�dÿtj        jl                  i“�d �dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d�dÿtj        jl                  i“�d	�dÿtj        jl                  i“�d
�dÿtj        jl                  i“�dÿtj        jl                  i�dÿtj        jl                  i�dÿtj        jl                  i�dÿtj        jl                  i�dÿtj        jl                  i�dÿtj        jl                  i�dÿtj        jl                  i�dœ¥}	|D ]L  }
ti        |
�dtn        d½d“�¬«      }|	j•                  |
i «      }|j—                  |«       | j“                  |«       ŒN | S (  NÚConv1d)r3   rU   rZ   z!torch::nn::Conv1dOptions(4, 5, 3))rP   r3   r1   TrB   )rC   rD   rE   rF   ÚcudnnrH   rI   rJ   )r3   rU   rZ   rP   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)Ústride)	rC   rD   rE   rF   rŸ  rN   rH   rI   rJ   )r3   rU   rZ   r5   r5   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)Úpad1rA   )r3   rU   rU   r5   rP   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)Úpad2)r3   r3   rZ   r5   r5   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r5   r3   r5   Ú	pad1size1)r3   r3   rU   r5   rP   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)Ú	pad2size1)r   r3   r1   Ú
zero_batch)rC   rD   rE   rF   rŸ  rN   rH   rI   ÚConv1d_dilatedc                  ó4   — t        j                  dddd¬«      S )Nr3   rU   rZ   rP   ©Úkernel_sizeÚdilation©ry   rž  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Â  ó   € ¤§	¡	¨!¨Q¸AÈÔ J€ r+   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r�   r‘   rE   rF   rH   rI   rJ   ÚConv1d_groupsc                  ó4   — t        j                  dddd¬«      S )Nr3   ra   rZ   rP   ©r©  Úgroupsr«  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ë  ó   € ¤§	¡	¨!¨Q¸AÀaÔ H€ r+   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rP   r3   ra   )r�   r‘   rE   rF   rŸ  rH   rI   rJ   ÚConv1d_pad_validc                  ó4   — t        j                  dddd¬«      S )Nr3   rU   rZ   Úvalid©Úpaddingr«  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Õ  s   € ¤§	¡	¨!¨Q°¸7Ô C€ r+   z8torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kValid)ÚConv1d_pad_samec                  ó4   — t        j                  dddd¬«      S )Nr3   rU   rZ   Úsamerµ  r«  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ß  ó   € ¤§	¡	¨!¨Q°¸6Ô B€ r+   z7torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame)ÚConv1d_pad_same2c                  ó4   — t        j                  dddd¬«      S )Nr3   rU   r¹  rµ  r«  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>é  rº  r+   z7torch::nn::Conv1dOptions(4, 5, 4).padding(torch::kSame)ÚConv1d_pad_same_dilatedc                  ó6   — t        j                  ddddd¬«      S )Nr3   rU   r¹  rP   ©r¶  rª  r«  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ó  s   € ¤§	¡	¨!¨Q°¸6ÈAÔ N€ r+   zCtorch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame).dilation(2)ÚConvTranspose1dc                  ó8   — t        j                  dddddd¬«      S )NrZ   r3   ©rZ   r5   ©r5   )r©  r   r¶  Úoutput_padding©ry   rÀ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ý  s   € ¤× 2Ñ 2°1°aÀQÈtÐ]^ÐosÔ t€ r+   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r5   rZ   é   )r�   r‘   rE   rŸ  rF   rH   rI   rJ   )rZ   r3   rZ   rP   r5   r5   r5   FzŒtorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r5   rZ   ra   rK   )	rZ   r3   rZ   rP   r5   r5   r5   TrP   z—torch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(true).dilation(2)ÚdilatedÚConvTranspose1d_groupsc            	      ó:   — t        j                  ddddddd¬«      S )	Nr3   ra   rZ   rÂ  r5   rÃ  rP   )r   r¶  rÄ  r°  rÅ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>  s    € ¤× 2Ñ 2°1°a¸À4ÐQRÐcgÐpqÔ r€ r+   z€torch::nn::ConvTranspose1dOptions(4, 6, 3)
                                    .stride(3).padding(1).output_padding(1).groups(2))rP   r3   rÆ  ÚConv2d)rZ   r3   ©rZ   rP   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rP   rZ   rÆ  rU   )	rC   rD   rE   rF   rŸ  Úcheck_with_long_tensorrH   rI   rJ   )rZ   r3   ©rZ   rZ   ©rP   rP   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r`   Ústrided)
rC   rD   rE   rF   rŸ  rN   rÌ  rH   rI   rJ   )rZ   r3   rÍ  rÎ  ©r5   r5   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r¶  )rZ   rP   rÍ  rÎ  rÐ  rÎ  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rP   rZ   r2   r2   )rZ   r3   rË  r5   r   r5   r5   Fz‚torch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rP   rZ   ra   rU   g¸…ëQ¸Ž?)r   rZ   rÆ  rU   )rC   rD   rE   rF   rŸ  rN   rÌ  rH   ÚConv2d_groupsc                  ó4   — t        j                  dddd¬«      S ©Nr3   ra   rË  rP   ©r°  ©ry   rÊ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>p  ó   € ¤§	¡	¨!¨Q°¸qÔ A€ r+   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rP   r3   ra   rU   )	r�   r‘   rE   rF   rŸ  rÌ  rH   rI   rJ   ÚConv2d_groups_thnnc                  ó4   — t        j                  dddd¬«      S rÓ  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>{  rÖ  r+   )r�   r‘   rE   rF   rÌ  rH   rI   rJ   ÚConv2d_pad_validc                  ó4   — t        j                  dddd¬«      S )NrP   r3   ©rZ   r3   r´  rµ  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>…  s   € ¤§	¡	¨!¨Q°ÀÔ H€ r+   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rP   rP   ra   rU   ÚConv2d_pad_samec                  ó4   — t        j                  dddd¬«      S )NrP   r3   rÛ  r¹  rµ  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>�  s   € ¤§	¡	¨!¨Q°ÀÔ G€ r+   z<torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame)ÚConv2d_pad_same_dilatedc                  ó6   — t        j                  ddddd¬«      S )NrP   r3   rÛ  r¹  r¿  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>™  s   € ¤§	¡	¨!¨Q°ÀÐQRÔ S€ r+   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ÚConvTranspose2d)rZ   r3   rZ   rË  r5   rÐ  z€torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r5   rZ   rÆ  ra   )	rC   rD   rE   rŸ  rF   rÌ  rH   rI   rJ   )	rZ   r3   rZ   ©rP   rZ   r5   rÐ  r5   FrÎ  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r5   rZ   ra   rÆ  )rZ   r3   rZ   rá  r5   rÐ  r5   Fz–torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3}).padding(1).output_padding({1, 1}).groups(1).bias(false)ÚConvTranspose2d_groupsc                  ó4   — t        j                  dddd¬«      S )NrP   r3   rá  rÔ  )ry   rà  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Î  s   € ¤× 2Ñ 2°1°a¸ÈÔ J€ r+   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r5   rP   r3   rU   ÚConv2d_depthwisec                  ó4   — t        j                  dddd¬«      S )Nr3   rÍ  rÔ  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ù  rÖ  r+   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rP   r3   ra   ra   Ú Conv2d_depthwise_with_multiplierc                  ó4   — t        j                  dddd¬«      S )Nr3   r2   rÍ  rÔ  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>â  rÖ  r+   z0torch::nn::Conv2dOptions(4, 8, {3, 3}).groups(4)ÚConv2d_depthwise_stridedc                  ó6   — t        j                  ddddd¬«      S )Nr3   rÍ  rÎ  )r   r°  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ë  s   € ¤§	¡	¨!¨Q°¸vÈaÔ P€ r+   z?torch::nn::Conv2dOptions(4, 4, {3, 3}).stride({2, 2}).groups(4)ÚConv2d_depthwise_paddedc                  ó6   — t        j                  ddddd¬«      S )Nr3   rÍ  rÐ  )r¶  r°  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ô  s   € ¤§	¡	¨!¨Q°ÀÈqÔ Q€ r+   z@torch::nn::Conv2dOptions(4, 4, {3, 3}).padding({1, 1}).groups(4)ÚConv2d_depthwise_dilatedc                  ó6   — t        j                  ddddd¬«      S )Nr3   rÎ  )rª  r°  rÕ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ý  s   € ¤§	¡	¨!¨Q°ÀÐPQÔ R€ r+   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rP   r3   rU   rU   ÚConv3d)rP   rZ   ©rP   rZ   rP   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r5   rP   r3   rU   r3   gš™™™™™©?)rP   rZ   ©rP   rZ   r3   r5   r   r5   r5   Fz…torch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r5   rP   rZ   r3   rU   )rP   rZ   )r5   r5   r5   r5   r   r5   r5   FÚ1x1x1_no_biasF)rZ   r3   rP   rP   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rP   rZ   rU   rU   rU   )rZ   r3   rP   rP   r5   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)Ústride_padding)rZ   r3   rð  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rZ   rZ   r3   rU   )rC   rD   rE   rF   rŸ  rÌ  rN   rH   ÚConv3d_groupsc                  ó4   — t        j                  dddd¬«      S )NrP   r3   rZ   r¯  ©ry   rî  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>M  r±  r+   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)ÚConv3d_dilatedc                  ó4   — t        j                  dddd¬«      S )NrZ   r3   rP   r¨  rõ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>X  r¬  r+   z-torch::nn::Conv3dOptions(3, 4, 2).dilation(2)ÚConv3d_dilated_stridedc                  ó6   — t        j                  ddddd¬«      S )NrZ   r3   rP   )r©  rª  r   rõ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>a  s   € ¤§	¡	¨!¨Q¸AÈÐRSÔ T€ r+   z7torch::nn::Conv3dOptions(3, 4, 2).dilation(2).stride(2)ÚConv3d_pad_validc                  ó4   — t        j                  dddd¬«      S )NrZ   r3   rð  r´  rµ  rõ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>j  s   € ¤§	¡	¨!¨Q°	À7Ô K€ r+   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rP   rZ   ra   rU   r3   ÚConv3d_pad_samec                  ó4   — t        j                  dddd¬«      S )NrZ   r3   rð  r¹  rµ  rõ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>t  s   € ¤§	¡	¨!¨Q°	À6Ô J€ r+   z?torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame)ÚConv3d_pad_same_dilatedc                  ó6   — t        j                  ddddd¬«      S )NrZ   r3   rð  r¹  rP   r¿  rõ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>~  s   € ¤§	¡	¨!¨Q°	À6ÐTUÔ V€ r+   zKtorch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame).dilation(2)ÚConvTranspose3dz2torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2}))rC   rD   rE   rŸ  rF   rH   rI   rJ   )	rP   rZ   rï  r5   r   r   r5   T)rP   rP   rP   z§torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	rC   rD   rE   rŸ  rF   rN   rH   rI   rJ   ÚReplicationPad3d))r5   rP   rZ   rZ   rP   r5   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rP   rZ   rP   rP   rP   )rC   rD   rE   rF   rJ   )rZ   rP   rP   rP   Úno_batch_dim)rC   rD   rE   rF   rG   rN   rJ   c            	      óV   — t        j                  dddddt         j                  d¬«      S )NrP   rZ   T)r½   Úrequires_grad)r7   rŠ   Ú
complex128ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>°  s"   € œUŸZ™Z¨¨1¨a°°A¼U×=MÑ=MÐ]aÔb€ r+   Úcomplex)rC   rD   rE   r“   Ú	skip_halfrN   Ú	Embedding)r3   rZ   z!torch::nn::EmbeddingOptions(4, 3)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S ©NrP   rZ   r¼   r3   ©r7   rr  re  Úrandom_ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>¸  ó"   € œUŸ[™[¨¨A´U·Z±ZÔ@×HÑHÈÓK€ r+   z0https://github.com/pytorch/pytorch/issues/117971)rC   rD   rE   r“   rb   rJ   Ú	decoratorc                  óŒ   — t        j                  ddt         j                  ¬«      j                  d«      j	                  dd«      S ©Nr5   i   r¼   r3   rÆ  ©r7   rr  re  r  r;   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Á  ó1   € œUŸ[™[¨¨C´u·z±zÔB×JÑJÈ1ÓM×TÑTÐUVÐX[Ó\€ r+   Údiscontiguous)rC   rD   rE   r“   rb   rN   rJ   r  ÚEmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S r
  r  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ë  r  r+   Úmean)rC   rD   rE   r“   rb   rN   rJ   c                  óŒ   — t        j                  ddt         j                  ¬«      j                  d«      j	                  dd«      S r  r  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ô  r  r+   )r3   rZ   Nç       @FrU  zštorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S r
  r  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Þ  r  r+   rU  )r3   rZ   Nr  FÚmaxzštorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S r
  r  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>è  r  r+   r  ÚEmbeddingBag_mean_padding_idxc                  ó2   — t        j                  ddd¬«      S )Nr3   rZ   r5   ©Úpadding_idx©ry   r  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ï  s   € ¤§¡°°1À!Ô D€ r+   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                  ó|   — t        j                  t        j                  d«      t        j                  d«      g«      S ©NrZ   ©r7   Ústackre   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ñ  ó&   € œUŸ[™[¬%¯.©.¸Ó*;¼U¿^¹^ÈAÓ=NÐ)OÓP€ r+   )r�   r‘   rE   r“   rb   rJ   ÚEmbeddingBag_sum_padding_idxc            	      ó:   — t        j                  ddd dddd¬«      S )Nr3   rZ   r  FrU  r5   r  r   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>÷  ó   € ¤§¡°°1°d¸BÀÀuÐZ[Ô \€ r+   z©torch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum).padding_idx(1)c                  ó|   — t        j                  t        j                  d«      t        j                  d«      g«      S r"  r#  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ú  r%  r+   ÚEmbeddingBag_max_padding_idxc            	      ó:   — t        j                  ddd dddd¬«      S )Nr3   rZ   r  Fr  r5   r  r   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>   r(  r+   z©torch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax).padding_idx(1)c                  ó|   — t        j                  t        j                  d«      t        j                  d«      g«      S r"  r#  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>  r%  r+   ÚEmbeddingBag_sparsec                  óP   — t        j                  dddt        j                  ¬«      S )Nr3   rZ   T)Úsparser½   )ry   r  r7   rf   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>	  s   € ¤§¡°°1¸TÌÏÉÔ V€ r+   z‡torch::nn::EmbeddingBagOptions(4, 3)
                                    .sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  óL   — t        j                  d«      j                  dd«      S ©NrP   r5   ©r7   re   Úrepeatro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>  ó   € œUŸ^™^¨AÓ.×5Ñ5°a¸Ó;€ r+   )r�   r‘   rE   r“   rb   Úhas_sparse_gradientsc                  óP   — t        j                  ddt        j                  d¬«      S )Nr3   rZ   T)r½   r/  )ry   r  r7   rf   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>  s   € ¤§¡¨Q°¼¿¹ÈdÔ S€ r+   z_torch::nn::EmbeddingOptions(4, 3).sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  óL   — t        j                  d«      j                  dd«      S r1  r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>  r4  r+   ÚEmbedding_sparse)r‘   rE   r“   r�   rb   r5  ÚPixelShufflerÂ  z!torch::nn::PixelShuffleOptions(3))r5   é	   r3   r3   ÚPixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r5   r5   é   r<  r<  Únearest)rg   Úscale_factorÚmodezŽF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r5   rP   r3   Úinterpolate_nearest_1d)r‘   Úcpp_options_argsrF   r�   r•   rJ   )r   rP   r3   Úinterpolate_nearest_1d_zero_dim)r‘   rA  rF   r�   r•   )r<  )r5   rP   rZ   Úinterpolate_nearest_tuple_1dg      @z�F::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)Úinterpolate_nearest_scale_1dÚlinear)rg   r>  r?  Úalign_cornersa  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)Úinterpolate_linear_1d)r3   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)Úinterpolate_linear_tuple_1da  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(false)Úinterpolate_linear_scale_1dÚinterpolate_linear_1d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(true)Ú#interpolate_linear_1d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(true)Ú)interpolate_linear_scale_1d_align_cornersrP   zÒF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   é€   r5   r5   Ú%interpolate_nearest_2d_launch_configszÔF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rP   r3   r3   Úinterpolate_nearest_2d)r<  é   zÔF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rP   rZ   r3   Úinterpolate_nearest_tuple_2dzÓF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)Úinterpolate_nearest_scale_2d)r   rP   r3   r3   Úinterpolate_nearest_2d_zero_dimÚbilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false)Úinterpolate_bilinear_2dÚ interpolate_bilinear_2d_zero_dim)r3   ra   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r5   rP   rP   rZ   Úinterpolate_bilinear_tuple_2da
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)Úinterpolate_bilinear_scale_2d)r  r  a
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 2.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)Ú*interpolate_bilinear_scale_tuple_shared_2d)r  ç      ð?a
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)Ú*interpolate_bilinear_scale_tuple_skewed_2da  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(true)Ú+interpolate_bilinear_tuple_2d_align_cornersa	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBilinear)
                                .align_corners(true)Ú8interpolate_bilinear_scale_tuple_skewed_2d_align_cornersÚbicubica
  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(false)Úinterpolate_bicubic_2dÚinterpolate_bicubic_2d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(false)Úinterpolate_bicubic_tuple_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kBicubic)
                                .align_corners(false)Úinterpolate_bicubic_scale_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 2.}))
                                .mode(torch::kBicubic)
                                .align_corners(false)Ú)interpolate_bicubic_scale_tuple_shared_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBicubic)
                                .align_corners(false)Ú)interpolate_bicubic_scale_tuple_skewed_2da  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(true)Ú*interpolate_bicubic_tuple_2d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBicubic)
                                .align_corners(true)Ú7interpolate_bicubic_scale_tuple_skewed_2d_align_cornerszØF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rP   r3   r3   r3   Úinterpolate_nearest_3d)r   rP   r3   r3   r3   Úinterpolate_nearest_3d_zero_dim)r<  rP  rP  zØF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rP   rZ   r3   r3   Úinterpolate_nearest_tuple_3dz×F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4., 4.}))
                                .mode(torch::kNearest)Úinterpolate_nearest_scale_3dÚ	trilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false)Úinterpolate_trilinear_3dÚ!interpolate_trilinear_3d_zero_dim)r3   ra   ra   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r5   rP   rP   rZ   rZ   Úinterpolate_trilinear_tuple_3dg      @a  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(false)Úinterpolate_trilinear_scale_3drÆ   )r‘   rA  rF   r�   r¯   r•   rJ   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(true)Ú,interpolate_trilinear_tuple_3d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(true)Ú,interpolate_trilinear_scale_3d_align_cornersr6   rR  zF::SoftmaxFuncOptions(-1))rP   rM  Úsoftmax_lastdimr5   )rS  r½   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)Úsoftmax_lastdim_dtype)r‘   rA  rF   r�   r•   rQ   rJ   zF::SoftmaxFuncOptions(1))rP   rM  rP   rP   Úsoftmax_spatial_special)rP   rP   r3   r3   Úsoftmax_spatialÚsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rY   Úsoftmax_functional_dim0)r‘   rA  rF   r�   rQ   r•   rJ   rZ   zF::SoftmaxFuncOptions(3)Úsoftmax_functional_dim3ro   Úsoftmax_functional_scalar)r‘   rA  rF   r�   rQ   r•   zF::LogSoftmaxFuncOptions(-1)Úlog_softmax_lastdimzF::LogSoftmaxFuncOptions(1)Úlog_softmax_spatial_specialÚlog_softmax_spatialzF::LogSoftmaxFuncOptions(0)Úlog_softmax_dim0zF::LogSoftmaxFuncOptions(3)Úlog_softmax_dim3Úlog_softmax_scalarÚUnfoldc                  ó2   — t        j                  dddd«      S )NrÎ  rÐ  ©r   r   ©ry   r€  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>z	  s   € ¤§	¡	¨&°&¸&À&Ó I€ r+   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rP   r3   rZ   rZ   )r�   r‘   rE   rF   rb   rQ   rJ   ÚFoldc                  ó4   — t        j                  ddddd«      S ©NrÍ  rÎ  rÐ  r‚  ©ry   r„  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>ƒ	  ó   € ¤§¡¨°¸ÀÈÓ O€ r+   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rP   rP  r3   ÚFold_no_batch_dim_inputc                  ó4   — t        j                  ddddd«      S r†  r‡  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Œ	  rˆ  r+   )rP  r3   )r�   r‘   rE   rF   rb   ÚrefrQ   rJ   ÚUnfold_int_inputc                  ó2   — t        j                  dddd«      S )NrP   r5   r   rƒ  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>–	  s   € ¤§	¡	¨!¨Q°°1Ó 5€ r+   z<torch::nn::UnfoldOptions(2).dilation(1).padding(0).stride(1)ÚFold_int_inputc                  ó4   — t        j                  ddddd«      S ©NrZ   rP   r5   r   r‡  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ÿ	  ó   € ¤§¡¨¨1¨a°°AÓ 6€ r+   z=torch::nn::FoldOptions(3, 2).dilation(1).padding(0).stride(1)ÚFold_no_batch_dim_int_inputc                  ó4   — t        j                  ddddd«      S r�  r‡  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>¨	  r‘  r+   )r�   r‘   rE   rF   r‹  rb   rQ   rJ   rO   rR   rT   Úwith_up_down_scalarrW   ÚPairwiseDistancec                  óZ   — t        j                  dd«      t        j                  dd«      fS ©Nr1   r2   r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>»	  ó!   € œeŸk™k¨"¨aÓ0´%·+±+¸bÀ!Ó2DÐE€ r+   )rC   r“   rJ   c                  óZ   — t        j                  dd«      t        j                  dd«      fS )Nr1   r5   r2   r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>À	  r˜  r+   Úbroadcast_lhs)rC   r“   rN   rJ   c                  óZ   — t        j                  dd«      t        j                  dd«      fS )Nr1   r2   r5   r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Æ	  s!   € œeŸk™k¨"¨aÓ0´%·+±+¸aÀÓ2CÐD€ r+   Úbroadcast_rhs)g      ø?r   TzDtorch::nn::PairwiseDistanceOptions().p(1.5).eps(1e-05).keepdim(true)c                  óZ   — t        j                  dd«      t        j                  dd«      fS r—  r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Î	  r˜  r+   Úwith_non_default_args)rC   rD   rE   r“   rN   rJ   c                  óV   — t        j                  d«      t        j                  d«      fS )Nr2   r2  ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>Ô	  s   € œeŸk™k¨!›n¬e¯k©k¸!«nÐ=€ r+   )rC   r“   rG   rN   rJ   ÚTransformerEncoderLayer)r3   rP   rP  ç        zštorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)rð  Úrelu_activationrS   )
rC   rD   rE   rF   rN   rH   rI   rc   rb   rJ   r3   r2   r¡  z×torch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)Úgelu_activationg{®Gáz´?)	rC   rD   rE   rF   rb   rN   rH   rI   rJ   ÚTransformerDecoderLayer)r3   rP   r2   r¡  z™torch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)c                  ó^   — t        j                  ddd«      t        j                  ddd«      fS ©NrZ   r3   rP   r‰   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>þ	  ó%   € œeŸj™j¨¨A¨qÓ1´5·:±:¸aÀÀAÓ3FÐG€ r+   )	rC   rD   rE   r“   rb   rN   rH   rI   rJ   z×torch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)c                  ó^   — t        j                  ddd«      t        j                  ddd«      fS r¦  r‰   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>
  r§  r+   ÚTransformera›  torch::nn::TransformerOptions()
                                    .d_model(4)
                                    .nhead(2)
                                    .num_encoder_layers(2)
                                    .num_decoder_layers(2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kReLU)c                  óˆ   — t        j                  ddd«      t        j                  ddd«      t        j                  dd«      fS r¦  r‰   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>
  s4   € œeŸj™j¨¨A¨qÓ1´5·:±:¸aÀÀAÓ3FÌÏ
É
ÐSTÐVWÓHXÐY€ r+   Úmultilayer_coderg¸…ëQ¸ž?r0   )rZ   rU   ztorch::nn::LinearOptions(3, 5)c                  ó,   — t        j                  d«      S r"  r‰   ro   r+   r)   r@   z&get_new_module_tests.<locals>.<lambda>)
  s   € œUŸZ™Z¨›]€ r+   c                 óš   — t        j                  | j                  dd«      |d   j                  «       «      j                  d«      |d   z   S )Nr5   r6   r   )r7   r8   r:   r9   r<   s      r)   r@   z&get_new_module_tests.<locals>.<lambda>*
  s=   € ¬¯©°!·&±&¸¸B³-ÀÀ1ÁÇÁÃÓ)J×)OÑ)OÐPRÓ)SÐVWÐXYÑVZÑ)Z€ r+   )	rC   rD   rE   r“   rG   rN   rH   rI   rJ   rX   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))éýÿÿÿr6   )rZ   r3   rU   )rC   rE   rD   rF   rG   rN   rJ   Ú	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})éþÿÿÿÚ	LayerNorm)é8   r²  r²  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r3   r²  r²  r²  Ú3d_no_affine_large_feature)	rC   rD   rE   rF   rŸ  Ú
check_evalÚgradcheck_fast_modeÚ
check_halfrN   )ÚreflectÚcircularÚ	replicater  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZeros©Ústrictr·  ú{z, ú}rÎ  rá  c              3   ó&   K  — | ]	  }|d z   –— Œ y­w©r5   Nro   ©Ú.0r>   s     r)   ú	<genexpr>z'get_new_module_tests.<locals>.<genexpr>_
  s   è ø€ Ò(@°1¨¨Q­Ñ(@ùs   ‚ÚConvÚdztorch::nn::Convz~dOptions(2, 3, 3)
                                            .stride(2)
                                            .padding(zä)
                                            .dilation(1)
                                            .groups(1)
                                            .bias(true)
                                            .padding_mode(ú)Ú_stride2_pad2)
rC   rD   rE   rF   Úoutput_sizerŸ  rN   rH   rI   rJ   )ÚELUÚ
HardshrinkÚHardsigmoidÚHardtanhÚ	HardswishÚ	LeakyReLUÚ
LogSigmoidÚPReLUÚReLUÚReLU6rO   ÚSELUÚCELUÚGELUÚGLUrÝ   ÚSiLUÚMishÚSoftplusÚ
SoftshrinkÚSoftsignÚTanhÚ
TanhshrinkÚ	ThresholdrÓ  )r  )rD   rJ   rÝ  rD   rÊ  )rb   Ú	check_jitrJ   rÌ  )rQ   rJ   rÈ  rJ   rÔ  rÕ  rÉ  rË  rÍ  rÎ  r×  rÏ  rÑ  rÐ  rÒ  )rÖ  rÝ   rØ  rÙ  rÚ  rÛ  rÜ  )rC   rF   rG   rN   Útest_cpp_api_parity)Lr
   Úset_rng_seedrš   r²   rÈ   rß   ræ   rº   rÏ   rì   r   r  r  r  r"  r(  r9  r@  rG  rY  r^  rv  rƒ  r—  r   r§  r³  rÂ  rº  rÉ  rÖ  rÏ  rã  ré  rò  rø  r  r  r  r%  r+  r8  rA  rI  rW  r]  rk  rq  rw  r~  r„  rŠ  r˜   r7   rf   rœ  r   r{   r‚   ÚinterpolateÚsoftmaxÚfloat64Úlog_softmaxÚgelur   ÚreluÚSizeÚzipr�  ÚrangeÚjoinÚmapr  ÚappendÚgetÚupdate)Únew_module_testsÚpadding_modeÚcpp_padding_moderÄ  r¶  Úcpp_paddingrF   rÇ  Únon_linear_activations_no_batchÚ!non_linear_activations_extra_infoÚnon_linear_activationÚactivation_test_infoÚ
extra_infos                r)   Úget_new_module_testsrø  @  s5#  € Ü×ÑÔðKÜ%Ó'ðKäÓ ðKô 	'Ó(ðKô 	+Ó,ð	Kô
 	)Ó*ðKô 	&Ó'ðKô 	.Ó/ðKô 	0Ó1ðKô 	-Ó.ðKô 	!Ó"ðKô 	(Ó)ðKô 	1Ó2ðKô 	,Ó-ðKô 	3Ó4ðKô 	ÓðKô  	&Ó'ð!Kô" 	%Ó&ð#Kô$ 	Ó ð%Kô& 	&Ó'ð'Kô( 	Ó ð)Kô* 	,Ó-ð+Kô, 	'Ó(ð-Kô. 	4Ó5ð/Kô0 	8Ó9ð1Kô2 	!Ó"ð3Kô4 	)Ó*ð5Kô6 	.Ó/ð7Kô8 	!Ó"ð9Kô: 	)Ó*ð;Kô< 	.Ó/ð=Kô> 	$Ó%ð?Kô@ 	+Ó,ðAKôB 	Ó ðCKôD 	$Ó%ðEKôF 	ÓðGKôH 	/Ó0ðIKôJ 	/Ó0ðKKôL 	,Ó-ðMKôN 	,Ó-ðOKôP 	*Ó+ðQKôR 	1Ó2ðSKôT 	&Ó'ðUKôV 	0Ó1ðWKôX 	8Ó9ðYKôZ 	'Ó(ð[Kô\ 	*Ó+ð]Kô^ 	:Ó;ð_Kô` 	)Ó*ðaKôb 	.Ó/ðcKôd 	/Ó0ðeKôf 	Ø Ø&Ø!DØ!ØØØ ÜŸ,™,ô		
ðgKôz 	Ø Ø)Ø!NØ!ØØØØ ÜŸ,™,ô
	
ð{KôP 	Ø Ø,Ø!YØ!ØØØØÜŸ,™,ô
	
ðQKôf 	Ø Ø,Ø!YØ!ØØØØ ÜŸ,™,ô
	
ðgKô| 	Ø Ø,Ø!YØ ØØØØ ÜŸ,™,ô
	
ð}KôR 	Ø Ø,Ø!YØ ØØØØ ÜŸ,™,ô
	
ðSKôh 	Ø Ø&Ø!DØ!ØØØØ ô		
ðiKô| 	Ø%ÙJØ!PØ!ØØ ÜŸ,™,ô	
ð}KôN 	Ø$ÙHØ!NØ ØØØ ÜŸ,™,ô		
ðOKôb 	Ø'ÙCØ![Ø!ØØØ ÜŸ,™,ô		
ðcKôv 	Ø&ÙBØ!ZØ!ØØØ ÜŸ,™,ô		
ðwKôJ 	Ø'ÙBØ!ZØ!ØØØ ÜŸ,™,ô		
ðKKô^ 	Ø.ÙNØ!fØ!ØØØ ÜŸ,™,ô		
ð_Kôr 	Ø&ÙtØ!tØØ ØØ ÜŸ,™,ô		
ðsKôF 	Ø)Ø9ð"eà ØØØØ ÜŸ,™,ô	
ðGKô^ 	Ø)Ø;ð"pà ØØØØ ÜŸ,™,ô	
ð_Kôv 	Ø-Ùrð"YàØ ØØ ÜŸ,™,ô
	
ðwKôL 	Ø Ø+Ø!IØ#ØØ#'ØØ ÜŸ,™,ô
	
ðMKôb 	Ø Ø3Ø!XØ#ØØØ#'ØØ ÜŸ,™,ô	
ðcKôz 	Ø Ø;Ø!hØ#ØØØ#'ØØ ÜŸ,™,ô	
ð{KôR 	Ø ØCØ!yØ#ØØØ#'ØØ ÜŸ,™,ô	
ðSKôj 	Ø Ø>ð"_à#ØØØ#'ØØ ÜŸ,™,ô	
ðkKôD	 	Ø Ø+Ø!IØ#ØØØ#'Øô		
ðE	KôX	 	Ø$ÙAØ!SØ#ØØ#'ØØ ÜŸ,™,ô
	
ðY	Kôn	 	Ø)ÙAØ!SØ#Ø#'ØØ ÜŸ,™,ô		
ðo	KôB
 	Ø'ÙHØ!`Ø#ØØØ ÜŸ,™,ô		
ðC
KôV
 	Ø&ÙGØ!_Ø#ØØØÜŸ,™,ô		
ðW
Kôj
 	Ø.ÙSØ!kØ#ØØØÜŸ,™,ô		
ðk
Kô~
 	Ø)Ø9ð"YàØ#Ø#'ØØÜŸ,™,ô	
ð
KôV 	Ø)ØKð"9ð $ØØØ#'ØØÜŸ,™,ô!	
ðWKôz 	Ø)ØCð"oà#ØØØ#'ØØÜŸ,™,ô	
ð{KôT 	Ø-ÙJØ!\Ø#ØØ#'ØØÜŸ,™,ô
	
ðUKôj 	Ø'ÙAØ!SØ#ØØ ÜŸ,™,ô	
ðkKô| 	Ø7ÙAØ!SØ#ØØ ÜŸ,™,ô	
ð}KôN 	Ø/ÙPØ!bØ#ØØ ÜŸ,™,ô	
ðOKô` 	Ø.ÙQØ!cØ#ØØ ÜŸ,™,ô	
ðaKôr 	Ø/ÙRØ!dØ#ØØ ÜŸ,™,ô	
ðsKôD 	Ø Ø.Ø!LØ&ØØ#'ØØÜŸ,™,ô
	
ðEKôZ 	Ø ØAð"_à&ØØØ#'ØØÜŸ,™,ô	
ð[Kôt 	Ø ØAð"_à&ØØ Ø#(ØØÜŸ,™,ô	
ðuKôN 	Ø Ø)Ø!NØ&ØØØ#'ØØÜŸ,™,ô	
ðOKôf 	Ø Ø,Ø!YØ&ØØ!Ø#'ØØÜŸ,™,ô	
ðgKô~ 	Ø Ø.Ø!LØ&ØØ#'ØØô		
ðKôR 	Ø$ÙHØ!NØ&ØØ#'ØØ ÜŸ,™,ô
	
ðSKôh 	Ø%ÙJØ!PØ&ØØÜŸ,™,ô	
ðiKôz 	Ø-ÙTØ!ZØ&ØØÜŸ,™,ô	
ð{KôL 	Ø'ÙKØ!cØ&ØØØÜŸ,™,ô		
ðMKô` 	Ø&ÙJØ!bØ&ØØØÜŸ,™,ô		
ðaKôt 	Ø.ÙVØ!nØ&ØØØÜŸ,™,ô		
ðuKôH 	Ø)Ø.Ø!UØØ&ØØÜŸ,™,ô		
ðIKô\ 	Ø)ØKð"xàØ&ØØØÜŸ,™,ô	
ð]Kôt 	Ø*Ø2Ø!YØ&ÜŸ,™,ô	
ðuKôB 	Ø*Ø2Ø!YØ#Ü2ØÜŸ,™,ô	
ðCKôT 	Ø*Ø2Ø!YÙbØØô	
ðUKôd 	Ø#Ø#Ø!DÙKØ ÜŸ,™,Ü'Ð(ZÓ[ô	
ðeKôv 	Ø#Ø#Ø!DÙ\Ø Ø ÜŸ,™,Ü'Ð(ZÓ[ô		
ðwKôJ 	Ø&Ø#Ø!GÙKØ ØÜŸ,™,ô	
ðKKô\ 	Ø&Ø#Ø!GÙ\Ø Ø ÜŸ,™,ô	
ð]Kôn 	Ø&Ø;ð"yáKØ ØÜŸ,™,ô		
ðoKôB 	Ø&Ø;ð"yáKØ ØÜŸ,™,ô		
ðCKôV 	Ø4ÙDØ!VÙPØ ÜŸ,™,ô	
ðWKôf 	Ø3Ù\ð"HáPØ ÜŸ,™,ô	
ðgKôx 	Ø3Ù\ð"HáPØ ÜŸ,™,ô	
ðyKôJ 	Ø*ÙVð"fá;Ø Ø!%ô	
ðKKô\ 	ÙSð "CÙ;Ø'Ø Ø!%ô	
ð]Kôl 	Ø&Ø!Ø!DØ#ÜŸ,™,ô	
ðmKôz 	Ø(Ø!Ø!FØ%ÜŸ,™,ô	
ð{KôH 	Ü'¬¯©¸BÈTÐXaÔbðvà Ø-ØÜŸ,™,ô	
ðIKôZ 	Ü'¬¯©¸BÈTÐXaÔbðvà Ø6Øõ	
ð[Kôj 	Ü'¬¯©¹FÐQUÐ\eÔfðvá Ù3ØÜŸ,™,ô	
ðkKô| 	Ü'¬¯©¸DÉrÐXaÔbñuà Ù3ØÜŸ,™,ô	
ð}KôN 	Ü'¬¯©¸BÈTÑX`ÐpuÕvñ9ð
 !Ù,ØÜŸ,™,ô	
ðOKôf 	Ü'¬¯©¹EÐPTÑ[cÐsxÕyñ9ñ
 !Ù2ØÜŸ,™,ô	
ðgKô~ 	Ü'¬¯©¸DÉrÑX`ÐpuÕvñ9ð
 !Ù2ØÜŸ,™,ô	
ðKôV 	Ü'¬¯©¸BÈTÑX`ÐpuÕvñ9ð
 !Ù5Øõ
	
ðWKôl 	Ü'¬¯©¸BÈTÑX`ÐptÕuñ8ð
 !Ù:ØÜŸ,™,ô	
ðmKôD 	Ü'¬¯©¸DÉrÑX`ÐptÕuñ8ð
 !Ù@ØÜŸ,™,ô	
ðEKô\ 	Ü'¬¯©¹AÈDÐW`Ôañ:ñ &Ù<ØÜŸ,™,ô
	
ð]Kôr 	Ü'¬¯©¸BÈTÐXaÔbñ:ñ $Ù-ØÜŸ,™,ô
	
ðsKôH 	Ü'¬¯©¹HÐSWÐ^gÔhñ:ñ $Ù3ØÜŸ,™,ô
	
ðIKô^ 	Ü'¬¯©¸DÉrÐXaÔbñ:ñ $Ù3ØÜŸ,™,ô
	
ð_Kôt 	Ü'¬¯©¸BÈTÐXaÔbñ:ñ $Ù6Øõ		
ðuKôH 	Ü'¬¯©¸BÈTÑXbÐrwÕxñ9ñ
 $Ù.ØÜŸ,™,ô	
ðIKô` 	Ü'¬¯©¸BÈTÑXbÐrwÕxñ9ñ
 $Ù7Øõ
	
ðaKôv 	Ü'¬¯©¹FÐQUÙ-7ÀuõNñ9ñ
 $Ù4ØÜŸ,™,ô	
ðwKôP 	Ü'¬¯©¸DÉrÙ-7ÀuõNñ9ñ
 $Ù4ØÜŸ,™,ô	
ðQKôj 	Ü'¬¯©¸DÉxÙ-7ÀuõNñ9ñ
 $ÙAØÜŸ,™,ô	
ðkKôD 	Ü'¬¯©¸DÉxÙ-7ÀuõNñ9ñ
 $ÙAØÜŸ,™,ô	
ðEKô^ 	Ü'¬¯©¹FÐQUÑ\fÐvzÕ{ñ8ñ
 $ÙBØÜŸ,™,ô	
ð_Kôv 	Ü'¬¯©¸DÉxÙ-7ÀtõMñ8ñ
 $ÙOØÜŸ,™,ô	
ðwKôP 	Ü'¬¯©¸BÈTÑXaÐqvÕwñ9ñ
 $Ù-ØÜŸ,™,ô	
ðQKôh 	Ü'¬¯©¸BÈTÑXaÐqvÕwñ9ñ
 $Ù6Øõ
	
ðiKô~ 	Ü'¬¯©¹FÐQUÙ-6ÀeõMñ9ñ
 $Ù3ØÜŸ,™,ô	
ðKôX  	Ü'¬¯©¸DÉrÑXaÐqvÕwñ9ñ
 $Ù3ØÜŸ,™,ô	
ðY Kôp  	Ü'¬¯©¸DÉxÙ-6ÀeõMñ9ñ
 $Ù@ØÜŸ,™,ô	
ðq KôJ! 	Ü'¬¯©¸DÉxÙ-6ÀeõMñ9ñ
 $Ù@ØÜŸ,™,ô	
ðK!Kôd! 	Ü'¬¯©¹FÐQUÑ\eÐuyÕzñ8ñ
 $ÙAØÜŸ,™,ô	
ðe!Kô|! 	Ü'¬¯©¸DÉxÙ-6ÀdõLñ8ñ
 $ÙNØÜŸ,™,ô	
ð}!KôV" 	Ü'¬¯©¸BÈTÐXaÔbñ:ñ 'Ù-ØÜŸ,™,ô
	
ðW"Kôl" 	Ü'¬¯©¸BÈTÐXaÔbñ:ñ 'Ù6Øõ		
ðm"Kô@# 	Ü'¬¯©¹LÐW[ÐbkÔlñ:ñ 'Ù3ØÜŸ,™,ô
	
ðA#KôV# 	Ü'¬¯©¸DÉrÐXaÔbñ:ñ 'Ù3ØÜŸ,™,ô
	
ðW#Kôl# 	Ü'¬¯©¸BÈTÑXcÐsxÕyñ9ñ
 'Ù/ØÜŸ,™,ô	
ðm#KôD$ 	Ü'¬¯©¸BÈTÑXcÐsxÕyñ9ñ
 'Ù8Øõ
	
ðE$KôZ$ 	Ü'¬¯©¹IØ59ÁÐ[`õbñ9ñ
 'Ù5ØÜŸ,™,ô	
ð[$Kôt$ 	Ü'¬¯©¸DÉrÑXcÐsxÕyñ9ð
 'Ù5áØÜŸ,™,õ	
ðu$KôP% 	Ü'¬¯©¹IÐTXÙ-8ÈõNñ8ñ
 'ÙCØÜŸ,™,ô	
ðQ%Kôj% 	Ü'¬¯©¸DÉrÑXcÐswÕxñ8ñ
 'ÙCáØÜŸ,™,õ	
ðk%KôF& 	Ü'¬¯	©	±rÕ:Ù8ÙÙ&ØÜŸ,™,ô	
ðG&KôV& 	Ü'¬¯	©	±qÄÇÁÕNÙNÙÙ,ØØÜŸ,™,õ	
ðW&Kôh& 	Ü'¬¯	©	±qÕ9Ù7Ù%Ù.ØÜŸ,™,ô	
ði&Kôx& 	Ü'¬¯	©	±qÕ9Ù7Ù#Ù&ØÜŸ,™,ô	
ðy&KôH' 	Ü'¬¯	©	±qÄÇÁÕNÙNÙ#Ù,ØØÜŸ,™,õ	
ðI'KôZ' 	Ü'¬¯	©	±qÕ9Ù7Ù#Ù.ØØÜŸ,™,õ	
ð['Kôl' 	Ü'¬¯	©	±qÕ9Ù7Ù#Ù.ØØÜŸ,™,õ	
ðm'Kô~' 	Ü'¬¯	©	±rÕ:Ù8ÙÙ0ØØõ	
ð'KôN( 	Ü'¬¯©¹2Õ>Ù;ÙÙ*ØÜŸ,™,ô	
ðO(Kô^( 	Ü'¬¯©¹1Õ=Ù:Ù%Ù2ØÜŸ,™,ô	
ð_(Kôn( 	Ü'¬¯©¹1Õ=Ù:Ù#Ù*ØÜŸ,™,ô	
ðo(Kô~( 	Ü'¬¯©¹1Õ=Ù:Ù#Ù'ØÜŸ,™,ô	
ð(KôN) 	Ü'¬¯©¹1Õ=Ù:Ù#Ù'ØÜŸ,™,ô	
ðO)Kô^) 	Ü'¬¯©¹1Õ=Ù:ÙÙ)Øõ	
ð_)Kôl) 	ÙÚIÙ!sÙ#Ø ØÜŸ,™,õ	
ðm)Kô~) 	ÙÚOÙ!yÙ!Ø ØÜŸ,™,õ	
ð)KôP* 	Ù.ÚOÙ!yÙØ Ü)ØÜŸ,™,õ		
ðQ*Kôd* 	Ù'Ú5Ù!_Ù#Ø ØÜŸ,™,õ	
ðe*Kôv* 	Ù%Ú6Ù!`Ù!Ø ØÜŸ,™,õ	
ðw*KôH+ 	Ù2Ú6Ù!`ÙÜ)Ø ØÜŸ,™,õ		
ðI+Kô\+ 	ÙÙ'Ù!RÙÙ&ØÜŸ,™,õ	
ð]+Kôn+ 	Ù*ÚEÜŸ,™,õ	
ðo+Kôx+ 	Ù*ÚEÙ ÜŸ,™,õ		
ðy+KôD, 	Ù*ÚDÙ ÜŸ,™,õ		
ðE,KôP, 	Ù*Ù/Ù!gÚEÙ(ÜŸ,™,õ	
ðQ,Kô`, 	Ù*Ú=Ü2ØÜŸ,™,õ	
ða,Kôn, 	Ù1Ù,ñ"5ñ !Ù"ØÙð  %Ø ÜŸ,™,õ	
ðo,KôP- 	Ù1Ù¡¡A¡s¬A¯F©FÐ3ñ"Añ !Ø Ù"ØÝ#.š4°DÜŸ,™,õ	
ðQ-Kôl- 	Ù1Ù+ñ"5ò HØ Ù"ØØÜŸ,™,õ	
ðm-KôF. 	Ù1Ù¡¡A¡s¬A¯F©FÐ3ñ"Aò HØ Ù"ØØÜŸ,™,õ	
ðG.Kôb. 	Ù%Ù¡¡A¡q©!©S´!·&±&Ð9ñ"Aò ZØ Ù#ØÝ#.™4±DÜŸ,™,õ!	
ðc.KôF/ 	Ù Ù#Ù!AÚ*ÚZØØØ ÜŸ,™,õ
	
ðG/Kô\/ 	Ù!Ù!XÙ%Ù Ü2ØÜŸ,™,õ	
ð]/Kôn/ 	Ù#Ù!JÙ ¤%§*¡*©a±¨VÓ"4Ð5Ù Ü2ØÜŸ,™,õ	
ðo/Kô@0 	Ù#Û*©D°%Ð8Ù!pÙ&ØØØ $ØÙ-õ
	
ðA0KÐô\0 +.Û9ÛYÐbfõ+hò #Ñ&ˆÐ&ñ ò 	ˆAØ‘AŠv˜,©)Ò3ð ÜœE¡! Q©¡U›OÓ,ˆGÙ¡§	¡	¬#¬c°7Ó*;Ó <Ñ<¹sÑBˆKÙ¡$¨¡(Ñ*ˆJÙ ¤5Ò(@¸Ô(@Ó#@Ñ@ˆKØ×#Ñ#ÜÙ"& q c© Ù&'©©A©q°'¹1¹aÀÀ|Ð%TÙ-<¸Q¸Cñ @6à6A°]ñ C;ð <LÐ:LÉAð*Qð  *Ø +ØØ(˜>©Ð7Ø"Ø#'Ü"'§,¡,õ!õñ	ð#óL'Ð#ð:Ù¡U¼U¿\¹\ÒJð:áÑ(©(Ð3ð:ñ 	¨%¸eÔV[×VbÑVbÒcð:ñ 	¨¸EÔTY×T`ÑT`Òað	:ñ 	˜u´u·|±|ÒDð:ñ 	‘¤§¡Ð.ð:ñ 	‘¤%§,¡,Ð/ð:ñ 	‘¤§¡Ð.ð:ñ 	‘¬¯©Ð5ð:ñ 	‘_¤e§l¡lÐ3ð:ñ 	‘o¤u§|¡|Ð4ð:ñ 	‘¬¯©Ð5ð:ñ 	‘¤%§,¡,Ð/ð:ñ  	‘/¤5§<¡<Ð0ð!:ñ" 	‘/¤5§<¡<Ð0ð#:ñ$ 	‘¤%§,¡,Ð/ð%:ñ& 	‘¤%§,¡,Ð/ð':ñ( !¤%§,¡,Ð/Ù#¤U§\¡\Ð2Ù$¤e§l¡lÐ3Ù&¬¯©Ð5Ù$¤e§l¡lÐ3Ù ¤%§,¡,Ð/Ù&¬¯©Ð5ó5:Ð%ð8 "Aò 
6ÐÜ#Ø-ÙÜ2ØØ %õ 
Ðð 7×:Ñ:Ð;PÐRTÓUˆ
Ø×#Ñ# JÔ/Ø×ÑÐ 4Õ5ð
6ð Ðr+   c                 ó6  — |rt        j                  |«      || z
  z  }n||j                  «       | z
  z  }|dk(  r|j                  «       S |dk(  r|j	                  «       S |dk(  r5|j                  «       dk7  r"|j	                  «       |j                  d«      z  S |S )Nr  rU  Ú	batchmeanr   )r7   r�   r¬   r  rU  rS  rg   )r¦  rN  r   r  r(   s        r)   Úkldivloss_referencerû  ¨
  sŒ   € ÙÜ—‘˜6Ó" f¨u¡nÑ5‰à˜6Ÿ:™:›<¨%Ñ/Ñ0ˆØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ	�kÒ	! f§j¡j£l°aÒ&7Ø�z‰z‹|˜fŸk™k¨!›nÑ,Ð,Ø€Mr+   c                 óÆ  — | j                  «       dk  rt        d| j                  «       › �«      ‚| j                  d«      }| j                  d«      }|f| j                  «       dd  z   }t        j                  |«      j                  | «      }|€$t        j                  |«      j                  | «      }d}	t        |D �
cg c]  }
t        |
«      ‘Œ c}
Ž D ]X  }||   }||k(  rdn||   j                  «       }t        |«      }|j                  d|«       | t        |«          |z  ||<   |	|z  }	ŒZ |dk(  r|j                  «       |	z  S |dk(  r|j                  «       S |S c c}
w )	NrZ   zExpected input.dim() >= 3, got r   r5   rP   r¡  r  rU  )rS  r%   rg   r7   r  r„   Úonesr   ré  Úitemr�  Úinsertr�  rU  )r¦  rN  r-   ry  r   ÚNÚCÚout_sizeÚoutputÚtotal_weightrg   ÚtupÚt_nxÚnormÚinput_indexs                  r)   ÚnlllossNd_referencer	  ¶
  sT  € à‡y�yƒ{�Q‚ÜÐ>¸u¿y¹y»{¸mÐLÓMÐMØ�
‰
�1‹€AØ�
‰
�1‹€AØˆt�e—j‘j“l 1 2Ð&Ñ&€HÜ�[‰[˜Ó"×*Ñ*¨5Ó1€Fà€~Ü—‘˜A“×&Ñ& uÓ-ˆØ€LÜ°Ö:¨œ˜t�Ò:Ð;ò ˆØ�c‰{ˆØ! TÒ)‰r¨v°d©|×/@Ñ/@Ó/BˆÜ˜3“iˆØ×Ñ˜1˜dÔ#ØœU ;Ó/Ñ0Ð0°4Ñ7ˆˆs‰Ø˜Ñ‰ðð �FÒØ�z‰z‹|˜lÑ*Ð*Ø	�eÒ	Ø�z‰z‹|ÐØ€Mùò ;s   Â>Ec                 ó   — | j                  «       dk  rt        d| j                  «       › �«      ‚t        j                  | d«      } | j	                  d«      }|€$t        j
                  |«      j                  | «      } |j                  d|gd„ | j                  dd  D «       ¢­Ž }|dkD  r!|dkD  rt        d|› �«      ‚|d|z
  z  ||z  z   }| |z  |z  j                  d¬«       }|d	k(  r|j                  «       S |d
k(  r|j                  «       S |S )NrP   zExpected input.dim() >= 2, got r5   c              3   ó    K  — | ]  }d –— Œ y­wr¿  ro   ©rÁ  r?   s     r)   rÂ  z;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>Ú
  s   è ø€ Ò < q¤Ñ <ùó   ‚r¡  rZ  z%Expected label_smoothing <= 1.0, got rR  r  rU  )rS  r%   r7   rä  rg   rý  r„   r:   ÚshaperU  r  )r¦  rN  r-   r   Úlabel_smoothingr  r  s          r)   Ú(cross_entropy_loss_prob_target_referencer  Ñ
  s  € à‡y�yƒ{�Q‚ÜÐ>¸u¿y¹y»{¸mÐLÓMÐMä×Ñ˜e QÓ'€EØ�
‰
�1‹€AØ€~Ü—‘˜A“×&Ñ& uÓ-ˆØˆV�[‰[˜˜AÐ=Ñ <¨E¯K©K¸¸¨OÔ <Ò=€Fà˜ÒØ˜SÒ Ü Ð#HÈÐHYÐ!ZÓ[Ð[Ø˜A Ñ/Ñ0°?ÀQÑ3FÑFˆà�v‰~ Ñ&×+Ñ+°Ð+Ó2Ð2€FØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 ó>  — t        j                  | d«      }t        j                  |||||¬«      }|dk(  r|S d|cxk  rdk  sn t	        d|› �«      ‚t        j                  | d«      } | j                  d«      }|�+|  |j                  d|gd„ | j                  dd  D «       ¢­Ž z  } t        j                  | d«       }	||k(  }
|	j                  |
d«       |dk(  r—|�bt        j                  |	«      |j                  d	|j                  |
j                  «       «      j                  «       «      j                  «       z  }nPt        j                  |	j                  |
j                  «       «      «      }n|d
k(  rt        j                  |	«      }n|	}d|z
  |z  |||z  z  z   S )Nr5   rx  r¡  rZ  z+Expected 0.0 < label_smoothing <= 1.0, got c              3   ó    K  — | ]  }d –— Œ y­wr¿  ro   r  s     r)   rÂ  z>cross_entropy_loss_indices_target_reference.<locals>.<genexpr>ü
  s   è ø€ Ò+G°!¬AÑ+Gùr  rP   r  r   rU  )r7   rä  r‚   rd  r%   rg   r:   r  rU  Úmasked_fill_ÚgatherÚmasked_selectÚlogical_notr]   r  )r¦  rN  r-   ry  r   r  Úlog_softmax_inputÚnlllossr  Úsmooth_lossÚignore_maskÚrets               r)   Ú+cross_entropy_loss_indices_target_referencer  é
  s‘  € ä×)Ñ)¨%°Ó3ÐÜ�j‰jØØØØ!Øô€Gð ˜#ÒØˆà�/Ô( SÔ(ÜÐJÈ?ÐJ[Ð\Ó]Ð]ä×Ñ˜e QÓ'€EØ�
‰
�1‹€AØÐØ˜˜Ÿ™ A qÐHÑ+G°u·{±{À1À2°Ô+GÒHÑHˆä—9‘9˜U AÓ&Ð&€Kà˜LÑ(€KØ×Ñ˜[¨#Ô.à�FÒØÐô —)‘)˜KÓ(¨6¯=©=¸¸F×<PÑ<PÐQ\×QhÑQhÓQjÓ<k×<sÑ<sÓ<uÓ+v×+zÑ+zÓ+|Ñ|‰Cä—*‘*˜[×6Ñ6°{×7NÑ7NÓ7PÓQÓR‰CØ	�eÒ	Ü�i‰i˜Ó$‰àˆà�Ñ 7Ñ*¨S°OÀaÑ4GÑ-HÑHÐHr+   c                 óv   — | j                   |j                   k(  rt        | ||||¬«      S t        | |||||¬«      S )N)r-   r   r  ©r-   r   ry  r  )r  r  r  )r¦  rN  r-   ry  r   r  s         r)   Úcross_entropy_loss_referencer    sK   € à‡{�{�f—l‘lÒ"Ü7ØØØØØ+ô-ð 	-ô ;Ø�6 &°IØ%°ô
ð 	
r+   c                 ó^  — |j                   d   }|j                   dd }	|j                   d   }
| j                   d d }t        j                  | |j                  d|
f«      |�|j                  d«      nd «      j                  g |¢|‘|	¢­«      }|�|nd}t        j                  ||||||¬«      S )Nr   r5   r6   éœÿÿÿr  )r  r‚   rE  ÚreshapeÚcross_entropy)r¦  Úlinear_weightrN  Úlinear_biasr-   ry  r   r  Únum_classesÚout_featuresÚin_featuresÚnum_batchesÚlogitss                r)   Ú#linear_cross_entropy_loss_referencer+  "  sÌ   € ð  ×%Ñ% aÑ(€KØ ×&Ñ& q¨Ð,€LØ×%Ñ% bÑ)€KØ—+‘+˜c˜rÐ"€KÜ�X‰XØØ×Ñ˜r ;Ð/Ó0Ø#.Ð#:ˆ×Ñ˜BÔÀó÷ �gÐ8�Ð8˜[Ð8¨<Ñ8Ó9ð	 ð
 $0Ð#;‘<À€LÜ�?‰?Ø�˜vØ¨,Ø'ôð r+   c           
      ó   — d„ }t        | |d¬«      D ��cg c]  \  }} |||||«      ‘Œ }}}t        |ddiŽ\  }	}
| j                  |	«      }|dk(  rt        |«      t        |
«      z  S |dk(  rt        |«      S |S c c}}w )Nc                 ó:   — ||k(  ry|€dn||   }| |    |z  }||fS )Nr‚  r5   ro   )r¦  rN  r-   ry  r  r(   s         r)   Únll_loss_helperz*nllloss_reference.<locals>.nll_loss_helper<  s6   € Ø�\Ò!ØØ�N‰q¨¨v©ˆØ˜‘-� $Ñ&ˆØ˜ˆ~Ðr+   Trº  r»  r  rU  )rè  Ú
new_tensorrU  )r¦  rN  r-   ry  r   r.  r=   r9   Úlosses_and_weightsÚlossesr.   Úlosses_tensors               r)   Únllloss_referencer3  9  s¡   € òô '*¨%°ÀÔ&E÷GÙ"˜a ñ *¨!¨Q°¸ÕEð GÐñ GäÐ-Ð;°dÑ;�O€FˆGØ×$Ñ$ VÓ,€MØ�FÒÜ�=Ó!¤C¨£LÑ0Ð0Ø	�eÒ	Ü�=Ó!Ð!àÐùóGs   •A:c                 ó  — | |z
  j                  «       }||k\  j                  |«      }||k  j                  |«      }|dk(  r|}n||d|z  z
  z  |dz  |dz  z  |z  z   }|dk(  r|j                  «       S |dk(  r|j                  «       S |S )Nr   rí  rP   r  rU  )r6  r„   r  rU  )r¦  rN  r   rï  Úabs_diffÚge_beta_maskÚlt_beta_maskr  s           r)   Úsmoothl1loss_referencer8  O  s¥   € Ø˜‘×#Ñ#Ó%€HØ Ñ$×-Ñ-¨hÓ7€LØ˜t‘O×,Ñ,¨XÓ6€Làˆq‚yØ‰à ¨C°$©JÑ!6Ñ7¸,ÈÑ:LÐPXÐ\]ÑP]Ñ:^ÐaeÑ:eÑeˆØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 óÈ   — | |z
  j                  «       }||k\  }||k  }||z  |d|z  z
  z  |dz  |dz  z  z   }|dk(  r|j                  «       S |dk(  r|j                  «       S |S )Nrí  rP   r  rU  )r6  r  rU  )r¦  rN  r   rý  r5  Úge_delta_maskÚlt_delta_maskr  s           r)   Úhuberloss_referencer<  _  s„   € Ø˜‘×#Ñ#Ó%€HØ Ñ&€MØ Ñ%€MØ˜UÑ" h°°u±Ñ&<Ñ=ÀÐPSÑ@SÐW_ÐcdÑWdÑ@eÑe€FØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c           	      óÌ   — g }|D ]  }|dk  r n|j                  |«       Œ d}|D ];  }t        t        | «      «      D ]"  }||vsŒ|t        dd| |   z
  | |   z   «      z  }Œ$ Œ= |S )Nr   r5   )rì  ré  Úlenr  )r¦  rN  ÚtargetsÚtarget_indexrU  r=   s         r)   Ú_multilabelmarginloss_referencerA  k  s’   € Ø€GØò %ˆØ˜!ÒÙØ�‰�|Õ$ð%ð
 €CØò BˆÜ”s˜5“zÓ"ò 	BˆAØ˜ÒØ”s˜1˜a %¨Ñ"5Ñ5¸¸a¹Ñ@ÓAÑA‘ñ	BðBð
 €Jr+   c                 ó  — | j                  «       }| j                  «       dk  r·|j                  «       dk\  rt        d|j                  «       › �«      ‚| j                  «       dk(  r| j                  d«      n| j                  d«      j                  d«      } |j                  «       dk(  r|j                  d«      n|j                  d«      j                  d«      }| j                  d«      }| j                  d«      }| j	                  |«      j                  «       }t        |«      D ]  }t        | |   ||   «      ||<   Œ |dk(  r|j                  «       |z  S |dk(  r|j                  «       |z  S |dk  r|j                  «       |z  S ||z  S )NrP   zExpected target.dim() < 2, got r5   r   r  rU  )rS  r%   r‘  rg   ÚnewÚzero_ré  rA  r  rU  r˜  )r¦  rN  r   Ú	input_dimÚnrS  r  r=   s           r)   Úmultilabelmarginloss_referencerG  {  s`  € à—	‘	“€IØ‡y�yƒ{�Q‚Ø�:‰:‹<˜1ÒÜ Ð#BÀ6Ç:Á:Ã<À.Ð!QÓRÐRØ&+§i¡i£k°QÒ&6�—‘ Ô"¸E¿O¹OÈAÓ<N×<XÑ<XÐYZÓ<[ˆØ(.¯
©
«¸Ò(9�×!Ñ! !Ô$¸v×?OÑ?OÐPQÓ?R×?\Ñ?\Ð]^Ó?_ˆà�
‰
�1‹€AØ
�*‰*�Q‹-€CØ�Y‰Y�q‹\×ÑÓ!€FÜ�1‹Xò IˆÜ3°E¸!±H¸fÀQ¹iÓHˆˆqŠ	ðIð �FÒØ�{‰{‹}˜sÑ"Ð"Ø	�eÒ	Ø�z‰z‹|˜cÑ!Ð!Ø	�QŠð �~‰~Ó #Ñ%Ð%à˜‰|Ðr+   c                 óÖ   — || z
  j                  d¬«      j                  | «      }t        j                  |dk(  | |«      }|dk(  r|j	                  «       S |dk(  r|j                  «       S |S )Nr   r  r5   r  rU  )r$  r„   r7   Úwherer  rU  )r¦  rN  r>  r   Úmargin_clampr  s         r)   Úhingeembeddingloss_referencerK  –  sg   € Ø˜U‘N×)Ñ)¨aÐ)Ó0×8Ñ8¸Ó?€LÜ�[‰[˜ 1™ e¨\Ó:€Fà�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 ó¤   — d|  |z  j                  «       z   j                  «       }|dk(  r|j                  «       S |dk(  r|j                  «       S |S )Nr5   r  rU  )r�   r¬   r  rU  )r¦  rN  r   r  s       r)   Úsoftmarginloss_referencerM  ¡  sQ   € Ø�E�6˜F‘?×'Ñ'Ó)Ñ)×.Ñ.Ó0€Fà�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c           	      óæ   — |€)| j                  t        | «      «      j                  d«      }d}t        t        | «      «      D ],  }||k7  sŒ	|||   t	        d|| |   z
  | |   z   «      |z  z  z  }Œ. |S )Nr5   r   )rC  r>  Úfill_ré  r  )r¦  Ú
target_idxr>   r>  r-   r  r=   s          r)   Ú_multimarginloss_referencerQ  «  sˆ   € Ø€~Ø—‘œ3˜u›:Ó&×,Ñ,¨QÓ/ˆà€FÜ”3�u“:Óò bˆØ�
‹?Ø�f˜ZÑ(¬C°°F¸UÀ:Ñ=NÑ4NÐQVÐWXÑQYÑ4YÓ,[Ð_`Ñ,`ÑaÑa‰Fðbð €Mr+   c                 ój  — | j                  «       dk  rD| j                  «       dk(  r| j                  d«      n| j                  d«      j                  d«      } |j                  «       }|j                  «       dk(  r|j                  d«      }| j                  d«      }| j                  d«      }| j                  |«      }	t	        |«      D ]  }
t        | |
   ||
   |||«      |	|
<   Œ |dk(  r|	j                  «       |z  S |dk(  r|	j                  «       |z  S |dk(  r|	j                  d«      |z  S |	|z  S )NrP   r5   r   r  rU  )	rS  r‘  rg   rC  ré  rQ  r  rU  r˜  )r¦  rN  r>   r>  r-   r   Ú
target_dimrF  rS  r  Úxs              r)   Úmultimarginloss_referencerU  ¶  s  € Ø‡y�yƒ{�Q‚Ø&+§i¡i£k°QÒ&6�—‘ Ô"¸E¿O¹OÈAÓ<N×<XÑ<XÐYZÓ<[ˆà—‘“€JØ‡z�zƒ|�qÒØ×!Ñ! !Ó$ˆà�
‰
�1‹€AØ
�*‰*�Q‹-€CØ�Y‰Y�q‹\€FÜ�1‹Xò WˆÜ.¨u°Q©x¸À¹ÀAÀvÈvÓVˆˆqŠ	ðWð �FÒØ�{‰{‹}˜sÑ"Ð"Ø	�eÒ	Ø�z‰z‹|˜cÑ!Ð!Ø	�qŠØ�~‰~˜aÓ  3Ñ&Ð&Ø�C‰<Ðr+   c                 óÜ   — d„ }t        j                  |dk(  d || |«      z
   || |«      |z
  j                  d¬«      «      }|dk(  r|j                  «       S |dk(  r|j	                  «       S |S )Nc                 ó6  — | j                  | j                  d«      «      }t        | j                  d«      «      D ][  }| |   ||   z  j                  «       | |   | |   z  j                  «       dz   ||   ||   z  j                  «       dz   z  dz  z  ||<   Œ] |S )Nr   gê-�™—q=rí  )rC  rg   ré  rU  )ÚaÚbÚcosr=   s       r)   Ú_cosz+cosineembeddingloss_reference.<locals>._cosÎ  s¢   € Ø�e‰e�A—F‘F˜1“IÓˆÜ�q—v‘v˜a“yÓ!ò 	tˆAØ˜‘d˜Q˜q™T‘k×&Ñ&Ó(¨q°©t°a¸±d©{×.?Ñ.?Ó.AÀEÑ.IÈqÐQRÉtÐVWÐXYÑVZÉ{×N_ÑN_ÓNaÐdiÑNiÑ-jÐorÑ,rÑsˆC�ŠFð	tàˆ
r+   r5   r   r  r  rU  )r7   rI  r$  r  rU  )Úinput1Úinput2rN  r>  r   r[  r  s          r)   Úcosineembeddingloss_referencer^  Í  st   € òô �[‰[˜ 1™ a©$¨v°vÓ*>Ñ&>ÁÀfÈfÓAUÐX^ÑA^×@eÑ@eÐjkÐ@eÓ@lÓm€Fà�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 óT  — t        j                  | |||«      }t        j                  | |||«      }	|r.t        j                  ||||«      }
t        j                  |	|
«      }	t        j                  ||z   |	z
  d¬«      }|dk(  r|j	                  «       S |dk(  r|j                  «       S |S )Nr¡  r  r  rU  )r7   Úpairwise_distancer  r$  r  rU  )ÚanchorÚpositiveÚnegativer>  r>   ÚepsÚswapr   Úd_pÚd_nÚd_sr  s               r)   Útripletmarginloss_referenceri  Ý  s�   € ä
×
!Ñ
! &¨(°A°sÓ
;€CÜ
×
!Ñ
! &¨(°A°sÓ
;€CÙÜ×%Ñ% h°¸!¸SÓAˆÜ�i‰i˜˜SÓ!ˆä�[‰[˜ #™¨Ñ+°Ô5€FØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 ó’   — | | |z
  z  |z   j                  d¬«      }|dk(  r|j                  «       S |dk(  r|j                  «       S |S )Nr   r  r  rU  )r$  r  rU  )r\  r]  rN  r>  r   r  s         r)   Úmarginrankingloss_referencerk  í  sR   € Øˆg˜ &™Ñ)¨FÑ2×9Ñ9¸aÐ9Ó@€FØ�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr+   c                 ó@  — t        j                  |t         j                  ¬«      }t        j                  |t         j                  ¬«      }| j                  }| j	                  «       } |j                  «       }|j                  d«      }g }t        | j                  d«      «      D �]|  }	||	   j                  «       }
||	   j                  «       }||	   j                  «       }|j                  d|z  dz   f|«      }|j                  «       dk(  r||	d |…f   |dd d…<   n|||z
  | |dd d…<   | d |
…|	f   j                  «       }| j                  |dz  dz   f«      }|d|f   |d<   |d|d   f   |d<   |d d |dd  k7  }t        d|
«      D ]b  }|j                  «       }|dd xxx |d d z  ccc |dd xxx t        j                  ||d d |j                  d«      «      z  ccc |||f   |z  }Œd |j                  |dd  j!                  «       j#                  «       d     «       �Œ t        j$                  |d«      }|dk(  r9||j'                  |j                  |j(                  ¬«      z  j+                  «       }n|d	k(  r|j!                  «       }|j'                  |«      }|S )
Nr¼   r   r5   rP   r°  r6   r  ©r½   ÚdevicerU  )r7   Ú	as_tensorre  r½   rf   Úcumsumré  rg   rþ  Únew_fullrS  r�   Ú	new_zerosÚclonerI  rì  rU  r¬   Úcatr±   rn  r  )Ú	log_probsr?  Úinput_lengthsÚtarget_lengthsÚblankr   ÚdtÚcum_target_lengthsr1  r=   Úinput_lengthÚtarget_lengthÚcum_target_lengthÚtargets_primeÚprobsÚalphaÚ
mask_thirdr9   Ú
alpha_nextr  s                       r)   Úctcloss_referencerƒ  ÷  sª  € Ü—O‘O M¼¿¹ÔD€MÜ—_‘_ ^¼5¿:¹:ÔF€NØ	�‰€BØ× Ñ Ó"€IØ�l‰l‹n€GØ'×.Ñ.¨qÓ1ÐØ€FÜ�9—>‘> !Ó$Ó%ó 5ˆØ$ QÑ'×,Ñ,Ó.ˆØ& qÑ)×.Ñ.Ó0ˆØ.¨qÑ1×6Ñ6Ó8ÐØ×(Ñ(¨!¨mÑ*;¸aÑ*?Ð)AÀ5ÓIˆØ�;‰;‹=˜AÒØ")¨!¨^¨m¨^Ð*;Ñ"<ˆM˜!˜$˜Q˜$Òà")Ð*;¸mÑ*KÐL]Ð"^ˆM˜!˜$˜Q˜$ÑØ˜-˜<˜-¨Ð*Ñ+×/Ñ/Ó1ˆØ×#Ñ# ]°QÑ%6¸Ñ%:Ð$<Ó=ˆØ˜˜E˜‘?ˆˆa‰Ø˜˜M¨!Ñ,Ð,Ñ-ˆˆa‰Ø# C RÐ(¨M¸!¸"Ð,=Ñ=ˆ
Ü�q˜,Ó'ò 	9ˆAØŸ™›ˆJØ�q�r‹N˜e C R˜jÑ(‹NØ�q�r‹NœeŸk™k¨*°e¸C¸R°jÀ%Ç/Á/ÐRSÓBTÓUÑU‹NØ˜!˜]Ð*Ñ+¨jÑ8‰Eð		9ð
 	�‰�u˜R˜S�z—~‘~Ó'×+Ñ+Ó-¨dÑ3Ð3Ö4ð'5ô( �Y‰Y�v˜qÓ!€FØ�FÒØ˜>×,Ñ,°6·<±<ÈÏÉÐ,ÓVÑV×\Ñ\Ó^‰Ø	�eÒ	Ø—‘“ˆØ�Y‰Y�r‹]€FØ€Mr+   rù   r  )r  rm  r°  rá  r  r  r3  rH  rh  ÚCosineEmbeddingLossÚTripletMarginLossÚMarginRankingLossÚCTCLossÚCrossEntropyLossÚLinearCrossEntropyLossr  rû   c                  ó¶   ‡— | d   }d„ }ˆfd„Š ‰| dd D �cg c]
  } ||«      ‘Œ c}«      } ||Ž }t        |«      }|dk(  r|j                  d«      S |S c c}w )zÚReference function for criterion supporting no batch dimensions.

    The criterion is passed the input and target in batched form with a single item.
    The output is squeezed to compare with the no-batch input.
    r6   c                 ó˜   — t        | t        t        f«      r| D �cg c]  }|j                  d«      ‘Œ c}S | j                  d«      S c c}w rM   r�  r’  s     r)   r”  z:single_batch_reference_criterion_fn.<locals>.unsqueeze_inp;  r•  r–  c                 óš   •— g }t        | t        t        f«      r | D ]  }|j                   ‰|«      «       Œ |S |j	                  | «       |S rn   )rŽ  r�  r�  Úextendrì  )Úxsr(   rT  r]   s      €r)   r]   z4single_batch_reference_criterion_fn.<locals>.flatten@  sO   ø€ ØˆÜ�bœ4¤˜-Ô(Øò *�Ø—‘™g a›jÕ)ð*ð ˆð �M‰M˜"ÔØˆr+   Nr€   r   )r*   r˜  )rq   Ú	criterionr”  r¦  Úsingle_batch_input_argsr  r   r]   s          @r)   Ú#single_batch_reference_criterion_fnr‘  3  sr   ø€ ð �R‘€Iò ô
ñ &ÈÈcÈrÈÖ&SÀ¡}°UÕ';Ò&SÓTÐáÐ/Ð0€FÜ˜iÓ(€Ià�FÒØ�~‰~˜aÓ Ð à€Mùò 'Ts   ˜A)ÚL1LossÚMSELossÚPoissonNLLLossr  rá  )r€   r  rU  Ú_no_batch_dim_)Únamec                 ó8   —  t        t        | «      t        ¬«      S ©Nr�   ©r"   ry   r   ©r–  rq   s     r)   r@   r@   \  ó   € Ð->¬W´R¸Ó->ÌÔ-S€ r+   rÂ  )r�   r‘   rF   Útarget_sizerG   rß  rJ   ÚKLDivLoss_no_batch_dim_c                  ó6   — t        j                  t        ¬«      S r˜  )ry   rù   r   ro   r+   r)   r@   r@   i  s   € œBŸL™L´9Ô=€ r+   c                  óH   — t        j                  d«      j                  «       S ©NrÂ  rõ   ro   r+   r)   r@   r@   j  s   € œŸ™ DÓ)×-Ñ-Ó/€ r+   c                  ó,   — t        j                  d«      S r   r‰   ro   r+   r)   r@   r@   k  s   € œ%Ÿ*™* TÓ*€ r+   )r�   r‘   r“   Ú	target_fnrG   rß  rJ   ÚBCELossc                  ór   — t        j                  t        j                  dt         j                  ¬«      «      S ©Nr:  r¼   )r7   rÙ   r—   rf   ro   r+   r)   r@   r@   x  s   € ”—‘œeŸk™k¨!´5·<±<Ô@ÓA€ r+   c                  ó¤   — t        j                  dt         j                  ¬«      j                  d«      j	                  t         j                  «      S )Nr:  r¼   r   )r7   r—   rf   r°   r±   ro   r+   r)   r@   r@   y  s/   € ”—‘˜A¤U§\¡\Ô2×5Ñ5°aÓ8×;Ñ;¼E¿L¹LÓI€ r+   ÚBCEWithLogitsLossc                  óL   — t        j                  dt         j                  ¬«      S r¥  ©r7   r—   rf   ro   r+   r)   r@   r@   {  s   € ¤%§+¡+¨a´u·|±|Ô"D€ r+   c                  óL   — t        j                  dt         j                  ¬«      S r¥  r©  ro   r+   r)   r@   r@   {  s   € ÌeÏkÉkÐZ[Ôch×coÑcoÔNp€ r+   c                  óL   — t        j                  dt         j                  ¬«      S r¥  r©  ro   r+   r)   r@   r@   |  s   € ¤5§;¡;¨q¼¿¹Ô#E€ r+   c                  ó6   — t        j                  g d¢dz  «      S ©N)r6   r5   r5   rZ   ©r7   Útensorro   r+   r)   r@   r@   |  s   € ÌuÏ|É|Ò\fÐijÑ\jÓOk€ r+   c                  óL   — t        j                  dt         j                  ¬«      S )Nr3   r¼   r©  ro   r+   r)   r@   r@   }  s   € ¤U§[¡[°¼%¿,¹,Ô%G€ r+   c                  ó0   — t        j                  g d¢«      S )N)rZ   r   r6   r5   r®  ro   r+   r)   r@   r@   }  s   € ÔQV×Q]ÑQ]Ò^kÓQl€ r+   c                  óL   — t        j                  dt         j                  ¬«      S r¥  r©  ro   r+   r)   r@   r@   ~  s   € œuŸ{™{¨1´E·L±LÔA€ r+   c                  ó6   — t        j                  g d¢dz  «      S r­  r®  ro   r+   r)   r@   r@   ~  s   € Ì5Ï<É<ÒXbÐefÑXfÓKg€ r+   c                  óv   — t        j                  t        j                  dt        j                  ¬«      d¬«      S )NrZ   r¼   r   rR  )r‚   rä  r7   r—   rf   ro   r+   r)   r@   r@     s    € œŸ™¤e§k¡k°!¼5¿<¹<Ô&HÈaÔP€ r+   c                  ó,   — t        j                  d«      S r\   r®  ro   r+   r)   r@   r@     s   € ÔZ_×ZfÑZfÐghÓZi€ r+   c                  ó–   — t        j                  dt         j                  ¬«      t        j                  dt         j                  ¬«      fS r¥  r©  ro   r+   r)   r@   r@   ‚  ó)   € ”—‘˜Q¤e§l¡lÔ3´U·[±[ÀÌ%Ï,É,Ô5WÐX€ r+   c                  óL   — t        j                  dt         j                  ¬«      S )Nr5   r¼   )r7   r¯  rf   ro   r+   r)   r@   r@   ƒ  s   € ”—‘˜Q¤e§l¡lÔ3€ r+   c                  óV   — t        j                  d«      t        j                  d«      fS r  r2  ro   r+   r)   r@   r@   †  s   € ¤5§;¡;¨r£?´E·K±KÀ³OÐ"D€ r+   c                  óH   — t        j                  d«      j                  «       S r  )r7   r—   Úsignro   r+   r)   r@   r@   †  s   € ÌeÏkÉkÐZ\Ëo×NbÑNbÓNd€ r+   c                  ó–   — t        j                  dt         j                  ¬«      t        j                  dt         j                  ¬«      fS r¥  r©  ro   r+   r)   r@   r@   Š  r·  r+   c                  óL   — t        j                  dt         j                  ¬«      S r¥  r©  ro   r+   r)   r@   r@   ‹  s   € ”—‘˜A¤U§\¡\Ô2€ r+   ÚMultiLabelSoftMarginLossc                  óL   — t        j                  dt         j                  ¬«      S r¥  r©  ro   r+   r)   r@   r@   �  s   € ¬¯©°Q¼e¿l¹lÔ)K€ r+   c                  ó,   — t        j                  d«      S )Nr:  r2  ro   r+   r)   r@   r@   �  s   € ÔUZ×U`ÑU`ÐabÓUc€ r+   rb   Ú,classification_criterion_no_batch_extra_info)r£  r§  r3  rm  rH  c                 ó8   —  t        t        | «      t        ¬«      S r˜  r™  rš  s     r)   r@   r@   Ÿ  r›  r+   c                 ó   —  | «       S rn   ro   ©Úfs    r)   r@   r@      s   € ¡A£C€ r+   c                 ó   —  | «       S rn   ro   rÄ  s    r)   r@   r@   ¡  s   € ¡a£c€ r+   )r�   r‘   r“   r¢  rG   rß  Ú
has_parityc                   óx  — e Zd Zed„ «       Zedej                  deeej                     eej                     f   fd„«       Z
edej                  ddfd„«       Ze	 ddej                  dedej                  d	ej                  eej                     z  d
ef
d„«       Zd„ Zd„ Zd„ Zddefd„Zddefd„Zddefd„Zy)Ú
NNTestCasec                 ó   — t         ‚rn   ©ÚNotImplementedError)rp   rq   rs   s      r)   Ú_forwardzNNTestCase._forward®  ó   € ä!Ð!r+   rš  Úreturnc                 ó   — t         ‚rn   rË  ©rp   rš  s     r)   Ú_get_parameterszNNTestCase._get_parameters²  rÎ  r+   Nc                 ó   — t         ‚rn   rË  rÑ  s     r)   Ú_zero_grad_parametersz NNTestCase._zero_grad_parameters¶  rÎ  r+   r¦  r  Úgrad_outputÚcreate_graphc                 ó   — t         ‚rn   rË  )rp   rš  r¦  r  rÕ  rÖ  s         r)   Ú	_backwardzNNTestCase._backwardº  s
   € ô
 "Ð!r+   c                 ó  ‡ ‡— t        |t        «      rt        ˆˆ fd„|D «       «      S t        |t        «      r |D �cg c]  }‰ j                  |‰«      ‘Œ c}S t	        j
                  |j                  «       ‰«      S c c}w )Nc              3   óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wrn   )Ú	_jacobian)rÁ  ÚelemÚnum_outrp   s     €€r)   rÂ  z'NNTestCase._jacobian.<locals>.<genexpr>Ã  s   øè ø€ ÒI¸4˜Ÿ™¨¨g×6ÑIùs   ƒ)rŽ  r�  r�  rÛ  r7   r  Únelement)rp   r¦  rÝ  rÜ  s   ` ` r)   rÛ  zNNTestCase._jacobianÁ  sb   ù€ Ü�eœUÔ#ÜÔIÀ5ÔIÓIÐIÜ˜œtÔ$Ø>CÖD°d�D—N‘N 4¨Õ1ÒDÐDä—;‘;˜uŸ~™~Ó/°Ó9Ð9ùò Es   ¼A<c                 óØ   ‡ — t        |t        j                  «      r<|j                  r|j	                  «       j                  d«      S |j                  d«      S t        ˆ fd„|D «       «      S )Nr6   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   )Ú_flatten_tensors)rÁ  rX  rp   s     €r)   rÂ  z.NNTestCase._flatten_tensors.<locals>.<genexpr>Ð  s   øè ø€ Ò=°a˜×.Ñ.¨q×1Ñ=ùó   ƒ)rŽ  r7   r—  Ú	is_sparseÚto_denser:   r�  )rp   rT  s   ` r)   rá  zNNTestCase._flatten_tensorsÉ  sN   ø€ Ü�aœŸ™Ô&Ø�{Š{Ø—z‘z“|×(Ñ(¨Ó,Ð,à—v‘v˜b“zÐ!äÓ=¸1Ô=Ó=Ð=r+   c                 ó  — t        |t        j                  «      rO|j                  rB|j                  �5|j                  j                  «        |j                  j                  «        y y y |D ]  }| j                  |«       Œ y rn   )rŽ  r7   r—  r  ÚgradrD  Údetach_Ú_zero_grad_input)rp   r¦  r=   s      r)   rè  zNNTestCase._zero_grad_inputÒ  si   € Ü�eœUŸ\™\Ô*Ø×"Ò" u§z¡zÐ'=Ø—
‘
× Ñ Ô"Ø—
‘
×"Ñ"Õ$ð (>Ð"ð ò )�Ø×%Ñ% aÕ(ñ)r+   c                 ó–  — | j                  ||«      }|j                  «       }|r&| j                  ||«      }t        t	        |«      «      }|r:t        d„ | j                  |«      d   D «       «      }	t        j                  |	|«      }
t        |«      D �]  }| j                  |«      \  }}t        ||d¬«      D ��cg c]  \  }}|€t        j                  |«      n|‘Œ  }}}t        j                  |«      }|j                  d«      }d||<   |r| j                  |«       |r| j                  |«       | j                  ||||«      }|r7t        t	        |«      d¬«      D ]  \  }}|j!                  d«      |d d …|f<   Œ |sŒðt        j"                  | j%                  |«      d«      
d d …|f<   �Œ d}|r|fz  }|r|
fz  }|S c c}}w )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   )ÚnumelrÀ  s     r)   rÂ  z2NNTestCase._analytical_jacobian.<locals>.<genexpr>ä  s   è ø€ ÒO¨!˜AŸG™GŸIÑOùó   ‚r   Trº  r6   r5   ro   )rÍ  rÞ  rÛ  r�  r   rU  rÒ  r7   r  ré  rè  Ú
zeros_liker:   rÔ  rè  rØ  r"  rt  rá  )rp   rš  r¦  Újacobian_inputÚjacobian_parametersr  rÇ  Újacobian_inpÚflat_jacobian_inputÚ	num_paramÚjacobian_paramr=   ÚparamÚd_paramr>   rÄ  Úd_outÚ
flat_d_outÚd_inputÚ
jacobian_xÚd_xÚress                         r)   Ú_analytical_jacobianzNNTestCase._analytical_jacobianÛ  sÅ  € Ø—‘˜v uÓ-ˆØ—o‘oÓ'ˆáØŸ>™>¨%°Ó=ˆLÜ"&¤}°\Ó'BÓ"CÐáÜÑO¨t×/CÑ/CÀFÓ/KÈAÑ/NÔOÓOˆIÜ"Ÿ[™[¨°KÓ@ˆNä�{Ó#ó 	TˆAØ!×1Ñ1°&Ó9‰NˆE�7äMPÐQVÐX_ÐhlÔMm×nÁ6ÀAÀq¨a¨i”u×'Ñ'¨Ô*¸QÑ>ÐnˆGÑnä×$Ñ$ VÓ,ˆEØŸ™ B›ˆJØˆJ�q‰Má"Ø×*Ñ*¨6Ô2áØ×%Ñ% eÔ,Ø—n‘n V¨U°F¸EÓBˆGáÜ'*Ð+>ÄÈgÓ@VÐ_cÔ'dò 7‘O�J Ø'*§{¡{°2£�Jšq !˜tÒ$ð7â"Ü',§y¡y°×1FÑ1FÀwÓ1OÐQRÓ'S�šq !˜tÓ$ð)	Tð, )+ˆÙØ�<�=Ñ ˆCÙØ�>�?Ñ"ˆCàˆ
ùó3 os   Â;#Gc                 ó   ‡ ‡— ˆˆ fd„}d}|r|t        ||d¬«      fz  }|r]‰ j                  ‰«      \  }}g }	|D ](  }
t        |||
d¬«      }|	j                  |d   d   «       Œ* |t        j                  |	d«      fz  }|S )Nc                  óD   •— ‰j                  ‰| «      j                  «       S rn   )rÍ  Údetach)r¦  rš  rp   s    €€r)   Úfwz*NNTestCase._numerical_jacobian.<locals>.fw  s   ø€ Ø—=‘= ¨Ó/×6Ñ6Ó8Ð8r+   ro   ç�íµ ÷Æ°>)rd  )rN  rd  r   )r   rÒ  rì  r7   rt  )rp   rš  r¦  rî  rï  r   rû  rô  r?   Úto_catr>   Újacobians   ``          r)   Ú_numerical_jacobianzNNTestCase._numerical_jacobian  s—   ù€ õ	9ð )+ˆÙØÔ*¨2¨u¸$Ô?Ð@Ñ@ˆCÙØ×+Ñ+¨FÓ3‰HˆE�1ØˆFØò .�Ü2°2°uÀQÈDÔQ�à—‘˜h q™k¨!™nÕ-ð.ð ”E—I‘I˜f aÓ(Ð*Ñ*ˆCØˆ
r+   c                 ó  — t        | j                  |«      d   «      }| j                  ||||«      }| j                  ||||«      }t	        t        |«      «      }t	        t        |«      «      }g }	t        ||d¬«      D ]W  \  }
}|
j                  «       dk7  sŒ|	j                  |
j                  |d¬«      j                  «       j                  «       «       ŒY t        |	«      dkD  r | j                  t        |	«      t        «       y y )Nr   Trº  r6   )r€  )ÚboolrÒ  rü  r  r�  r   rè  rë  rì  r�  r6  r  r>  ÚassertLessEqualÚ	PRECISION)rp   rš  r¦  rî  rï  Ú
analyticalÚ	numericalÚanalytical_tÚnumerical_tÚdifferencesrX  rF  s               r)   Úcheck_jacobianzNNTestCase.check_jacobian  sï   € Ü" 4×#7Ñ#7¸Ó#?ÀÑ#BÓCÐØ×.Ñ.¨v°u¸nÐNaÓbˆ
Ø×,Ñ,¨V°U¸NÐL_Ó`ˆ	ÜœM¨*Ó5Ó6ˆÜœ=¨Ó3Ó4ˆàˆÜ˜ k¸$Ô?ò 	C‰DˆAˆqØ�w‰w‹y˜A‹~Ø×"Ñ" 1§5¡5¨°" 5Ó#5×#9Ñ#9Ó#;×#?Ñ#?Ó#AÕBð	Cô ˆ{Ó˜aÒØ× Ñ ¤ [Ó!1´9Õ=ð  r+   ©F)TT©T)ru   rv   rw   r   rÍ  ry   rz   r�  r�  Ú	ParameterrÒ  rÔ  r   r7   r—  r   r  rØ  rÛ  rá  rè  rü  r  r  ro   r+   r)   rÉ  rÉ  «  s  „ ð ñ"ó ð"ð ð" b§i¡ið "°E¸$¸r¿|¹|Ñ:LÈdÐSU×S_ÑS_ÑN`Ð:`Ñ4aò "ó ð"ð ð"¨B¯I©Ið "¸$ò "ó ð"ð ð (-ñ" §	¡	ð "Ø)ð"Ø38·<±<ð"à$Ÿ|™|¨h°u·|±|Ñ.DÑDð"ð !%ò"ó ð"ò:ò>ò)ñ(Ð2Bó (ñTÐ1Aó ñ">Ð,<ô >r+   rÉ  c                   ó\   — e Zd Zh d£Zdd„Zd„ Zd„ Zed„ «       Zed„ «       Z	d„ Z
dd	„Zd
„ Zy)ÚTestBase>   r¦  Ú
extra_argsrD   Nc                 óô   — || _         || _        || _        || _        | j                  D ]?  }||vsŒ|dz   |vsŒ|dz   |vsŒ|dv rd||<   Œ"t        | j                  «       › d|› d�«      ‚ || _        i | _        y )NÚ_fnÚ_size>   r  rD   ro   z
: Specify z5 by a value, a function to generate it, or it's size!)	rN   r�   r‘   rG   Ú_required_arg_namesÚ
ValueErrorÚget_nameÚ_extra_kwargsÚ
_arg_cache)rp   r‘   rN   rG   r�   rs   r–  s          r)   Ú__init__zTestBase.__init__*  s™   € ØˆŒ	Ø ˆŒØ&ˆÔØ(ˆÔØ×,Ñ,ò 	@ˆDØ˜6Ò! d¨U¡l¸&Ò&@ÀTÈGÁ^Ð[aÒEaØÐ=Ñ=Ø#%�F˜4’Lä$¨¯©«Ð'8¸
À4À&ÐH}Ð%~ÓÐð	@ð $ˆÔØˆ�r+   c                 óª   — | j                   �d| j                   z   S d| j                  j                  z   }| j                  r|d| j                  z   z  }|S )NÚtest_r?   )r�   r‘   ru   rN   )rp   Ú	test_names     r)   r  zTestBase.get_name8  sP   € Ø�=‰=Ð$Ø˜TŸ]™]Ñ*Ð*à˜d×.Ñ.×7Ñ7Ñ7ˆ	Ø�9Š9Ø˜˜tŸy™y™Ñ(ˆIØÐr+   c                 óŠ   ‡ — t        |t        j                  «      r|S t        |«      r t	        |«      ˆ fd„|D «       «      S |S )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   )Ú_unpack)rÁ  Úvrp   s     €r)   rÂ  z#TestBase._unpack.<locals>.<genexpr>E  s   øè ø€ Ò>°1˜tŸ|™|¨AŸÑ>ùrâ  )rŽ  r7   r—  r   Útype)rp   Úvalues   ` r)   r#  zTestBase._unpackA  s:   ø€ Ü�eœUŸ\™\Ô*ØˆLÜ˜ÔØ”4˜“;Ó>¸Ô>Ó>Ð>àˆLr+   c                 ó&   — | j                  dd«      S )NrD   T©Ú_get_arg©rp   s    r)   rD   zTestBase.constructor_argsI  s   € à�}‰}Ð/°Ó6Ð6r+   c                 ó&   — | j                  dd«      S )Nr  Tr(  r*  s    r)   r  zTestBase.extra_argsM  s   € à�}‰}˜\¨4Ó0Ð0r+   c                 ó6  ‡— || j                   vrt        d|› d�«      ‚|| j                  vr¿|dz   }|dz   }|| j                  v r| j                  |   | j                  |<   nŠ|| j                  v r" | j                  |   «       | j                  |<   nZ|| j                  vr%t        d|› d|› d|› d| j	                  «       › �«      ‚ˆfd	„Š ‰| j                  |   «      | j                  |<   |r| j                  | j                  |   «      S | j                  |   S )
NzExpected name 'z' to be in required arg namesr  r  z	Missing `z`, `z` or `z` for c                 óØ   •— t        | t        «      r| D �cg c]
  } ‰|«      ‘Œ c}S t        | t        j                  «      r| j	                  «       S t        j
                  | «      S c c}w rn   )rŽ  r�  r7   r—  rf   r—   )ÚsizesÚsÚmap_tensor_sizess     €r)   r0  z+TestBase._get_arg.<locals>.map_tensor_sizesc  sS   ø€ Ü! %¬Ô.Ø=BÖC¸Ñ 0°Õ 3ÒCÐCÜ# E¬5¯<©<Ô8Ø$Ÿ|™|›~Ð-ä$Ÿ{™{¨5Ó1Ð1ùò	  Ds   –A')r  r%   r  r  r  r#  )rp   r–  ÚunpackÚfn_nameÚ	size_namer0  s        @r)   r)  zTestBase._get_argQ  s#  ø€ Ø�t×/Ñ/Ñ/Ü  ?°4°&Ð8UÐ!VÓWÐWà�t—‘Ñ&Ø˜U‘lˆGØ˜w™ˆIà�t×)Ñ)Ñ)Ø(,×(:Ñ(:¸4Ñ(@�—‘ Ò%Ø˜D×.Ñ.Ñ.Ø(C¨×(:Ñ(:¸7Ñ(CÓ(E�—‘ Ò%à D×$6Ñ$6Ñ6Ü(Ø# D 6¨¨i¨[¸¸w¸iÀvÈdÏmÉmËoÐM^Ð_óð ô2ñ )9¸×9KÑ9KÈIÑ9VÓ(W�—‘ Ñ%á6<ˆt�|‰|˜DŸO™O¨DÑ1Ó2ÐWÀ$Ç/Á/ÐRVÑBWÐWr+   c                 ó&   — | j                  d|«      S )Nr¦  r(  )rp   r1  s     r)   Ú
_get_inputzTestBase._get_inputo  s   € Ø�}‰}˜W fÓ-Ð-r+   c                 ó   — t         ‚rn   rË  )rp   Ú	test_cases     r)   Ú__call__zTestBase.__call__r  s   € Ü!Ð!r+   )Ú NNr  )ru   rv   rw   r  r  r  r#  ÚpropertyrD   r  r)  r5  r8  ro   r+   r)   r  r  &  sO   „ âEÐóòòð ñ7ó ð7ð ñ1ó ð1òXó<.ó"r+   r  c            	       ól   ‡ — e Zd Zededej                  dedefd„«       Zˆ fd„Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )Ú
ModuleTestr7  rš  r¦  rÏ  c                 ó   — t         ‚rn   rË  )rp   r7  rš  r¦  s       r)   Ú_do_testzModuleTest._do_testx  rÎ  r+   c                 óÞ  •— t        ‰| �  |i |¤Ž |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd	«      | _        |j                  d
d«      | _	        |j                  d«      | _
        | j                  €t        j                  «       | _
        y y )Nrî  TrQ   r•   rb   Ú!FIXME_no_cuda_gradgrad_comparisonFr¯   g-Cëâ6*?Úcheck_forward_onlyrJ   )Úsuperr  rí  rî  Úshould_test_cudaÚshould_test_picklerb   r@  r¯   rA  rJ   r7   Úget_default_dtype©rp   rq   rs   Ú	__class__s      €r)   r  zModuleTest.__init__|  sÓ   ø€ Ü‰Ñ˜$Ð) &Ò)Ø$Ÿj™jÐ)9¸4Ó@ˆÔØ &§
¡
¨;¸Ó =ˆÔØ"(§*¡*¨X°tÓ"<ˆÔØ$Ÿj™jÐ)9¸4Ó@ˆÔà�J‰JÐ:¸EÓBð 	Ô.àŸ™ K°Ó6ˆŒØ"(§*¡*Ð-AÀ5Ó"IˆÔØ#ŸZ™Z¨Ó8ˆÔØ×ÑÐ%Ü!&×!8Ñ!8Ó!:ˆDÕð &r+   c           	      ój  — t        | j                  «      5   | j                  | j                  Ž }| j	                  «       }| j
                  �a|j                  ||«      }t        |«      }t        |«      }| j                  ||j                  |«      d   |«      }|j                  ||d¬«       | j                  r
	 d d d «       y | j                  |||«       | j                  rŸt        j                  «       5 }|j                  ||«       t        j                   ||«       |j#                  d«       t        j$                  |d¬«      }	|j                  |j                  ||«      |j                  |	|«      «       d d d «       | j'                  |||«       d d d «       y # 1 sw Y   Œ%xY w# 1 sw Y   y xY w)Nr   F)Úexact_dtype)Úweights_only)r   rJ   r‘   rD   r5  rG   rÍ  r   rÒ  ÚassertEqualrA  Útest_noncontigrD  ÚtempfileÚTemporaryFiler7   ÚsaveÚseekÚloadr>  )
rp   r7  rš  r¦  ÚoutÚ	ref_inputÚ
ref_moduleÚexpected_outrÅ  Úmodule_copys
             r)   r8  zModuleTest.__call__Š  sŒ  € Ü˜t×1Ñ1Ó2ñ 	4Ø%�T×%Ñ% t×'<Ñ'<Ð=ˆFØ—O‘OÓ%ˆEà× Ñ Ð,Ø×(Ñ(¨°Ó7�Ü$ U›O�	Ü% fÓ-�
Ø#×0Ñ0°¸I×<UÑ<UÐV\Ó<]Ð^_Ñ<`ÐblÓm�Ø×%Ñ% c¨<ÀUÐ%ÔKØ×&Ò&Ø÷	4ð 	4ð ×Ñ 	¨6°5Ô9à×&Ò&ä×+Ñ+Ó-ð u°Ø×&Ñ& v¨uÔ5Ü—J‘J˜v qÔ)Ø—F‘F˜1”Iä"'§*¡*¨Q¸UÔ"C�KØ×)Ñ)¨)×*<Ñ*<¸VÀUÓ*KÈY×M_ÑM_Ð`kÐmrÓMsÔt÷uð �M‰M˜) V¨UÔ3÷1	4ð 	4÷ uð uú÷!	4ð 	4ús+   –B$F)Ã3F)Ã6BFÅ9F)ÆF&	Æ"F)Æ)F2c                 óŽ  ‡ — t        |t        «      r|D �cg c]  }‰ j                  |«      ‘Œ c}S t        |t        «      rt        ˆ fd„|D «       «      S |}|j	                  «       }|}t        |«      D ]  }|j                  |«      dkD  sŒ|dz   } n t        j                  t        j                  |«      |g|«      j                  |d«      j                  «       }|j                  «       dk(  s?|j                  «       dk(  s,|j                  «       rt        d|j                  «       › �«      ‚|j                  |_        |S c c}w )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   )Únoncontiguize)rÁ  Úorp   s     €r)   rÂ  z+ModuleTest.noncontiguize.<locals>.<genexpr>©  s   øè ø€ Ò<°1˜×+Ñ+¨A×.Ñ<ùrâ  r5   r   zFExpected noncontig to be non-contiguous or have numel <= 1, got numel=)rŽ  r�  rY  r�  rS  ré  rg   r7   r$  Ú
empty_likeÚselectrÿ  rë  Úis_contiguousr%   r  )rp   ÚobjrZ  r¯  ÚndimrS  rÄ  Ú	noncontigs   `       r)   rY  zModuleTest.noncontiguize¥  s)  ø€ Ü�cœ4Ô Ø36Ö7¨a�D×&Ñ& qÕ)Ò7Ð7Ü˜œUÔ#ÜÓ<¸Ô<Ó<Ð<ØˆØ�z‰z‹|ˆð
 ˆÜ�t“ò 	ˆAØ�{‰{˜1‹~ Ó!Ø˜!‘e�Ùð	ô —K‘K¤×!1Ñ!1°&Ó!9¸6Ð BÀCÓH×OÑOÐPSÐUVÓW×^Ñ^Ó`ˆ	Ø—‘Ó! QÒ&¨)¯/©/Ó*;¸qÒ*@È	×H_ÑH_ÔHaÜ ØXÐYb×YhÑYhÓYjÐXkÐlóð ð #)×"6Ñ"6ˆ	ÔØÐùò) 8s   –Ec           	      óX  — t        |t        j                  «      r|j                  «       dk(  ry t	        d„ |D «       «      ry |j                  |«       |j                  |«       t        «       5  |j                  ||«      }t        |dd«      r|d   }|j                  |j                  «      j                  «       }|j                  «       }t        |j                  ||||«      «      }t        |j!                  |«      d   «      }d d d «       | j#                  |«      }| j#                  «      }	t%        dd¬«      D ]Ò  \  }
}|
r|n|}t        |r|n|	«      }|j                  |«       |j                  |«       t        «       5  |j                  ||«      }t        |dd«      r|d   }|j                  ||||«      }|j'                  |«       |j'                  |d	d¬
«       |j'                  |j!                  |«      d   «       d d d «       ŒÔ y # 1 sw Y   �ŒxY w# 1 sw Y   ŒìxY w)Nr   c              3   óx   K  — | ]2  }t        |t        j                  «      sŒ|j                  «       d k(  –— Œ4 y­w)r   N)rŽ  r7   r—  rS  )rÁ  r=   s     r)   rÂ  z,ModuleTest.test_noncontig.<locals>.<genexpr>Á  s'   è ø€ ÒJ ¬j¸¼E¿L¹LÕ.Iˆq�u‰u‹w˜!�|ÑJùs   ‚:¢:Úreturn_indicesFr5   ©TFrP   )r3  g-Cëâ6?©ÚatolÚrtol)rŽ  r7   r—  rS  ÚanyrÔ  rè  r   rÍ  r"   rC  r  Únormal_rs  r   rØ  rÒ  rY  r   rK  )rp   r7  rš  r¦  r  rÕ  rø  rõ  Únc_inputÚnc_grad_outputÚcontig_iÚcontig_gr=   ÚgorR  ræ  s                   r)   rL  zModuleTest.test_noncontig½  s  € ä�eœUŸ\™\Ô*¨u¯y©y«{¸aÒ/?ØÜÑJ UÔJÔJØà×'Ñ'¨Ô/Ø×"Ñ" 5Ô)ÜÓñ 	EØ×'Ñ'¨°Ó6ˆFÜ�vÐ/°Ô7Ø ™�Ø Ÿ*™* V§\¡\Ó2×:Ñ:Ó<ˆKØ—\‘\“^ˆFÜ˜y×2Ñ2°6¸5À&È+ÓVÓWˆGÜ˜y×8Ñ8¸Ó@ÀÑCÓDˆG÷	Eð ×%Ñ% eÓ,ˆØ×+Ñ+¨KÓ8ˆÜ")¨-ÀÔ"Bò 	UÑˆH�hÙ!‘ xˆAô ©™+°~ÓFˆBØ×+Ñ+¨FÔ3Ø×&Ñ& qÔ)Ü!Ó#ñ UØ×(Ñ(¨°Ó3�Ü˜6Ð#3°UÔ;Ø˜a™&�CØ ×*Ñ*¨6°1°c¸2Ó>�à×%Ñ% c¨6Ô2Ø×%Ñ% d¨G¸$ÀQÐ%ÔGØ×%Ñ% i×&?Ñ&?ÀÓ&GÈÑ&JÈGÔT÷Uð Uñ	U÷	Eñ 	Eú÷$Uð Uús   Á.BHÆBH ÈHÈ H)	c           	      óö
  — t         r| j                  st        j                  d«      ‚t	        | j
                  «      5  | j                  «       }t        j                  t        j                  i}t        |t        «      r|n|f}t        d„ |D «       «      }t        ||¬«      } | j                  | j                  Ž } | j                  | j                  Ž j                  «       j!                  «       }|j#                  |«      }	|j#                  |«      }
t%        |	d   |
d   d¬«      D ]   \  }}|j&                  j)                  |«       Œ" |j+                  |«       |j+                  |«       |j-                  |«       |j-                  |«       |j/                  ||«      }|j/                  ||«      }t1        |dd«      r
|d   }|d   }|j3                  ||| j4                  dd¬	«       t7        d
«      D ]´  }|j9                  «       j;                  «       }|j=                  |«      }|j?                  ||||«      }|j?                  ||||«      }|j3                  ||| j4                  dd¬	«       t%        |	d   |
d   d¬«      D ]$  \  }}|j3                  ||| j4                  d¬«       Œ& Œ¶ | j@                  �rœ| jB                  �s� ||Ž } ||Ž }t1        |dd«      r
|d   }|d   }t        jD                  |d¬«      }|j=                  |«      jG                  «       }d|_$        t        jJ                  jM                  ||t        |jO                  «       «      z   |d¬«      }t        jJ                  jM                  ||t        |jO                  «       «      z   |d¬«      }t%        ||d¬«      D ]%  \  }}|j3                  ||| j4                  dd¬	«       Œ' |rc|jQ                  «       jS                  «       tQ        d„ |D «       «      z   }|jQ                  «       jS                  «       tQ        d„ |D «       «      z   }nF|jQ                  «       tQ        d„ |D «       «      z   }|jQ                  «       tQ        d„ |D «       «      z   }t        jJ                  jM                  |||fz   t        |jO                  «       «      z   d¬«      }t        jJ                  jM                  |||fz   t        |jO                  «       «      z   d¬«      }|j3                  | j4                  dd¬	«       t%        ||d¬«      D ]%  \  }}|j3                  ||| j4                  dd¬	«       Œ' | jU                  |||«       d d d «       y # 1 sw Y   y xY w)NúExcluded from CUDA testsc              3   ó€   K  — | ]6  }t        |t        j                  «      xr |j                  j                  –— Œ8 y ­wrn   )rŽ  r7   r—  r½   Ú
is_complex©rÁ  r9   s     r)   rÂ  z'ModuleTest.test_cuda.<locals>.<genexpr>ì  s.   è ø€ Ò&sÐ^_¤z°!´U·\±\Ó'BÒ'YÀqÇwÁw×GYÑGYÓ'YÑ&sùs   ‚<>)Útype_mapr   Trº  rc  F©rf  rg  rI  rU   r5   re  )r  )rÖ  c              3   óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrn   ©rU  r6  ©rÁ  rT  s     r)   rÂ  z'ModuleTest.test_cuda.<locals>.<genexpr>+  ó   è ø€ Ò>eÐQR¸q¿u¹u»w¿{¹{¿}Ñ>eùó   ‚(*c              3   óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrn   rw  rx  s     r)   rÂ  z'ModuleTest.test_cuda.<locals>.<genexpr>,  ry  rz  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   ©rU  rx  s     r)   rÂ  z'ModuleTest.test_cuda.<locals>.<genexpr>.  ó   è ø€ Ò8YÀQ¸¿¹¿Ñ8Yùrì  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   r}  rx  s     r)   rÂ  z'ModuleTest.test_cuda.<locals>.<genexpr>/  r~  rì  )Úretain_graph)+r   rC  ÚunittestÚSkipTestr   rJ   r5  r7   rf   ÚfloatrŽ  r�  rh  r   r‘   rD   ÚcudarÒ  rè  r�  Úcopy_rè  rÔ  rÍ  r"   rK  r¯   ré  rs  ri  r„   rØ  rb   r@  Ú
randn_likerÿ  r  Úautogradræ  r™  rU  r6  rL  )rp   r7  Ú	cpu_inputrt  Úcpu_input_tupleÚis_any_input_complexÚgpu_input_tupleÚ
cpu_moduleÚ
gpu_moduleÚ	cpu_paramÚ	gpu_paramÚcpu_pÚgpu_pÚ
cpu_outputÚ
gpu_outputr?   Úcpu_gradOutputÚgpu_gradOutputÚcpu_gradInputÚgpu_gradInputÚcpu_d_pÚgpu_d_pÚcpu_gradInputsÚgpu_gradInputsÚcpu_d_iÚgpu_d_iÚoutputs_cpuÚoutputs_gpuÚcpu_ggÚgpu_ggs                                 r)   rQ   zModuleTest.test_cudaâ  sA  € Ý × 5Ò 5Ü×#Ñ#Ð$>Ó?Ð?ä˜t×1Ñ1Ó2ñ W	HØŸ™Ó)ˆIäŸ™¤e§k¡kÐ2ˆHÜ+5°iÄÔ+G™iÈiÈ\ˆOä#&Ñ&sÐcrÔ&sÓ#sÐ ä$ _¸xÔHˆOà)˜×)Ñ)¨4×+@Ñ+@ÐAˆJØ)˜×)Ñ)¨4×+@Ñ+@ÐA×GÑGÓI×NÑNÓPˆJØ!×1Ñ1°*Ó=ˆIØ!×1Ñ1°*Ó=ˆIÜ # I¨a¡L°)¸A±,ÀtÔ Lò (‘��uØ—
‘
× Ñ  Õ'ð(ð ×&Ñ& Ô7Ø×&Ñ& Ô7Ø×+Ñ+¨JÔ7Ø×+Ñ+¨JÔ7Ø"×+Ñ+¨J¸ÓHˆJØ"×+Ñ+¨J¸ÓHˆJÜ�zÐ#3°UÔ;Ø'¨™]�
Ø'¨™]�
Ø×!Ñ! *¨j¸t¿~¹~ÐTUÐchÐ!Ôiô ˜1“Xò Y�Ø!+×!1Ñ!1Ó!3×!;Ñ!;Ó!=�Ø!/×!7Ñ!7¸
Ó!C�Ø )× 3Ñ 3°JÀÐQ[Ð]kÓ l�Ø )× 3Ñ 3°JÀÐQ[Ð]kÓ l�Ø×%Ñ% m°]ÈÏÉÐ^_ÐmrÐ%ÔsÜ(+¨I°a©L¸)ÀA¹,ÈtÔ(Tò YÑ$�G˜WØ×)Ñ)¨'°7ÀÇÁÐVWÐ)ÕXñYðYð ×"Ó"¨4×+QÓ+QÙ'¨Ð9�
Ù'¨Ð9�
Ü˜:Ð'7¸Ô?Ø!+¨A¡�JØ!+¨A¡�Jä!&×!1Ñ!1°*ÈDÔ!Q�Ø!/×!7Ñ!7¸
Ó!C×!JÑ!JÓ!L�Ø/3�Ô,ä!&§¡×!4Ñ!4ØØ#¤e¨J×,AÑ,AÓ,CÓ&DÑDØ"Ø!%ð	 "5ó "'�ô
 "'§¡×!4Ñ!4ØØ#¤e¨J×,AÑ,AÓ,CÓ&DÑDØ"Ø!%ð	 "5ó "'�ô ),¨N¸NÐSWÔ(Xò lÑ$�G˜WØ×)Ñ)¨'°7ÀÇÁÐVWÐejÐ)Õkðlñ (Ø",§.¡.Ó"2×"6Ñ"6Ó"8¼3Ñ>eÐVdÔ>eÓ;eÑ"e�KØ",§.¡.Ó"2×"6Ñ"6Ó"8¼3Ñ>eÐVdÔ>eÓ;eÑ"e‘Kà",§.¡.Ó"2´SÑ8YÈ.Ô8YÓ5YÑ"Y�KØ",§.¡.Ó"2´SÑ8YÈ.Ô8YÓ5YÑ"Y�KäŸ™×,Ñ,ØØ# ~Ð&7Ñ7¼%À
×@UÑ@UÓ@WÓ:XÑXØ!%ð -ó '�ô Ÿ™×,Ñ,ØØ# ~Ð&7Ñ7¼%À
×@UÑ@UÓ@WÓ:XÑXØ!%ð -ó '�ð ×%Ñ% m°]ÈÏÉÐ^_ÐmrÐ%ÔsÜ(+¨F°FÀ4Ô(Hò lÑ$�G˜WØ×)Ñ)¨'°7ÀÇÁÐVWÐejÐ)Õkðlð ×Ñ 	¨:°ÔG÷oW	H÷ W	Hñ W	Hús   ½T)U/Õ/U8)ru   rv   rw   r   r   ry   rz   r>  r  r8  rY  rL  rQ   Ú__classcell__©rG  s   @r)   r<  r<  v  sR   ø„ àð" #ð "¨r¯y©yð "Àð "Èò "ó ð"ô;ò4ò6ò0#UöJ[Hr+   r<  c                   ó   — e Zd Zd„ Zy)ÚInputVariableMixinc                 óJ   ‡— t         j                  | d«      }ˆfd„Š ‰|«      S )NFc                 ó¾   •— t        | t        j                  «      r)| j                  «       s| j	                  «       rd| _        | S  t        | «      ˆfd„| D «       «      S )NTc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrn   ro   )rÁ  rÜ  Úmap_variabless     €r)   rÂ  zGInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>J  s   øè ø€ ÒA°t™}¨T×2ÑAùó   ƒ)rŽ  r7   r—  Úis_floating_pointrr  r  r%  )r=   r©  s    €r)   r©  z4InputVariableMixin._get_input.<locals>.map_variablesD  sH   ø€ Ü˜!œUŸ\™\Ô*Ø×&Ñ&Ô(¨A¯L©L¬NØ&*�A”OØ�à”t˜A“wÓA¸qÔAÓAÐAr+   )r  r5  )rp   r¦  r©  s     @r)   r5  zInputVariableMixin._get_inputA  s(   ø€ Ü×#Ñ# D¨%Ó0ˆô	Bñ ˜UÓ#Ð#r+   N)ru   rv   rw   r5  ro   r+   r)   r¥  r¥  @  s   „ ó$r+   r¥  c                   ó@   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zed„ «       Zˆ xZ	S )ÚNewModuleTestc                 óx  •— t        ‰| �  |i |¤Ž |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  d	d
«      | _	        |j                  dd«      | _
        |j                  dd«      | _        |j                  dd«      | _        |j                  d«      | _        |j                  dd«      | _        |j                  dd«      | _        y )NrŸ  FÚcheck_inplacerb   TÚskip_doubler  rH   rI   r_   Útest_cpur5  rc   rµ  rþ   Úsupports_fwgrad_bwgrad)rB  r  rí  rŸ  r¯  rb   r°  r  rH   rI   r±  r5  rc   rµ  rþ   r²  rF  s      €r)   r  zNewModuleTest.__init__P  s  ø€ Ü‰Ñ˜$Ð) &Ò)Ø—Z‘Z ¨Ó/ˆŒ
Ø#ŸZ™Z¨¸Ó?ˆÔØ$Ÿj™jÐ)9¸4Ó@ˆÔØ!Ÿ:™: m°UÓ;ˆÔØŸ™ K°Ó7ˆŒØŸ™ K°Ó7ˆŒØ$Ÿj™jÐ)9¸5ÓAˆÔØŸ
™
 :¨tÓ4ˆŒØ$*§J¡JÐ/EÀuÓ$MˆÔ!Ø"(§*¡*Ð-AÀ4Ó"HˆÔØ#)§:¡:Ð.CÓ#DˆÔ Ø#)§:¡:Ð.CÀUÓ#KˆÔ Ø&,§j¡jÐ1IÈ5Ó&QˆÕ#r+   c           	      ó$  ‡‡‡— t        d„ ‰j                  «       D «       «      }t        |«      Šˆˆˆfd„}| j                  rB‰dk7  rt	        d‰› �«      ‚t        j                  |d   «      }‰j                  ‰|d   |«       n@‰j                  t        |||z   | j                  | j                  | j                  ¬«      «       | j                  rA‰j                  t        |||z   | j                  | j                  | j                  ¬«      «       y y )Nc              3   ó    K  — | ]  }|–— Œ y ­wrn   ro   rx  s     r)   rÂ  z1NewModuleTest._check_gradients.<locals>.<genexpr>a  s   è ø€ Ò6˜Q”qÑ6ùr  c                  óN   •— |rt        d|› �«      ‚‰j                  ‰| d ‰ «      S )NzExpected no kwargs, got )r%   rÍ  )Úinputs_and_paramsrs   rš  Ú
num_inputsr7  s     €€€r)   Úfn_to_gradcheckz7NewModuleTest._check_gradients.<locals>.fn_to_gradcheckd  s4   ø€ ÙÜ$Ð'?À¸xÐ%HÓIÐIØ×%Ñ% fÐ.?ÀÀÐ.LÓMÐMr+   r5   zExpected num_inputs == 1, got r   )rc   Ú	fast_modeÚcheck_forward_ad)rc   r¹  Úcheck_fwd_over_rev)r�  r™  r>  r5  r%   r7   r«  r  Ú
assertTruer   rc   rµ  rþ   rb   r   r²  )rp   r7  rš  Úinput_tupleÚparamsr¸  Útest_input_jacobianr·  s    ``    @r)   Ú_check_gradientszNewModuleTest._check_gradients`  s  ú€ ÜÑ6 &×"3Ñ"3Ó"5Ô6Ó6ˆÜ˜Ó%ˆ
ö	Nð ×$Ò$Ø˜QŠÜ$Ð'EÀjÀ\Ð%RÓSÐSÜ"'×"9Ñ"9¸+Àa¹.Ó"IÐØ×$Ñ$ V¨[¸©^Ð=PÕQà× Ñ ¤¨?¸KÈ&Ñ<PØ>B×>UÑ>UØ59×5MÑ5MØ<@×<TÑ<Tô"Vô Wð
 ×ÒØ× Ñ ¤¨ÀÈfÑ@TØBF×BYÑBYØ9=×9QÑ9QØBF×B]ÑB]ô"_õ `ð r+   c                 ó&  ‡‡‡‡‡‡— t        j                  «       }t        j                  d«       t        |t        «      r|n|f}| j                  ‰‰|«       ‰j                  «        | j                  �rãt        |«      dk7  rt        dt        |«      › �«      ‚|d   } | j                  | j                  ddiŽ}|j                  }t        «       5   ‰|«      }d d d «       ‰j                  |j                  |«       t        |«      }	|	j!                  «       }
t        «       5   ||
«      }d d d «       ‰j#                  |
j                  |«       ‰j                  «       |j$                  j!                  «       j'                  «       }|j(                  �7t        j*                  «       5  |j(                  j-                  «        d d d «       |	j(                  �7t        j*                  «       5  |	j(                  j-                  «        d d d «       |j/                  |«       |j/                  |«       ‰j                  |j(                  |	j(                  «       dˆˆfd„	}t1        d„ |D «       «      rñt2        rët	        d„ |D «       «      }‰j5                  «       j7                  «         ‰|Ž   |t         j6                  j8                  d«       t         j6                  j;                  «       dkD  �r³t	        d	„ |D «       «      }‰j7                  d«       t         j6                  j=                  d«      5   ‰|Ž  d d d «        |t         j6                  j8                  d«       �n@d
„ Šˆfd„Šˆfd„Šˆfd„Št	        ˆfd„|D «       «      }‰j5                  «         ‰|Ž   |t         j8                  «       t	        ˆfd„|D «       «      }‰j?                  «         ‰|Ž   |t         j@                  «       t2        �r©| jB                  �rœt	        ˆfd„|D «       «      }‰j5                  «       j7                  «         ‰|Ž   |t         j6                  j8                  d«       t	        d„ |D «       «      }‰jE                  «         ‰|Ž   |t         j8                  «       t	        d„ |D «       «      }‰j7                  «         ‰|Ž   |t         j6                  j8                  d«       | jF                  rYt         jH                  jF                  jK                  d¬«      5   ‰|Ž   |t         j6                  j8                  d«       d d d «       t         j6                  j;                  «       dk\  rqt	        d„ |D «       «      }‰j7                  d«       t         j6                  j=                  d«      5   ‰|Ž  d d d «        |t         j6                  j8                  d«       | jL                  sXt	        ˆfd„|D «       «      }‰j?                  «       j7                  «         ‰|Ž   |t         j6                  j@                  d«       | jN                  sXt	        ˆfd„|D «       «      }‰jQ                  «       j7                  «         ‰|Ž   |t         j6                  jR                  d«       t        j                  |«       y # 1 sw Y   �ŒàxY w# 1 sw Y   �Œ›xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÙxY w# 1 sw Y   �Œ·xY w# 1 sw Y   �Œ»xY w# 1 sw Y   �ŒWxY w)Nr5   z$Expected len(input_tuple) == 1, got r   ÚinplaceTc                 óš   •— ‰j                  «       D ]7  }‰j                  || «       |€Œ‰j                  |j                  «       |«       Œ9 y rn   )r™  ÚassertIsInstancerK  Ú
get_device)Útensor_typeÚ	device_idr>   rš  r7  s      €€r)   Úassert_module_parameters_arez<NewModuleTest._do_test.<locals>.assert_module_parameters_areª  sI   ø€ Ø×&Ñ&Ó(ò E�Ø×*Ñ*¨1¨kÔ:ØÑ(Ø×)Ñ)¨!¯,©,«.¸)ÕDñEr+   c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrn   )rŽ  r7   Ú
LongTensorrs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>°  s   è ø€ ÒD°1Œz˜!œU×-Ñ-×.ÑDùs   ‚$&c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   ©r„  rs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>³  s   è ø€ Ò>¨Q §¡§Ñ>ùrì  c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wr¿  rÌ  rs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>¹  s   è ø€ Ò#C°! A§F¡F¨1§IÑ#Cùó   ‚c                 óŠ   — | j                  «       r| j                  |«      S | j                  «       r| j                  |«      S | S rn   )rr  r±   r«  )r¯  Úrealr  s      r)   Úto_typez'NewModuleTest._do_test.<locals>.to_typeÀ  s<   € Ø×$Ñ$Ô&Ø!Ÿ9™9 WÓ-Ð-Ø×-Ñ-Ô/Ø!Ÿ9™9 T›?Ð*à!�Mr+   c                 ó4   •—  ‰| t         j                  d «      S rn   )r7   Úfloat16©rT  rÑ  s    €r)   Úto_halfz'NewModuleTest._do_test.<locals>.to_halfÈ  s   ø€ á˜q¤%§-¡-°Ó6Ð6r+   c                 óP   •—  ‰| t         j                  t         j                  «      S rn   )r7   Úfloat32Ú	complex64rÔ  s    €r)   Ú	to_singlez)NewModuleTest._do_test.<locals>.to_singleÌ  s   ø€ Ù˜q¤%§-¡-´·±ÓAÐAr+   c                 óP   •—  ‰| t         j                  t         j                  «      S rn   )r7   rã  r  rÔ  s    €r)   Ú	to_doublez)NewModuleTest._do_test.<locals>.to_doubleÏ  s   ø€ Ù˜q¤%§-¡-´×1AÑ1AÓBÐBr+   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrn   ro   ©rÁ  r9   rÙ  s     €r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>Ó  ó   øè ø€ ÒB°¡	¨!§ÑBùrª  c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrn   ro   ©rÁ  r9   rÛ  s     €r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>Ù  rÞ  rª  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrn   rÌ  rÝ  s     €r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>ã  s   øè ø€ Ò#M¸A¡I¨a£L×$5Ñ$5×$7Ñ#Mùó   ƒ #c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   )Úcpurs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>é  s   è ø€ Ò#A° A§E¡E§GÑ#Aùrì  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrn   rÌ  rs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>ï  s   è ø€ Ò#B° A§F¡F§HÑ#Bùrì  F)ÚenabledrP   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wr¿  rÌ  rs  s     r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>ý  s   è ø€ Ò'G°a¨¯©¨q¯	Ñ'GùrÎ  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrn   rÌ  rà  s     €r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>  s   øè ø€ Ò'QÀ©	°!«×(9Ñ(9×(;Ñ'Qùrâ  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrn   rÌ  )rÁ  r9   rÕ  s     €r)   rÂ  z)NewModuleTest._do_test.<locals>.<genexpr>  s   øè ø€ Ò'O¸a©°«
¯©×(9Ñ'Oùrâ  rn   )*r7   Úget_num_threadsÚset_num_threadsrŽ  r�  rÀ  Ú__repr__r¯  r>  r%   r‘   rD   Ú_versionr   rK  r   rs  ÚassertNotEqualr�  ri  ræ  Úno_gradrD  ÚbackwardÚallr   rƒ  r„  ÚFloatTensorÚdevice_countrn  rf   ÚDoubleTensorrC  rä  rŸ  ÚbackendsÚflagsr°  r  ÚhalfÚ
HalfTensor)rp   r7  rš  r¦  Únum_threadsr½  Ú	module_ipÚinput_versionr  Úinput_ipÚinput_ip_cloneÚ	output_ipræ  rÈ  rÛ  rÕ  rÙ  rÑ  s    ``           @@@@r)   r>  zNewModuleTest._do_test~  si  ý€ Ü×+Ñ+Ó-ˆÜ×Ñ˜aÔ Ü)¨%´Ô7‘e¸e¸Xˆà×Ñ˜i¨°Ô=ð 	�‰Ôà×Óô �;Ó 1Ò$Ü$Ð'KÌCÐP[ÓL\ÐK]Ð%^Ó_Ð_Ø ‘NˆEà(˜×(Ñ(¨$×*?Ñ*?ÐNÈÑNˆIà!ŸN™NˆMÜ!Ó#ñ 'Ù ›�÷'à×!Ñ! %§.¡.°-Ô@ä “ˆHØ%Ÿ^™^Ó-ˆNÜ!Ó#ñ 6Ù% nÓ5�	÷6à×$Ñ$ ^×%<Ñ%<¸mÔLØ×!Ñ! &¨)Ô4Ø—;‘;×$Ñ$Ó&×.Ñ.Ó0ˆDØ�z‰zÐ%Ü—]‘]“_ñ 'Ø—J‘J×$Ñ$Ô&÷'à�}‰}Ð(Ü—]‘]“_ñ *Ø—M‘M×'Ñ'Ô)÷*à�O‰O˜DÔ!Ø×Ñ˜tÔ$Ø×!Ñ! %§*¡*¨h¯m©mÔ<ö	Eô ÑD¸ÔDÔDÍô  Ñ>°+Ô>Ó>ˆKØ�L‰L‹N×ÑÔ!Ù�KÑ Ù(¬¯©×)?Ñ)?ÀÔCä�z‰z×&Ñ&Ó(¨1Ó,Ü#Ñ#C°{Ô#CÓC�Ø—‘˜A”Ü—Z‘Z×&Ñ& qÓ)ñ )Ù˜KÑ(÷)á,¬U¯Z©Z×-CÑ-CÀQÖGò"ô7ôBôCô  ÓB°kÔBÓBˆKØ�L‰LŒNÙ�KÑ Ù(¬×):Ñ):Ô;ô  ÓB°kÔBÓBˆKØ�M‰MŒOÙ�KÑ Ù(¬×);Ñ);Ô<æ˜T×2Ó2ô
 $Ó#MÀÔ#MÓM�Ø—‘“×#Ñ#Ô%Ù˜Ñ$Ù,¬U¯Z©Z×-CÑ-CÀQÔGô $Ñ#A°[Ô#AÓA�Ø—
‘
”Ù˜Ñ$Ù,¬U×->Ñ->Ô?ô $Ñ#B°kÔ#BÓB�Ø—‘”Ù˜Ñ$Ù,¬U¯Z©Z×-CÑ-CÀQÔGð —:’:ÜŸ™×-Ñ-×3Ñ3¸EÐ3ÓBñ PÙ Ñ,Ù4´U·Z±Z×5KÑ5KÈQÔO÷Pô —:‘:×*Ñ*Ó,°Ò1ô #(Ñ'G¸;Ô'GÓ"G�KØ—K‘K ”NÜŸ™×*Ñ*¨1Ó-ñ -Ù Ñ,÷-á0´·±×1GÑ1GÈÔKà×'Ò'ä"'Ó'QÀ[Ô'QÓ"Q�KØ—M‘M“O×(Ñ(Ô*Ù˜KÑ(Ù0´·±×1HÑ1HÈ!ÔLð —~’~Ü"'Ó'OÀ;Ô'OÓ"O�KØ—K‘K“M×&Ñ&Ô(Ù˜KÑ(Ù0´·±×1FÑ1FÈÔJÜ×Ñ˜kÕ*÷w'ñ 'ú÷6ñ 6ú÷'ñ 'ú÷*ñ *ú÷.)ñ )ú÷vPñ Pú÷-ñ -úsT   Ã	Z8Ä#	[Æ*[Ç-[Ì1[,Ô'[9Ö+\Ú8[Û[Û[Û[)Û,[6Û9\Ü\c                 ó&   — | j                  dd«      S ©NrN  Fr(  r*  s    r)   Ú_get_targetzNewModuleTest._get_target  ó   € Ø�}‰}˜X uÓ-Ð-r+   c                 ó&   — | j                  dd«      S ©NrD   Fr(  r*  s    r)   rD   zNewModuleTest.constructor_args  ó   € à�}‰}Ð/°Ó7Ð7r+   )
ru   rv   rw   r  rÀ  r>  r  r:  rD   r¢  r£  s   @r)   r­  r­  O  s/   ø„ ôRò `ò<R+òh.ð ñ8ó ô8r+   r­  c                   óŠ   ‡ — e Zd Zej                  j                  dh«      Zˆ fd„Zd„ Zdd„Zd„ Z	e
d„ «       Ze
d„ «       Zˆ xZS )	ÚCriterionTestrN  c                 óh  •— t        ‰| �  |i |¤Ž |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  d	d«      | _	        |j                  d
d«      | _
        |j                  dd«      | _        |j                  dd«      | _        |j                  d«      | _        | j                  €t        j                  «       | _        y y )NrQ   TrA  Frb   r¶  Úcheck_bfloat16Úcheck_complexr±  rH   rI   r_   rc   rJ   )rB  r  rí  rC  rA  rb   r¶  r	  r
  r±  rH   rI   rc   rJ   r7   rE  rF  s      €r)   r  zCriterionTest.__init__  s  ø€ Ü‰Ñ˜$Ð) &Ò)Ø &§
¡
¨;¸Ó =ˆÔØ"(§*¡*Ð-AÀ5Ó"IˆÔØ$Ÿj™jÐ)9¸4Ó@ˆÔØ Ÿ*™* \°4Ó8ˆŒØ$Ÿj™jÐ)9¸5ÓAˆÔØ#ŸZ™Z¨¸Ó?ˆÔØŸ
™
 :¨tÓ4ˆŒØŸ™ K°Ó6ˆŒØ$Ÿj™jÐ)9¸5ÓAˆÔØ"(§*¡*Ð-AÀ4Ó"HˆÔØ#ŸZ™Z¨Ó8ˆÔØ×ÑÐ%Ü!&×!8Ñ!8Ó!:ˆDÕð &r+   c                 ó(  ‡
— t        | j                  «      5   | j                  | j                  Ž Š
| j	                  «       }‰
j                  «        t        ‰
«       | j                  «       }| j                  �g|j                  ‰
||| j                  ¬«      }t        |«      t        |«      f| j                  z   ‰
fz   } | j                  |Ž }|j                  ||«       | j                  r
	 d d d «       y t        d„ ‰
j                  «       D «       «      }t!        |t        «      s|f|z   |fz   }ˆ
fd„}	n||z   |fz   }ˆ
fd„}	t#        |	|| j$                  ¬«       | j&                  rt)        |	|| j$                  ¬«       d d d «       y # 1 sw Y   y xY w)N©r  c              3   ó    K  — | ]  }|–— Œ y ­wrn   ro   rx  s     r)   rÂ  z)CriterionTest.__call__.<locals>.<genexpr>C  s   è ø€ Ò: œ1Ñ:ùr  c                 ó   •—  ‰| |«      S rn   ro   )r¦  rN  r¾  rš  s      €r)   Úapply_fnz(CriterionTest.__call__.<locals>.apply_fnG  s   ø€ Ù! %¨Ó0Ð0r+   c                 ó   •—  ‰| ||«      S rn   ro   )r\  r]  rN  r¾  rš  s       €r)   r  z(CriterionTest.__call__.<locals>.apply_fnL  s   ø€ Ù! &¨&°&Ó9Ð9r+   )rc   )r   rJ   r‘   rD   r5  rì  r  r  rG   Ú_forward_criterionr  r   rK  rA  r�  r™  rŽ  r   rc   rb   r   )rp   r7  r¦  rN  rR  Úref_argsrU  r¾  Úinputsr  rš  s             @r)   r8  zCriterionTest.__call__/  s~  ø€ Ü˜t×1Ñ1Ó2ñ "	\Ø%�T×%Ñ% t×'<Ñ'<Ð=ˆFØ—O‘OÓ%ˆEð �O‰OÔÜ�ŒKà×%Ñ%Ó'ˆFà× Ñ Ð,Ø×2Ñ2°6¸5À&ÐUY×UdÑUdÐ2Óe�Ü$ U›O¬X°fÓ-=Ð>ÀÇÁÑPÐTZÐS\Ñ\�Ø0˜t×0Ñ0°(Ð;�Ø×%Ñ% c¨<Ô8à×&Ò&Ø÷#"	\ð "	\ô& Ñ: f×&7Ñ&7Ó&9Ô:Ó:ˆFÜ˜e¤UÔ+Ø˜ FÑ*¨f¨YÑ6�õ1ð  ™¨6¨)Ñ3�ô:ô �h ¸4×;RÑ;RÕSà×"Ò"Ü˜h¨À4×CZÑCZÕ[÷E"	\÷ "	\ñ "	\ús   —CFÃ5B
FÆFc                 ó˜  ‡— d
ˆfd„	Št         r| j                  st        j                  d«      ‚t	        | j
                  «      5  | j                  «       }| j                  «       } | j                  | j                  Ž } | j                  | j                  Ž } ‰||d«      }|j                  «       s|j                  «       r	 ‰||«      }|j                  |«       |j                  |«       t        |«      }t        |«      }	|j                  «        |t        j                   t        j"                  hv r9| j                  «       }| j                  «       } | j                  | j                  Ž }|j%                  ||||¬«      }
|j%                  |||	|¬«      }|j'                  |
||t        j                   t        j"                  hv rdnddd¬	«       |j)                  |||
||¬«      }|j)                  ||||	|¬«      }|j'                  |||t        j                   t        j"                  hv rdnddd¬	«       d d d «       y # 1 sw Y   y xY w)NFc                 óê   •‡‡— t        | t        j                  «      r/| j                  «       j	                  ‰¬«      j                  ‰«      S t        | t        «      rt        ˆˆˆfd„| D «       «      S | S )Nr¼   c              3   ó2   •K  — | ]  } ‰|‰‰«      –— Œ y ­wrn   ro   )rÁ  rZ  Úconvert_dtyper½   r  s     €€€r)   rÂ  zACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>Y  s   øè ø€ ÒQÈ™]¨1¨e°]×CÑQùs   ƒ)rŽ  r7   r—  rÿ  r±   Úrequires_grad_r�  )r^  r½   r  r  s    ``€r)   r  z.CriterionTest.test_cuda.<locals>.convert_dtypeU  sS   ú€ Ü˜#œuŸ|™|Ô,Ø—z‘z“|—‘¨U�Ó3×BÑBÀ=ÓQÐQÜ˜C¤Ô'ÜÕQÈSÔQÓQÐQà�
r+   rp  Tr  rS   g-Cëâ6:?r   ru  r  )r   rC  r�  r‚  r   rJ   r5  r  r‘   rD   r«  rr  r%  r   r„  r7   r÷  Úbfloat16r  rK  Ú_backward_criterion)rp   r7  r½   r  rˆ  Ú
cpu_targetrŒ  r�  Ú	gpu_inputÚ
gpu_targetr’  r“  r–  r—  r  s                 @r)   rQ   zCriterionTest.test_cudaT  s7  ø€ õ	õ  × 5Ò 5Ü×#Ñ#Ð$>Ó?Ð?ä˜t×1Ñ1Ó2ñ %	{ØŸ™Ó)ˆIØ×)Ñ)Ó+ˆJØ)˜×)Ñ)¨4×+@Ñ+@ÐAˆJØ)˜×)Ñ)¨4×+@Ñ+@ÐAˆJñ & i°¸Ó=ˆIØ×+Ñ+Ô-°×1FÑ1FÔ1HÙ*¨:°uÓ=�
Ø�O‰O˜EÔ"Ø�O‰O˜EÔ"ô ˜yÓ)ˆIÜ 
Ó+ˆJØ�O‰OÔð œŸ™¤U§^¡^Ð4Ñ4Ø ŸO™OÓ-�	Ø!×-Ñ-Ó/�
à-˜T×-Ñ-¨t×/DÑ/DÐE�
à"×5Ñ5°jÀ)ÈZÐdnÐ5ÓoˆJØ"×5Ñ5°jÀ)ÈZÐdnÐ5ÓoˆJà×!Ñ! *¨jØ/4¼¿¹ÄUÇ^Á^Ð8TÑ/T¡tÐZ^ÐefÐtyð "ô {ð &×9Ñ9Ø˜I z°:È*ð :ó VˆMà%×9Ñ9Ø˜I z°:È*ð :ó VˆMð ×!Ñ! -°Ø/4¼¿¹ÄUÇ^Á^Ð8TÑ/T¡tÐZ^ÐefÐtyð "ô {÷I%	{÷ %	{ñ %	{ús   ÁG3I É I	c                 ó&   — | j                  dd«      S r   r(  r*  s    r)   r  zCriterionTest._get_target‡  r  r+   c                 ó&   — | j                  dd«      S r  r(  r*  s    r)   rD   zCriterionTest.constructor_argsŠ  r  r+   c                 ó&   — | j                  dd«      S )Nr  Fr(  r*  s    r)   r  zCriterionTest.extra_argsŽ  s   € à�}‰}˜\¨5Ó1Ð1r+   rn   )ru   rv   rw   r  r  Úunionr  r8  rQ   r  r:  rD   r  r¢  r£  s   @r)   r  r    s^   ø„ ð #×6Ñ6×<Ñ<¸h¸ZÓHÐô;ò #\óJ1{òf.ð ñ8ó ð8ð ñ2ó ô2r+   r  c                 ó²  — t        j                  |t         j                  |d¬«      }|�Et        j                  |t         j                  |¬«      |z  j                  «       j                  «       } ||«      }t        j                  ||¬«      }|j                  |«       |j	                  «       }	|j                  «       j	                  «       j                  «       }
|j	                  «       } |	|
«      }|j                  |«       | j                  ||||d¬«       | j                  |j                  j                  |
j                  j                  ||d¬«       y )NT)r½   rn  r  rm  )rn  Fru  )r7   r—   r×  rŠ   r  rƒ  r  r†  rð  rÿ  rK  ræ  r�  )r7  Úoprn  Úinp_dimsÚprecr>  r\  Úout1Úgrad_input1Úop_bfp16r]  Úgrad_input2Úout2s                r)   Ú_test_bfloat16_opsr+  “  s
  € ä�[‰[˜¬¯©¸vÐUYÔZ€FØÐÜ—*‘*˜X¬U¯^©^ÀFÔKÈlÑZ×aÑaÓc×rÑrÓtˆÙˆf‹:€DÜ×"Ñ" 4°Ô7€KØ‡M�M�+Ôð �{‰{‹}€HØ�]‰]‹_×%Ñ%Ó'×6Ñ6Ó8€FØ×&Ñ&Ó(€KÙ�FÓ€DØ‡M�M�+Ôà×Ñ˜$ ¨4°dÈÐÔNØ×Ñ˜&Ÿ+™+×*Ñ*¨F¯K©K×,<Ñ,<À4ÈdÐ`eÐÕfr+   c                 ó  — |s|j                  d«        ||«      }|s&t        j                  |«      }|j                  |«       |r.| j	                  |j                  «       |j                  «       «       |s‹|j                  «       D ]H  }|j                  sŒ| j	                  |j                  t        j                  |j                  «      «       ŒJ | j	                  |j                  t        j                  |«      «       y y )NT)
r  r7   Ú	rand_likerð  rK  rg   r™  r  ræ  rí  )r7  rš  r“  Ú
check_sizeÚ	inferencerR  ÚgOr>   s           r)   Ú_test_module_empty_inputr1  ¦  sÅ   € ÙØ×Ñ˜4Ô Ù
�‹+€CÙÜ�_‰_˜SÓ!ˆØ�‰�RÔÙØ×Ñ˜cŸh™h›j¨#¯(©(«*Ô5ÙØ×"Ñ"Ó$ò 	HˆAØ�‹Ø×%Ñ% a§f¡f¬e×.>Ñ.>¸q¿v¹vÓ.FÕGð	Hð 	×Ñ˜cŸh™h¬×(8Ñ(8¸Ó(=Õ>ð	 r+   c                  ó¾   ‡—  G d„ dt         j                  «      Š G ˆfd„dt         j                  «      }  ‰«       } | «       }t        j                  ||«      }|||fS )Nc                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ú _create_basic_net.<locals>.Layerc                 óÞ   •— t         ‰| �  «        t        j                  t	        j
                  dd«      «      | _        t        j                  t	        j                  dddd«      «      | _	        y )NrZ   rU   r5   rÆ  )
rB  r  ry   r  r7   rr  Úlayer_dummy_paramÚBufferr  Úlayer_dummy_buf)rp   rG  s    €r)   r  z)_create_basic_net.<locals>.Layer.__init__¸  sJ   ø€ Ü‰GÑÔÜ%'§\¡\´%·+±+¸aÀÓ2CÓ%DˆDÔ"Ü#%§9¡9¬U¯[©[¸¸A¸qÀ!Ó-DÓ#EˆDÕ r+   ©rÏ  N©ru   rv   rw   r  r¢  r£  s   @r)   ÚLayerr4  ·  s   ø„ ÷	Fñ 	Fr+   r;  c                   ó$   •‡ — e Zd Zdˆˆ fd„Zˆ xZS )ú_create_basic_net.<locals>.Netc                 óö   •— t         ‰| �  «         ‰«       | _        t        j                  t        j                  dd«      «      | _        t        j                  t        j                  dddd«      «      | _
        y )NrZ   rU   rÆ  r5   )rB  r  Úl1ry   r  r7   rr  Údummy_paramr7  r  Ú	dummy_buf)rp   r;  rG  s    €€r)   r  z'_create_basic_net.<locals>.Net.__init__¾  sR   ø€ Ü‰GÑÔÙ“gˆDŒGÜ!Ÿ|™|¬E¯K©K¸¸1Ó,=Ó>ˆDÔÜŸY™Y¤u§{¡{°1°a¸¸AÓ'>Ó?ˆD�Nr+   r9  r:  )rG  r;  s   @€r)   ÚNetr=  ½  s   ù„ ÷	@ò 	@r+   rB  )ry   rz   Ú
Sequential)rB  ÚlrF  r/  r;  s       @r)   Ú_create_basic_netrE  ¶  sR   ø€ ôF”—	‘	ô Fö@Œb�i‰iô @ñ 	‹€AÙ‹€AÜ
�‰�a˜Ó€Aàˆa�ˆ7€Nr+   )r  F)Nr!  r  )Nr  r¡  )Nr!  r  r¡  )NNNr  r¡  )r  rZ  )r  )rZ  r  )r5   r5   Nr  )r   r  )rZ  rP   r  Fr  )ro   rA   Nrd  )ŸÚabcr   rM  r�  Úcopyr   Ú	functoolsr   r   Ú	itertoolsr   Úoperatorr   r7   Ú
torch.cudaÚtorch.nnry   Útorch.nn.functionalÚ
functionalr‚   r	   r#   Útorch.testing._internalr
   Ú$torch.testing._internal.common_utilsr   r   r   r   r   r   r   r   r   Ú#torch.testing._internal.common_cudar   r   Útorch.autograd.gradcheckr   r   Útorch.autogradr   Útorch.typesr   Útorch.backends.cudnnÚtypingr   Úcollections.abcr   r   rN  r  r*   r/   r˜   rf   Úmodule_testsri   r{   rš   r²   rº   rÈ   rÏ   rß   ræ   rì   r   r  r  r  r"  r(  r9  r@  rG  rY  r^  rv  rƒ  r—  r   r§  r³  rº  rÂ  rÉ  rÏ  rÖ  rã  ré  rò  rø  r  r  r  r%  r+  r8  rA  rI  rW  r]  rk  rq  rw  r~  r„  rŠ  rœ  rø  rû  r	  r  r  r  r+  r3  r8  r<  rA  rG  rK  rM  rQ  rU  r^  ri  rk  rƒ  rû   Ú__annotations__Úcriterion_testsr‘  Úregression_criterion_no_batchÚ
reductionsr–  r   Úregression_test_inforì  Ú!classification_criterion_no_batchrÁ  r  Úclassification_cpp_parityr“   r¢  rí  Úclassification_test_infor÷  rî  rÉ  r  r<  r¥  r­  r  r+  r1  rE  ro   r+   r)   ú<module>ra     s   ðö Û Û å ß %Ý Ý ó Û Ý ß Ð Ý -Ý 0÷S÷ Sõ Sç Fß KÝ #Ý (Û å Ý $Ý $à×&Ñ&€Ø€	òò'ñ| 	ØØ Ø>ØÙZØñ  .‘t°5Ø—l‘lôñ 	ØØ'ØJØØÙ:Øñ  .‘t°5Ø—l‘lôñ 	ØØØØ—l‘lô	ñ 	ØØ#ØNØØØØ—l‘lôñ 	ØØÙ6Ø—l‘lô	ñ 	Ø#Ø+Ø]ØØà Ø—l‘lô	ðc;€òB6ò
ò$ò$ò $òò(ò&ò$ò$ò$$ò ò"$ò $ò ò"$ò $òò$ò$ò $ò $ò"$ò$$ò,$ò.$ò.$ò"$ò$$ò,$ò"$ò$$ò,$ò"$ò"$ò"$ò"$ò"ò"$ò$$ò$$ò$$ò"$ò"$ò"$ò"$ò*$ò$$ò$$ò$$ò$$ò($ò,6ò"eóP3ð BFØ"(óð6 TZØ=@óð0 Z^ØRUó&IðR [aØ14ó
ð" 59Ø/3Ø59Ø28Ø8;óð. @DØ &óó,ó 	òó ó6óòóó.ð  ]bØ*0óó ó"ðJ-ØÐ$ð-à™GÐ$7ÀDÔIð-ð Ð ð-ð Ð$ð	-ð
 Ð*ð-ð Ð$ð-ð Ð:ð-ð Ð6ð-ð Ð.ð-ð Ð0ð-ð Ð8ð-ð Ð4ð-ð Ð4ð-ð Ð ð-ð Ð4ð-ð  ÐAð!-Ð �D˜ ˜Ñ)ó ð( €òòD!Ð ò %€
ÙÐ<¸jÓIò 
1�O€Dˆ)ÙØ�6˜¨	 {Ð3Ø'+ÓSØØØ8Ø!Ø—l‘lôÐð ×ÒÐ/Õ0ð
1ð ò 
1€IÙØ*¨9¨+Ð6Ù=Ù/Ù*Ø8Ø!Ø—l‘lôÐð ×ÒÐ/Õ0ð
1ð" 	ÙAÙIðð
 ÑDÑFpÐqØÑEÑGkÐlØÑGÑIlÐmØÑAÑCgÐhØÑPÑRiÐjàÙXÙ3ðð ÑDÑFdÐeð 	ÙXÙ2ðð
  Ñ!KÑMcÐdð1%Ð !ð6 Ð-¨uÐ5ðAÐ ,¨d°3¸°9©oó ð
 ØØØØñÐ ò %€
Ù.5Ð6WØ6@ó/Bò 5Ñ*Ñ€Tˆ8�Y á#Ø�6˜¨	 {Ð3Ø'+ÓSØ"Ò'Ø$Ò)Ø8Ø Ø,×0Ò0°°tÓ<ô Ðð >×AÒAÀ$ÈÓK€JØ×#Ò# JÔ/Ø×ÒÐ3Õ4ð5ô x>�ô x>÷vM"ñ M"ô`GH�ô GH÷T$ñ $ôH8Ð&¨
ô H8ôVv2Ð&¨ô v2órgó&?ó r+   