Ë
    [^(h³¡ ã                   óì  — 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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+m,Z,m-Z- d dl.m/Z/ ej`                  Z0dZ1d„ Z2d„ Z3 e4ddddd„ ddejj                  ¬«       e4dddddd„ ddejj                  ¬«	       e4dd d!ejj                  ¬"«       e4dd#d$d%d&d!ejj                  ¬'«       e4d(d)d*„ ejj                  ¬+«       e4d,d-d.d/d!d!ejj                  ¬0«      gZ6d1„ Z7d2„ Z8d3„ Z9d4„ Z:d5„ Z;d6„ Z<d7„ Z=d8„ Z>d9„ Z?d:„ Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEd@„ ZFdA„ ZGdB„ ZHdC„ ZIdD„ ZJdE„ ZKdF„ ZLdG„ ZMdH„ ZNdI„ ZOdJ„ ZPdK„ ZQdL„ ZRdM„ ZSdN„ ZTdO„ ZUdP„ ZVdQ„ ZWdR„ ZXdS„ ZYdT„ ZZdU„ Z[dV„ Z\dW„ Z]dX„ Z^dY„ Z_dZ„ Z`d[„ Zad\„ Zbd]„ Zcd^„ Zdd_„ Zed`„ Zfda„ Zgdb„ Zhdc„ Zidd„ Zjde„ Zkdf„ Zld¾dg„Zm	 	 d¿dh„Zn	 	 dÀdi„Zo	 	 dÁdj„Zp	 	 dÁdk„Zq	 	 d¿dl„ZrdÂdm„ZsdÂdn„Ztdo„ ZudÃdp„ZvdÄdq„ZwdÃdr„Zxds„ ZydÅdt„ZzdÆdu„Z{	 	 dÇdv„Z|dÆdw„Z}dÆdx„Z~em eemd¬y«      erenesetevewexeze{e|e}e~eqdzœZe4d{e+f   e€d|<   g Z�d}„ Z‚g d~¢Zƒg d¢Z„ e
eƒe„«      D ]9  \  Z…Z† e4e…› d€e†› �e…d�œd‚„dƒdƒe‚d!ejj                  ¬„«      Z‡e��j                  e‡«       Œ; e„D ]3  Z† e4d…e†› �d†„ d‡„ dˆ„ e‚d!ejj                  ¬‰«      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Še4e‹e4f   e€d©<   d!d!d!d!d!dªœZŒg d¢Z„ e
e‰e„«      D ]o  \  \  Z…Z�ZŽZ† e4e…› 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)ÚTestCaseÚto_gpuÚfreeze_rng_stateÚis_iterableÚ	gradcheckÚgradgradcheckÚset_default_dtypeÚskipIfTorchDynamo)Ú	TEST_CUDAÚSM90OrLater)Ú_get_numerical_jacobianÚ_iter_tensors)ÚVariable)Ú_TensorOrTensors)ÚCallableÚUnionÚAny)ÚSequenceçñhãˆµøä>c                 ór   — t        | dd «      }|€#t        j                  t        | dd «      dd¬«      }|€J ‚|S )NÚ	reductionÚsizeAverageTF)Úemit_warning)ÚgetattrÚ
_ReductionÚlegacy_get_string©ÚmÚresults     ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/testing/_internal/common_nn.pyÚget_reductionr(   !   sD   € Ü�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))é   r/   c                 óœ   — t        j                  | |d   j                  «       «      |d   j                  dd«      j	                  dd«      z   S )Nr   é   éÿÿÿÿr1   r0   )ÚtorchÚmmÚtÚviewÚexpand©ÚiÚpÚ_s      r'   ú<lambda>r>   l   s>   € ¤U§X¡X¨a°°1±·±³Ó%:¸Q¸q¹T¿Y¹YÀqÈ"Ó=M×=TÑ=TÐUVÐXYÓ=ZÑ%Z€ r)   Tç{®Gázt?)Úmodule_nameÚconstructor_argsÚcpp_constructor_argsÚ
input_sizeÚreference_fnÚ	with_tf32Útf32_precisionÚdefault_dtype)r/   r0   Fz+torch::nn::LinearOptions(10, 8).bias(false)Úno_biasc                 óP   — t        j                  | |d   j                  «       «      S ©Nr   )r5   r6   r7   r:   s      r'   r>   r>   w   s   € ¤U§X¡X¨a°°1±·±³Ó%:€ r)   )	r@   rA   rB   rC   ÚdescrD   rE   rF   rG   ÚRReLU)r3   é   rM   F)r@   rC   Ú	test_cudarG   ©çš™™™™™¹?gÍÌÌÌÌÌì?ú/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r1   r1   é   Úwith_up_down©r@   rA   rB   rC   rK   rN   rG   ÚFlatten©rM   é   r1   rR   c                 ó.   — t        j                  | d«      S ©Nr3   )r5   Úflatten)r;   r=   s     r'   r>   r>   Ž   s   € ¤5§=¡=°°AÓ#6€ r)   )r@   rC   rD   rG   ÚCrossMapLRN2d)rR   r?   çü©ñÒMbP?rM   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)©rM   rW   é   r^   )r@   rA   rB   rC   Úcheck_gradgradÚcheck_batched_gradrG   c                  ó„   — t        t        | d«      } t        j                  |«      j                  | Ž j                  «       S rY   )r   r   r5   Úrandpermr8   Údouble)ÚsizeÚtotals     r'   Ú_rand_tensor_non_equalrf   ¢   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__rq   )ro   rp   s   €€r'   ÚFunctionalModuleri   ¨   s   ø„ ö	'r)   ru   )ÚnnÚModule)ro   rp   ru   s   `` r'   Úwrap_functionalrx   §   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 )Nr/   ÚPoissonNLLLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S ©NÚnone©r   )ÚFÚpoisson_nll_lossÚtype_as©r;   r7   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 ©Nr/   ©r5   Úrandrl   r)   r'   r>   z/poissonnllloss_no_reduce_test.<locals>.<lambda>¶   s   € œŸ™ B¨Ó+€ r)   ú_get_input()r‚   c                 óH   •— | j                  «       ‰j                  | «      z
  S rk   )Úexpr   ©r;   r=   r7   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_maprD   ÚpicklerG   ©r5   ÚrandnÚdictrx   rc   ©r7   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é   r/   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™   r/   çyé&1¬œ?ç´Èv¾Ÿï?©r5   r‡   Úclamp_rl   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 rY   ©Ú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‘   rD   r’   Ú	precisionrG   )r   r5   r”   ÚgtÚtorc   r•   rx   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 )Nrl   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 ©Nrl   r¢   r£   r¤   rl   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 rY   r¨   r‹   s     €r'   r>   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>×   rª   r)   FrŒ   )r5   r”   r­   r®   rc   r•   rx   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™   r/   ©Údtyper   ÚBCELoss_weights_no_reducec                 ór   •— t        j                  | ‰j                  | «      ‰j                  | «      d¬«      S ©Nr}   ©r+   r   rœ   ©r;   r7   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¤   rl   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 rY   r¨   )r;   r<   r%   r7   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   r5   r”   rc   r­   r®   r‡   r•   rx   ©r7   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 )Nrl   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¤   rl   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 rY   r¨   ©r;   r=   r7   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�   rD   r’   rG   )r5   r”   r­   r®   rc   r‡   r•   rx   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™   r/   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¤   rl   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 rY   r¨   ©r;   r=   Úsigmoidr7   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‘   rD   r_   r’   rG   ©
r   r5   r”   r­   r®   rc   rv   ÚSigmoidr•   rx   ©rÖ   r7   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™   r/   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¤   rl   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 rY   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 )Nrl   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>-  rà   r)   rÒ   c                  óL   — t        j                  d«      j                  dd«      S r´   r¤   rl   r)   r'   r>   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>0  rµ   r)   rˆ   r‚   c                 óx   •— ‰ ‰| «      j                  «       z  d‰z
  d ‰| «      z
  j                  «       z  z    S rY   r¨   rÕ   s     €€r'   r>   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>2  r×   r)   FrØ   )	r5   r”   r­   r®   rc   rv   rÚ   r•   rx   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 )Nr/   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>>  ó   ø€ ”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…   ©r5   r‡   r©   rl   r)   r'   r>   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>@  ó   € œŸ™ 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>B  ó!   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|ÀvÔNð r)   TF©	r�   rŽ   r�   r�   r‘   rD   Úsupports_forward_adr’   rG   ©r5   r‡   rc   r•   rx   r–   s   @r'   Ú$kldivloss_with_target_no_reduce_testrý   9  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 )Nr/   r¹   ÚKLDivLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r|   rí   r‚   s    €r'   r>   z*kldivloss_no_reduce_test.<locals>.<lambda>N  rï   r)   rð   c                  óJ   — t        j                  dd«      j                  «       S r…   rò   rl   r)   r'   r>   z*kldivloss_no_reduce_test.<locals>.<lambda>P  ró   r)   rˆ   r‚   c                 óD   •— t        d   | ‰j                  | «      d¬«      S rõ   r÷   r‹   s     €r'   r>   z*kldivloss_no_reduce_test.<locals>.<lambda>R  rù   r)   TFrú   rü   r–   s   @r'   Úkldivloss_no_reduce_testr  I  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 )Nrl   r¹   ÚKLDivLoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r|   rí   r‚   s    €r'   r>   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>_  rï   r)   rð   c                  óH   — t        j                  d«      j                  «       S ©Nrl   rò   rl   r)   r'   r>   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>a  ó   € œŸ™ B›×+Ñ+Ó-€ r)   rˆ   r‚   c                 óD   •— t        d   | ‰j                  | «      d¬«      S rõ   r÷   r‹   s     €r'   r>   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>c  rù   r)   TFrú   rü   r–   s   @r'   Úkldivloss_no_reduce_scalar_testr  Z  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 )Nr/   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>o  ó   ø€ ”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ò   rl   r)   r'   r>   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>q  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>s  ó#   ø€ ÜÐ5Ñ6°q¸!¿)¹)ÀA»,ÐRXÔYð r)   TFrú   ©r5   r‡   rc   r©   r•   rx   r–   s   @r'   Ú(kldivloss_with_log_target_no_reduce_testr  j  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 )Nr/   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ò   rl   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  z  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 )Nrl   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ò   rl   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 )NrM   rW   r1   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 ©NrM   rW   r1   ©r5   r”   rl   r)   r'   r>   z'l1loss_no_reduce_test.<locals>.<lambda>¢  ó   € œŸ™ Q¨¨1Ó-€ r)   rˆ   r‚   c                 óH   •— | ‰j                  | «      z
  j                  «       S rk   ©r�   Úabsr‹   s     €r'   r>   z'l1loss_no_reduce_test.<locals>.<lambda>¤  ó   ø€  A¨¯	©	°!«Ñ$4×#9Ñ#9Ó#;€ r)   TFrú   ©r5   r”   rc   r•   rx   r–   s   @r'   Úl1loss_no_reduce_testr6  ›  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 )NrM   rW   r1   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 )NrM   rW   r1   r¹   )r5   r”   Úcdoublerl   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 rk   r2  r‹   s     €r'   r>   z/l1loss_no_reduce_complex_test.<locals>.<lambda>³  r4  r)   TF)r�   rŽ   r�   r�   r‘   rD   rû   r’   )r5   r”   r;  r•   rx   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 )Nrl   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  r/  rl   r)   r'   r>   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>¿  ó   € œŸ™ R›€ r)   rˆ   r‚   c                 óH   •— | ‰j                  | «      z
  j                  «       S rk   r2  r‹   s     €r'   r>   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>Á  r4  r)   TFrú   r5  r–   s   @r'   Úl1loss_no_reduce_scalar_testrD  ¸  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 )NrV   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ˆ   rJ  c                 ó,   •— | ‰z
  j                  d«      S ©NrM   ©Úpow©r;   r=   rK  s     €r'   r>   z(mseloss_no_reduce_test.<locals>.<lambda>Ñ  ó   ø€  A¨¡J×#3Ñ#3°AÓ#6€ r)   TF©	r�   rŽ   r�   rC   r‘   rD   rû   r’   rG   r5  ©rC   rK  s    @r'   Úmseloss_no_reduce_testrV  Ç  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 )Nrl   r¹   ÚMSELoss_no_reduce_scalarc                 óR   •— t        j                  | ‰j                  | «      d¬«      S r|   rH  rJ  s    €r'   r>   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>Ý  rL  r)   rM  rˆ   rJ  c                 ó,   •— | ‰z
  j                  d«      S rO  rP  rR  s     €r'   r>   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>á  rS  r)   TFrT  r5  rU  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™   r/   r   r}   ÚNLLLoss_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S ©Nr   r~   ©r   Únll_lossr�   Úlong©r;   rp   r7   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™   r/   rò   rl   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�   rb  ©r;   r=   rp   r7   s     €€r'   r>   z(nllloss_no_reduce_test.<locals>.<lambda>ò  ó-   ø€ Ü˜yÑ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÑKÀFÑKð r)   FrŒ   ©
r   r5   ÚemptyÚuniform_r   Úfloorrb  r•   rx   rc   ©rp   r7   s   @@r'   Únllloss_no_reduce_testrs  ç  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™   r/   rM   r}   ©Úignore_indexr   ÚNLLLoss_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S ©Nrv  r   ru  ©r   ra  r�   rb  ÚintÚstrrc  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 rg  rò   rl   r)   r'   r>   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  ró   r)   rˆ   r‚   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS ri  rk  rl  s     €€r'   r>   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  rm  r)   FrŒ   rn  rr  s   @@r'   Ú#nllloss_no_reduce_ignore_index_testr€  ø  s…   ù€ Ü”—‘˜R“×)Ñ)Ó+×/Ñ/°Ó3×9Ñ9Ó;×@Ñ@ÓBÓC€AØ:;È&Ñ)Q€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™   r/   c                 ó,   •— ‰j                  | «      ddœS r½   ©r�   ©r;   r+   s    €r'   rp   z.nllloss_no_reduce_weights_test.<locals>.kwargs  ó   ø€ Ø Ÿ.™.¨Ó+¸&ÑAÐAr)   ÚNLLLoss_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rk   r`  rc  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™   r/   ç{®Gáz„?©r5   r‡   Úaddr©   rl   r)   r'   r>   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  ó%   € œŸ™ B¨Ó+×/Ñ/°Ó5×9Ñ9Ó;€ r)   rˆ   ©r;   r7   r+   c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS ri  rk  rl  s     €€r'   r>   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  ó1   ø€ Ü˜yÑ)¨!¨Q¯Y©Y°q«\×->Ñ->Ó-@ÑNÁFÈ1ÃIÑNð r)   FrŒ   ©r   r5   ro  rp  r   rq  rb  r‡   r•   rx   rc   ©rp   r7   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™   r/   c                 ó.   •— ‰j                  | «      dddœS )Nr}   rM   ©r+   r   rv  rƒ  r„  s    €r'   rp   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 rk   )r   ra  r�   rb  Údatarc  s    €€r'   r>   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>+  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�  rl   r)   r'   r>   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>/  r�  r)   rˆ   r�  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS ri  rk  rl  s     €€r'   r>   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>1  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™   r/   c                 ó.   •— ‰j                  | «      dddœS )Nr}   r4   r˜  rƒ  r„  s    €r'   rp   z?nllloss_no_reduce_weights_ignore_index_neg_test.<locals>.kwargs;  s   ø€ Ø Ÿ.™.¨Ó+¸&Ø "ñ$ð 	$r)   Ú*NLLLoss_no_reduce_weights_ignore_index_negc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rk   r`  rc  s    €€r'   r>   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>B  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¹   rŒ  rˆ   r�  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS ri  rk  rl  s     €€r'   r>   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>H  r’  r)   F)r�   rŽ   r�   Úinputr‘   rD   r’   rG   )r   r5   ro  rp  r   rq  rb  r‡   r•   rx   rc   rŽ  r©   r”  s   @@@r'   Ú/nllloss_no_reduce_weights_ignore_index_neg_testr¥  7  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 )NrM   rR   rW   r   r}   ÚNLLLoss2d_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S r_  r`  rc  s    €€r'   r>   z*nllloss2d_no_reduce_test.<locals>.<lambda>T  rd  r)   re  c                  óN   — t        j                  dddd«      j                  «       S ©NrM   rW   rR   rò   rl   r)   r'   r>   z*nllloss2d_no_reduce_test.<locals>.<lambda>W  ó   € œŸ™ A q¨!¨QÓ/×3Ñ3Ó5€ r)   rˆ   r‚   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS ©NÚ	NLLLossNdrk  rl  s     €€r'   r>   z*nllloss2d_no_reduce_test.<locals>.<lambda>Y  ó-   ø€ Ü˜{Ñ+¨A¨q¯y©y¸«|×/@Ñ/@Ó/BÑMÀfÑMð r)   FrŒ   ©	r   r5   r‡   r   rq  rb  r•   rx   rc   rr  s   @@r'   Únllloss2d_no_reduce_testr±  N  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 )NrM   rR   rW   r3   r}   ru  Ú NLLLoss2d_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S ry  rz  rc  s    €€r'   r>   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>e  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ò   rl   r)   r'   r>   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>i  r«  r)   rˆ   r‚   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS r­  rk  rl  s     €€r'   r>   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>k  r¯  r)   FrŒ   r°  rr  s   @@r'   Ú%nllloss2d_no_reduce_ignore_index_testr¸  _  s�   ù€ Ü”—‘˜A˜q !Ó$×(Ñ(¨Ó+×1Ñ1Ó3×8Ñ8Ó:Ó;€AØ:;È&Ñ)Q€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 )NrM   rR   rW   c                 ó,   •— ‰j                  | «      ddœS r½   rƒ  r„  s    €r'   rp   z0nllloss2d_no_reduce_weights_test.<locals>.kwargsu  r…  r)   ÚNLLLoss2d_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rk   r`  rc  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ò   rl   r)   r'   r>   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>  r«  r)   rˆ   r�  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS r­  rk  rl  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À  q  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 )NrM   rR   rW   r   r}   ÚNLLLossNd_no_reducec                 ót   •— t        j                  | ‰j                  | «      j                  «       ‰d   ¬«      S r_  r`  rc  s    €€r'   r>   z*nlllossNd_no_reduce_test.<locals>.<lambda>�  rd  r)   re  c                  óR   — t        j                  dddddd«      j                  «       S rª  rò   rl   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­  rk  rl  s     €€r'   r>   z*nlllossNd_no_reduce_test.<locals>.<lambda>’  r¯  r)   FrŒ   r°  rr  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 )NrM   rR   rW   r3   r}   ru  Ú NLLLossNd_no_reduce_ignore_indexc           	      ó    •— t        j                  | ‰j                  | «      j                  «       t	        ‰d   «      t        ‰d   «      ¬«      S ry  rz  rc  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ò   rl   r)   r'   r>   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>¢  rÅ  r)   rˆ   r‚   c                 ó^   •— t        d   | ‰j                  | «      j                  «       fi ‰¤ŽS r­  rk  rl  s     €€r'   r>   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>¤  r¯  r)   FrŒ   r°  rr  s   @@r'   Ú%nlllossNd_no_reduce_ignore_index_testrÍ  ˜  s…   ù€ Ü”—‘˜A˜q ! Q¨Ó*×.Ñ.¨qÓ1×7Ñ7Ó9×>Ñ>Ó@ÓA€AØ:;È&Ñ)Q€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 )NrM   rR   rW   c                 ó,   •— ‰j                  | «      ddœS r½   rƒ  r„  s    €r'   rp   z0nlllossNd_no_reduce_weights_test.<locals>.kwargs®  r…  r)   ÚNLLLossNd_no_reduce_weightsc                 óx   •— t        j                  | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS rk   r`  rc  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ò   rl   r)   r'   r>   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>¸  rÅ  r)   rˆ   r�  c                 ój   •— t        d   | ‰j                  | «      j                  «       fi  ‰| «      ¤ŽS r­  rk  rl  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 )NrM   rW   r1   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 r.  r/  rl   r)   r'   r>   z-smoothl1loss_no_reduce_test.<locals>.<lambda>È  r0  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ú   r5  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 )Nrl   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  r/  rl   r)   r'   r>   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>Ù  rB  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ú   r5  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 )NrM   rW   r1   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 r.  r/  rl   r)   r'   r>   z(smoothl1loss_beta_test.<locals>.<lambda>ê  r0  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ú   r5  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 )NrM   rW   r1   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 r.  r/  rl   r)   r'   r>   z-smoothl1loss_zero_beta_test.<locals>.<lambda>û  r0  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ú   r5  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 )NrM   rW   r1   Ú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 r.  r/  rl   r)   r'   r>   z&huberloss_delta_test.<locals>.<lambda>  r0  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 )Nrl   Ú!MultiLabelMarginLoss_0d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   ©r   Úmultilabel_margin_lossr�   rb  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  r/  rl   r)   r'   r>   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  rB  r)   rˆ   r‚   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S ©NÚMultiLabelMarginLossr}   r~   ©rø   r›  r�   rb  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‘   rD   Úcheck_sum_reductionr_   r’   )r5   Úzerosrb  r•   rx   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 )Nr/   Ú!MultiLabelMarginLoss_1d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   r  r‚   s    €r'   r>   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>+  r  r)   r  c                  ó,   — t        j                  d«      S r…   r/  rl   r)   r'   r>   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>.  rB  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>0  r  r)   TF©
r�   rŽ   r�   r�   r‘   rD   r  r_   r’   rG   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 )NrR   r/   g      à¿é   r4   ©ÚminÚMultiLabelMarginLoss_index_negc                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   r  r‚   s    €r'   r>   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>=  r  r)   r  c                  ó.   — t        j                  dd«      S ©NrR   r/   r/  rl   r)   r'   r>   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>@  ó   € œŸ™ 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>B  r  r)   TFr  )r   r5   Úclampr‡   rŽ  r   rq  rb  r•   rx   rc   r–   s   @r'   Ú#multilabelmarginloss_index_neg_testr#  8  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 )NrR   r/   ÚMultiLabelMarginLoss_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   r  r‚   s    €r'   r>   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>O  r  r)   r  c                  ó.   — t        j                  dd«      S r  r/  rl   r)   r'   r>   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>R  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>T  r  r)   TFr  r°  r–   s   @r'   Ú#multilabelmarginloss_no_reduce_testr)  J  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 )Nr/   r   rM   r3   ÚHingeEmbeddingLoss_no_reducec                 óR   •— t        j                  | ‰j                  | «      d¬«      S r|   ©r   Úhinge_embedding_lossr�   r‚   s    €r'   r>   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>a  rž   r)   zvF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().reduction(torch::kNone))c                  ó,   — t        j                  d«      S r…   r/  rl   r)   r'   r>   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>d  rB  r)   rˆ   r‚   c                 óD   •— t        d   | ‰j                  | «      d¬«      S )NÚHingeEmbeddingLossr}   r~   r÷   r‹   s     €r'   r>   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>f  s#   ø€ ÜÐ3Ñ4°Q¸¿	¹	À!»ÐPVÔWð r)   TF©	r�   rŽ   r�   r�   r‘   rD   r  r’   rG   ©
r   r5   r”   r­   r®   rc   Úmul_Úsubr•   rx   r–   s   @r'   Ú!hingeembeddingloss_no_reduce_testr6  \  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 )Nr/   r   rM   r3   Ú#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>r  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…   r/  rl   r)   r'   r>   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>u  rB  r)   rˆ   r‚   c                 óF   •— t        d   | ‰j                  | «      dd¬«      S )Nr1  rë  r}   r;  r÷   r‹   s     €r'   r>   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>w  s%   ø€ ÜÐ3Ñ4°Q¸¿	¹	À!»ÈSÐ\bÔcð r)   TFr2  r3  r–   s   @r'   Ú(hingeembeddingloss_margin_no_reduce_testr?  m  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 )NrR   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 )NrR   r/  rl   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ú   r5  r–   s   @r'   Úsoftmarginloss_no_reduce_testrG  ~  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 )NrR   r/   rM   Ú"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  r/  rl   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 ©Nr3   ©Údim©rÖ   r©   Úsumrd   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Ø   ©r5   r‡   r   rq  r•   rx   rc   r–   s   @r'   Ú'multilabelsoftmarginloss_no_reduce_testrU  �  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 )NrR   r/   rM   Ú*MultiLabelSoftMarginLoss_weights_no_reducec                 ór   •— t        j                  | ‰j                  | «      ‰j                  | «      d¬«      S r½   rK  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  r/  rl   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 rO  rR  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  rT  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 )NrR   r0   ÚMultiMarginLoss_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   ©r   Úmulti_margin_lossr�   rb  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  r/  rl   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  ©r5   r‡   r   rq  rb  r•   rx   rc   r–   s   @r'   Úmultimarginloss_no_reduce_testri  µ  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 )Nr3   r0   ÚMultiMarginLoss_1d_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   r_  r‚   s    €r'   r>   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>Ì  ra  r)   rb  c                  ó,   — t        j                  d«      S r…   r/  rl   r)   r'   r>   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>Ï  rB  r)   rˆ   r‚   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S re  r  r‹   s     €r'   r>   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>Ñ  rg  r)   TFr  rh  r–   s   @r'   Ú!multimarginloss_1d_no_reduce_testro  Ç  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 )Nrl   r0   Ú,multimarginloss_1d_input_0d_target_no_reducec                 ón   •— t        j                  | ‰j                  | «      j                  «       d¬«      S r|   r_  r‚   s    €r'   r>   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>Þ  ra  r)   rb  c                  ó,   — t        j                  d«      S r…   r/  rl   r)   r'   r>   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>á  rB  r)   rˆ   r‚   c                 ót   •— t        d   | ‰j                  j                  | «      j                  «       d¬«      S re  r  r‹   s     €r'   r>   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>ã  rg  r)   TFr  rh  r–   s   @r'   Ú1multimarginloss_1d_input_0d_target_no_reduce_testru  Ù  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 )NrR   r0   ÚMultiMarginLoss_p_no_reducec                 óp   •— t        j                  | ‰j                  | «      j                  «       dd¬«      S )NrM   r}   ©r<   r   r_  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 )NrR   r/   rŒ  g®Gáz®ï?)r5   r”   r¥   rl   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 )Nrf  rM   r}   ry  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  rh  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 )NrR   r0   Ú MultiMarginLoss_margin_no_reducec                 óp   •— t        j                  | ‰j                  | «      j                  «       dd¬«      S r:  r_  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  r/  rl   r)   r'   r>   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  r   r)   rˆ   r‚   c                 óv   •— t        d   | ‰j                  j                  | «      j                  «       dd¬«      S )Nrf  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  rh  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 )NrR   r0   r/   r¹   Ú!MultiMarginLoss_weights_no_reducec                 óŽ   •— t        j                  | ‰j                  | «      j                  «       ‰j                  | «      d¬«      S r½   r_  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  r/  rl   r)   r'   r>   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  r   r)   rˆ   r¿   c                 óv   •— t        d   | ‰j                  j                  | «      j                  «       ‰d¬«      S )Nrf  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  )r5   r‡   r   rq  rb  rc   r•   rx   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 rJ   ©Ú
isinstanceÚlistÚtupleÚ	unsqueeze©Úinpr7   s     r'   Úunsqueeze_inpz0single_batch_reference_fn.<locals>.unsqueeze_inp-  ó=   € Ü�cœD¤%˜=Ô)Ø,/Ö0 q�A—K‘K •NÒ0Ð0Ø�}‰}˜QÓÐùò 1ó   ›Ar   N)rŒ  r5   Ú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                  óè<  — g t        «       ‘t        «       ‘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        dddddddtf        jh                  ¬«      ‘te        ddd	ddd
ddtf        jh                  ¬«	      ‘te        ddddddddtf        jh                  ¬«	      ‘te        ddddddddtf        jh                  ¬«	      ‘te        ddddddddtf        jh                  ¬«	      ‘te        ddddddddtf        jh                  ¬«	      ‘te        dddddddd¬«      ‘te        dd„ ddddtf        jh                  ¬ «      ‘te        d!d"„ d#d$dddtf        jh                  ¬%«      ‘te        d&d'„ d(ddddtf        jh                  ¬%«      ‘te        d)d*„ d+ddddtf        jh                  ¬%«      ‘te        d,d-„ d.ddddtf        jh                  ¬%«      ‘te        d/d0„ d1ddddtf        jh                  ¬%«      ‘te        d2d3„ d4dd5ddtf        jh                  ¬6«      ‘te        d2d7d8d9dd:ddtf        jh                  ¬«	      ‘te        d2d;d<d9dd=ddtf        jh                  ¬«	      ‘te        d>d?„ d@ddAddtf        jh                  ¬6«      ‘te        dBdCdDdEddddtf        jh                  ¬F«	      ‘te        dBdGdHdIddJdddtf        jh                  ¬K«
      ‘te        dBdLdMdIddNdddtf        jh                  ¬K«
      ‘te        dBdOdPdQdd=dddtf        jh                  ¬K«
      ‘te        dBdRdSdTdd:dddUtf        jh                  ¬K«
      ‘te        dBdCdDdVdddd¬W«      ‘te        dXdY„ dZd[ddddUtf        jh                  ¬\«	      ‘te        d]d^„ dZd[dddUtf        jh                  ¬_«      ‘te        d`da„ dbdcdddtf        jh                  ¬%«      ‘te        ddde„ dfdcdddtf        jh                  ¬%«      ‘te        dgdh„ didcdddtf        jh                  ¬%«      ‘te        djdkdlddmdddtf        jh                  ¬n«	      ‘te        djdodpdqdd=dddtf        jh                  ¬K«
      ‘te        djdrdsdqdd:dddtf        jh                  ¬K«
      ‘te        dtdu„ dvdwddddtf        jh                  ¬\«	      ‘te        dxdy„ dzd{ddtf        jh                  ¬ «      ‘te        d|d}„ d~d{ddtf        jh                  ¬ «      ‘te        dd€„ d�d{ddtf        jh                  ¬ «      ‘te        d‚dƒ„ d„d{ddtf        jh                  ¬ «      ‘te        d…d†„ d‡dˆddtf        jh                  ¬ «      ‘te        d‰dŠd‹dŒdddd�tf        jh                  ¬F«	      ‘te        d‰dŽd�d�dd:ddd�tf        jh                  ¬K«
      ‘te        d‰d‘d�d�dd’d“dd�tf        jh                  ¬K«
      ‘te        d‰d”d•d–dd
ddd�tf        jh                  ¬K«
      ‘te        d‰d—d˜d–dd™ddd�tf        jh                  ¬K«
      ‘te        d‰dšd›dœdddd¬�«      ‘te        dždŸ„ d dŒddddtf        jh                  ¬\«	      ‘te        d¡d¢„ d£d–dd�tf        jh                  ¬ «      ‘te        d¤d¥„ d¦d–dd�tf        jh                  ¬ «      ‘te        d§d¨„ d©dªddd�tf        jh                  ¬%«      ‘te        d«d¬„ d­dªddd�tf        jh                  ¬%«      ‘te        d®d¯„ d°dªddd�tf        jh                  ¬%«      ‘te        d±dŠd²ddŒdd�tf        jh                  ¬³«      ‘te        d±d´dµddŒd=dd�tf        jh                  ¬¶«	      ‘te        d·d¸d¹dºtf        jh                  ¬»«      ‘te        d·d¸d¹d¼tj        d½tf        jh                  ¬¾«      ‘te        d·d¸d¹d¿„ ddÀ¬Á«      ‘te        dÂdÃdÄdÅ„ d“tf        jh                  tm        dÆ«      ¬Ç«      ‘te        dÂdÃdÄdÈ„ d“dÉtf        jh                  tm        dÆ«      ¬Ê«      ‘te        dËdÃdÌdÍ„ d“dÎtf        jh                  ¬Ï«      ‘te        dËdÃdÌdÐ„ d“dÉtf        jh                  ¬Ï«      ‘te        dËdÑdÒdÓ„ d“dÔtf        jh                  ¬Ï«      ‘te        dËdÕdÖd×„ d“dØtf        jh                  ¬Ï«      ‘te        dÙdÚ„ dÛdÜ„ d“tf        jh                  ¬Ý«      ‘te        dÞdß„ dàdá„ d“tf        jh                  ¬Ý«      ‘te        dâdã„ dädå„ d“tf        jh                  ¬Ý«      ‘te        dædç„ dèdé„ d“d¬ê«      ‘te        dë„ dìdí„ dîd“d¬ï«      ‘te        dðdñdòdótf        jh                  ¬»«      ‘te        dôdñdõdötf        jh                  ¬»«      ‘te        to        tp        jr                  d÷d dø¬ù«      dúdûdüd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d dø¬ù«      dúdþdÿd“�¬ «      ‘te        to        tp        jr                  �dd dø¬ù«      dú�d�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �ddø¬ù«      �ddû�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �dd“�¬«      �d	dû�d
d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  �dd �dd“�¬«      �d�d�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d�dd“�¬«      �ddû�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �dd“�¬«      �d	dþ�dd“�¬ «      ‘te        to        tp        jr                  d÷d �dd�¬«      �ddû�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d�dd�¬«      �ddû�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  �dd dø¬ù«      �d�d�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d dø¬ù«      �d�d�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  �dd dø¬ù«      �d�d�dd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �ddø¬ù«      �d �d�d!d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d dø¬ù«      �d�d"�d#d“�¬ «      ‘te        to        tp        jr                  d÷d �d$d“�¬«      �d%�d�d&d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �d$d“�¬«      �d%�d"�d'd“�¬ «      ‘te        to        tp        jr                  �d(d �d$d“�¬«      �d)�d*�d+d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d�d$d“�¬«      �d,�d�d-d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d.�d$d“�¬«      �d/�d�d0d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d1�d$d“�¬«      �d2�d�d3d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  �d(d �d$d�¬«      �d4�d�d5d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d1�d$d�¬«      �d6�d�d7d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �d8d“�¬«      �d9�d�d:d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �d8d“�¬«      �d9�d"�d;d“�¬ «      ‘te        to        tp        jr                  �d(d �d8d“�¬«      �d<�d*�d=d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d�d8d“�¬«      �d>�d�d?d“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d.�d8d“�¬«      �d@�d�dAd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d1�d8d“�¬«      �dB�d�dCd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  �d(d �d8d�¬«      �dD�d�dEd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d1�d8d�¬«      �dF�d�dGd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d dø¬ù«      �dH�dI�dJd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d dø¬ù«      �dH�dK�dLd“�¬ «      ‘te        to        tp        jr                  �dMd dø¬ù«      �dN�dO�dPd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �ddø¬ù«      �dQ�dI�dRd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �dSd“�¬«      �dT�dI�dUd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d÷d �dSd“�¬«      �dT�dK�dVd“�¬ «      ‘te        to        tp        jr                  �dWd �dSd“�¬«      �dX�dY�dZd“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d[�dSd“�¬«      �d\d��d]�d^d“tf        jh                  �¬_«      ‘te        to        tp        jr                  �dWd �dSd�¬«      �d`�dY�dad“tf        jh                  ¬ý«      ‘te        to        tp        jr                  d �d[�dSd�¬«      �db�dO�dc�d^d“tf        jh                  �¬_«      ‘te        to        tp        jt                  �dd�¬e«      �df�dg�dhd“tf        jh                  ¬ý«      ‘te        to        tp        jt                  �ditf        jv                  �¬j«      �dk�dg�dld“d“tf        jh                  �¬m«      ‘te        to        tp        jt                  �di�¬e«      �dn�do�dpd“tf        jh                  ¬ý«      ‘te        to        tp        jt                  �di�¬e«      �dn�dq�drd“tf        jh                  ¬ý«      ‘te        to        tp        jt                  �ditf        jv                  �¬j«      �dk�dq�dsd“d“tf        jh                  �¬m«      ‘te        to        tp        jt                  �dt�¬e«      �du�dv�dwd“d“tf        jh                  �¬x«      ‘te        to        tp        jt                  �dy�¬e«      �dz�dv�d{d“d“tf        jh                  �¬x«      ‘te        to        tp        jt                  �dd�¬e«      �df�d|�d}d“d“�¬~«      ‘te        to        tp        jx                  �dd�¬e«      �d�dg�d€d“tf        jh                  ¬ý«      ‘te        to        tp        jx                  �di�¬e«      �d��do�d‚d“tf        jh                  ¬ý«      ‘te        to        tp        jx                  �di�¬e«      �d��dq�dƒd“tf        jh                  ¬ý«      ‘te        to        tp        jx                  �dt�¬e«      �d„�dv�d…d“tf        jh                  ¬ý«      ‘te        to        tp        jx                  �dy�¬e«      �d†�dv�d‡d“tf        jh                  ¬ý«      ‘te        to        tp        jx                  �dt�¬e«      �d„�d|�dˆd“�¬ «      ‘te        �d‰�dŠ„ �d‹�dŒd“dtf        jh                  �¬�«      ‘te        �dŽ�d�„ �d��d‘d“dtf        jh                  �¬�«      ‘te        �d’�d“„ �d��d”d“tj        dtf        jh                  �¬•«      ‘te        �d–�d—„ �d˜�dŒd“dtf        jh                  �¬�«      ‘te        �d™�dš„ �d›�d‘d“dtf        jh                  �¬�«      ‘te        �dœ�d�„ �d›�d”tj        d“dtf        jh                  �¬ž«      ‘te        �dŸ�d �d¡�d|�d¢d“tf        jh                  �¬£«      ‘te        �d¤�d¥„ tf        jh                  �¬¦«      ‘te        �d¤�d§„ �d¨tf        jh                  �¬©«      ‘te        �d¤�dª„ �d«tf        jh                  �¬©«      ‘te        �d¤�d¬�d­�d®„ �d¯tf        jh                  �¬°«      ‘te        �d¤�d±„ tj        d½tf        jh                  �¬²«      ‘te        �d³�d´�dµ�d¶�d·d�d¸d“d“tf        jh                  �¬¹«
      ‘te        �d³�dº�d�d»�d¼tp        jz                  f�d½�d¶d“�d¾dt|        r�d¿nd�tf        jh                  �¬À«	      ‘te        �dÁ�dÂ�dÃ�dÄ„ d“�d·dd�tf        jh                  �¬Å«	      ‘te        �dÁ�dº�d�d»�d¼tp        jz                  f�dÆ�dÇ„ d“�d¾dd�tf        jh                  �¬Å«	      ‘te        �dÈ�dº�d�d�d�d»�d¼tp        j~                  f�dÉ�dÊ„ d“�dËdt|        rd�n�dÌtf        jh                  �¬Å«	      ‘te        �dÍ�dÎ�dÏ�dÐ„ �dÑ„ d½ddtf        jh                  �¬Ò«	      ‘te        �dÓ�dÔ�dÕ�dÖtj        d½tf        jh                  �¬×«      ‘te        �dØ�dÙ�dÚtg        j€                  �d�dg«      f�dÖtj        d½tf        jh                  �¬×«      ‘te        �dÛg �dÜ¢�dÝd“f�dÞ�dßdddd�dà�¬á«	      ‘} tƒ        g �dâ¢g �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�                  te        �dë|› �dì��d�dy�dy�d|�di�did|f	�dí|› �dî|› �dï|› �dð�||d|› �dñ�dd�tf        jh                  �¬ò«
      «       ŒÎ ŒÙ g �dó¢}i �dô�dõtf        jh                  �döœ“�d÷�dø�d1i“�dùd“d“tf        jh                  �dúœ“�dûd“d“tf        jh                  �dúœ“�dŸd“tf        jh                  �düœ“�dý�dþtf        jh                  i“�dÿ�dþtf        jh                  i“�d �dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d�dþtf        jh                  i“�d	�dþtf        jh                  i“�dþtf        jh                  i�dþtf        jh                  i�dþtf        jh                  i�dþtf        jh                  i�dþtf        jh                  i�dþtf        jh                  i�dþtf        jh                  i�d
œ¥}	|D ]L  }
te        |
�dtj        d½d“�¬«      }|	j‘                  |
i «      }|j“                  |«       | j�                  |«       ŒN | S (  NÚConv1d)r1   rR   rW   z!torch::nn::Conv1dOptions(4, 5, 3))rM   r1   r/   Tr?   )r@   rA   rB   rC   ÚcudnnrE   rF   rG   )r1   rR   rW   rM   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)Ústride)	r@   rA   rB   rC   r�  rK   rE   rF   rG   )r1   rR   rW   r3   r3   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)Úpad1rŒ  )r1   rR   rR   r3   rM   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)Úpad2)r1   r1   rW   r3   r3   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r3   r1   r3   Ú	pad1size1)r1   r1   rR   r3   rM   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)Ú	pad2size1)r   r1   r/   Ú
zero_batch)r@   rA   rB   rC   r�  rK   rE   rF   ÚConv1d_dilatedc                  ó4   — t        j                  dddd¬«      S )Nr1   rR   rW   rM   ©Úkernel_sizeÚdilation©rv   rœ  rl   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Ž   rB   rC   rE   rF   rG   ÚConv1d_groupsc                  ó4   — t        j                  dddd¬«      S )Nr1   r^   rW   rM   ©r§  Úgroupsr©  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Â  ó   € ¤§	¡	¨!¨Q¸AÀaÔ H€ r)   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rM   r1   r^   )r�   rŽ   rB   rC   r�  rE   rF   rG   ÚConv1d_pad_validc                  ó4   — t        j                  dddd¬«      S )Nr1   rR   rW   Úvalid©Úpaddingr©  rl   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 )Nr1   rR   rW   Úsamer³  r©  rl   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 )Nr1   rR   r·  r³  r©  rl   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 )Nr1   rR   r·  rM   ©r´  r¨  r©  rl   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 )NrW   r1   ©rW   r3   ©r3   )r§  rž  r´  Úoutput_padding©rv   r¾  rl   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))r3   rW   é   )r�   rŽ   rB   r�  rC   rE   rF   rG   )rW   r1   rW   rM   r3   r3   r3   FzŒtorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r3   rW   r^   rH   )	rW   r1   rW   rM   r3   r3   r3   TrM   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 )	Nr1   r^   rW   rÀ  r3   rÁ  rM   )rž  r´  rÂ  r®  rÃ  rl   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))rM   r1   rÄ  ÚConv2d)rW   r1   ©rW   rM   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rM   rW   rÄ  rR   )	r@   rA   rB   rC   r�  Úcheck_with_long_tensorrE   rF   rG   )rW   r1   ©rW   rW   ©rM   rM   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r]   Ústrided)
r@   rA   rB   rC   r�  rK   rÊ  rE   rF   rG   )rW   r1   rË  rÌ  ©r3   r3   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r´  )rW   rM   rË  rÌ  rÎ  rÌ  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rM   rW   r0   r0   )rW   r1   rÉ  r3   r   r3   r3   Fz‚torch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rM   rW   r^   rR   g¸…ëQ¸Ž?)r   rW   rÄ  rR   )r@   rA   rB   rC   r�  rK   rÊ  rE   ÚConv2d_groupsc                  ó4   — t        j                  dddd¬«      S ©Nr1   r^   rÉ  rM   ©r®  ©rv   rÈ  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>g  ó   € ¤§	¡	¨!¨Q°¸qÔ A€ r)   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rM   r1   r^   rR   )	r�   rŽ   rB   rC   r�  rÊ  rE   rF   rG   ÚConv2d_groups_thnnc                  ó4   — t        j                  dddd¬«      S rÑ  rÓ  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>r  rÔ  r)   )r�   rŽ   rB   rC   rÊ  rE   rF   rG   ÚConv2d_pad_validc                  ó4   — t        j                  dddd¬«      S )NrM   r1   ©rW   r1   r²  r³  rÓ  rl   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))rM   rM   r^   rR   ÚConv2d_pad_samec                  ó4   — t        j                  dddd¬«      S )NrM   r1   rÙ  r·  r³  rÓ  rl   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 )NrM   r1   rÙ  r·  r½  rÓ  rl   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)rW   r1   rW   rÉ  r3   rÎ  z€torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r3   rW   rÄ  r^   )	r@   rA   rB   r�  rC   rÊ  rE   rF   rG   )	rW   r1   rW   ©rM   rW   r3   rÎ  r3   FrÌ  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r3   rW   r^   rÄ  )rW   r1   rW   rß  r3   rÎ  r3   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 )NrM   r1   rß  rÒ  )rv   rÞ  rl   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))r3   rM   r1   rR   ÚConv2d_depthwisec                  ó4   — t        j                  dddd¬«      S )Nr1   rË  rÒ  rÓ  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Ð  rÔ  r)   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rM   r1   r^   r^   Ú Conv2d_depthwise_with_multiplierc                  ó4   — t        j                  dddd¬«      S )Nr1   r0   rË  rÒ  rÓ  rl   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 )Nr1   rË  rÌ  )rž  r®  rÓ  rl   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 )Nr1   rË  rÎ  )r´  r®  rÓ  rl   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 )Nr1   rÌ  )r¨  r®  rÓ  rl   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))rM   r1   rR   rR   ÚConv3d)rM   rW   ©rM   rW   rM   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r3   rM   r1   rR   r1   gš™™™™™©?)rM   rW   ©rM   rW   r1   r3   r   r3   r3   Fz…torch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r3   rM   rW   r1   rR   )rM   rW   )r3   r3   r3   r3   r   r3   r3   FÚ1x1x1_no_biasF)rW   r1   rM   rM   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rM   rW   rR   rR   rR   )rW   r1   rM   rM   r3   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)Ústride_padding)rW   r1   rî  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rW   rW   r1   rR   )r@   rA   rB   rC   r�  rÊ  rK   rE   ÚConv3d_groupsc                  ó4   — t        j                  dddd¬«      S )NrM   r1   rW   r­  ©rv   rì  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>D  r¯  r)   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)ÚConv3d_dilatedc                  ó4   — t        j                  dddd¬«      S )NrW   r1   rM   r¦  ró  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>O  rª  r)   z-torch::nn::Conv3dOptions(3, 4, 2).dilation(2)ÚConv3d_dilated_stridedc                  ó6   — t        j                  ddddd¬«      S )NrW   r1   rM   )r§  r¨  rž  ró  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>X  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 )NrW   r1   rî  r²  r³  ró  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>a  s   € ¤§	¡	¨!¨Q°	À7Ô K€ r)   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rM   rW   r^   rR   r1   ÚConv3d_pad_samec                  ó4   — t        j                  dddd¬«      S )NrW   r1   rî  r·  r³  ró  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>k  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 )NrW   r1   rî  r·  rM   r½  ró  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>u  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}))r@   rA   rB   r�  rC   rE   rF   rG   )	rM   rW   rí  r3   r   r   r3   T)rM   rM   rM   z§torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	r@   rA   rB   r�  rC   rK   rE   rF   rG   ÚReplicationPad3d))r3   rM   rW   rW   rM   r3   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rM   rW   rM   rM   rM   )r@   rA   rB   rC   rG   )rW   rM   rM   rM   Úno_batch_dim)r@   rA   rB   rC   rD   rK   rG   c            	      óV   — t        j                  dddddt         j                  d¬«      S )NrM   rW   T)rº   Úrequires_grad)r5   r‡   Ú
complex128rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>§  s"   € œUŸZ™Z¨¨1¨a°°A¼U×=MÑ=MÐ]aÔb€ r)   Úcomplex)r@   rA   rB   r�   Ú	skip_halfrK   Ú	Embedding)r1   rW   z!torch::nn::EmbeddingOptions(4, 3)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S ©NrM   rW   r¹   r1   ©r5   ro  rb  Úrandom_rl   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)r@   rA   rB   r�   r_   rG   Ú	decoratorc                  óŒ   — t        j                  ddt         j                  ¬«      j                  d«      j	                  dd«      S ©Nr3   i   r¹   r1   rÄ  ©r5   ro  rb  r
  r9   rl   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)r@   rA   rB   r�   r_   rK   rG   r  ÚEmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  ól   — t        j                  ddt         j                  ¬«      j                  d«      S r  r	  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Â  r  r)   Úmean)r@   rA   rB   r�   r_   rK   rG   c                  óŒ   — t        j                  ddt         j                  ¬«      j                  d«      j	                  dd«      S r  r  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Ë  r  r)   )r1   rW   Nç       @FrS  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	  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Õ  r  r)   rS  )r1   rW   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	  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>ß  r  r)   r  ÚEmbeddingBag_mean_padding_idxc                  ó2   — t        j                  ddd¬«      S )Nr1   rW   r3   ©Úpadding_idx©rv   r  rl   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 ©NrW   ©r5   Ústackrb   rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>è  ó&   € œUŸ[™[¬%¯.©.¸Ó*;¼U¿^¹^ÈAÓ=NÐ)OÓP€ r)   )r�   rŽ   rB   r�   r_   rG   ÚEmbeddingBag_sum_padding_idxc            	      ó:   — t        j                  ddd dddd¬«      S )Nr1   rW   r  FrS  r3   r  r  rl   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!  rl   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 )Nr1   rW   r  Fr  r3   r  r  rl   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!  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>ú  r#  r)   ÚEmbeddingBag_sparsec                  óP   — t        j                  dddt        j                  ¬«      S )Nr1   rW   T)Úsparserº   )rv   r  r5   rc   rl   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 ©NrM   r3   ©r5   rb   Úrepeatrl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>  ó   € œUŸ^™^¨AÓ.×5Ñ5°a¸Ó;€ r)   )r�   rŽ   rB   r�   r_   Úhas_sparse_gradientsc                  óP   — t        j                  ddt        j                  d¬«      S )Nr1   rW   T)rº   r-  )rv   r  r5   rc   rl   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 r/  r0  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>
  r2  r)   ÚEmbedding_sparse)rŽ   rB   r�   r�   r_   r3  ÚPixelShufflerÀ  z!torch::nn::PixelShuffleOptions(3))r3   é	   r1   r1   ÚPixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r3   r3   é   r:  r:  Únearest)rd   Úscale_factorÚmodezŽF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r3   rM   r1   Úinterpolate_nearest_1d)rŽ   Úcpp_options_argsrC   r�   r’   rG   )r   rM   r1   Úinterpolate_nearest_1d_zero_dim)rŽ   r?  rC   r�   r’   )r:  )r3   rM   rW   Úinterpolate_nearest_tuple_1dg      @z�F::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)Úinterpolate_nearest_scale_1dÚlinear)rd   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)r1   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_cornersrM   zÒF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   é€   r3   r3   Ú%interpolate_nearest_2d_launch_configszÔF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   r1   r1   Úinterpolate_nearest_2d)r:  é   zÔF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   rW   r1   Úinterpolate_nearest_tuple_2dzÓF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)Úinterpolate_nearest_scale_2d)r   rM   r1   r1   Ú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)r1   r^   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r3   rM   rM   rW   Ú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))r3   rM   r1   r1   r1   Úinterpolate_nearest_3d)r   rM   r1   r1   r1   Úinterpolate_nearest_3d_zero_dim)r:  rN  rN  zØF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   rW   r1   r1   Ú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)r1   r^   r^   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r3   rM   rM   rW   rW   Ú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Ž   r?  rC   r�   r¬   r’   rG   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_cornersr4   rP  zF::SoftmaxFuncOptions(-1))rM   rK  Úsoftmax_lastdimr3   )rQ  rº   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)Úsoftmax_lastdim_dtype)rŽ   r?  rC   r�   r’   rN   rG   zF::SoftmaxFuncOptions(1))rM   rK  rM   rM   Úsoftmax_spatial_special)rM   rM   r1   r1   Úsoftmax_spatialÚsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rV   Úsoftmax_functional_dim0)rŽ   r?  rC   r�   rN   r’   rG   rW   zF::SoftmaxFuncOptions(3)Úsoftmax_functional_dim3rl   Úsoftmax_functional_scalar)rŽ   r?  rC   r�   rN   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   ©rv   r~  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>q	  s   € ¤§	¡	¨&°&¸&À&Ó I€ r)   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rM   r1   rW   rW   )r�   rŽ   rB   rC   r_   rN   rG   ÚFoldc                  ó4   — t        j                  ddddd«      S ©NrË  rÌ  rÎ  r€  ©rv   r‚  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>z	  ó   € ¤§¡¨°¸ÀÈÓ O€ r)   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rM   rN  r1   ÚFold_no_batch_dim_inputc                  ó4   — t        j                  ddddd«      S r„  r…  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>ƒ	  r†  r)   )rN  r1   )r�   rŽ   rB   rC   r_   ÚrefrN   rG   ÚUnfold_int_inputc                  ó2   — t        j                  dddd«      S )NrM   r3   r   r�  rl   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 ©NrW   rM   r3   r   r…  rl   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…  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Ÿ	  r�  r)   )r�   rŽ   rB   rC   r‰  r_   rN   rG   rL   rO   rQ   Úwith_up_down_scalarrT   ÚPairwiseDistancec                  óZ   — t        j                  dd«      t        j                  dd«      fS ©Nr/   r0   r/  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>²	  ó!   € œeŸk™k¨"¨aÓ0´%·+±+¸bÀ!Ó2DÐE€ r)   )r@   r�   rG   c                  óZ   — t        j                  dd«      t        j                  dd«      fS )Nr/   r3   r0   r/  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>·	  r–  r)   Úbroadcast_lhs)r@   r�   rK   rG   c                  óZ   — t        j                  dd«      t        j                  dd«      fS )Nr/   r0   r3   r/  rl   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•  r/  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Å	  r–  r)   Úwith_non_default_args)r@   rA   rB   r�   rK   rG   c                  óV   — t        j                  d«      t        j                  d«      fS )Nr0   r/  rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>Ë	  s   € œeŸk™k¨!›n¬e¯k©k¸!«nÐ=€ r)   )r@   r�   rD   rK   rG   ÚTransformerEncoderLayer)r1   rM   rN  ç        zštorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)rî  Úrelu_activationrP   )
r@   rA   rB   rC   rK   rE   rF   r`   r_   rG   r1   r0   rŸ  z×torch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)Úgelu_activationg{®Gáz´?)	r@   rA   rB   rC   r_   rK   rE   rF   rG   ÚTransformerDecoderLayer)r1   rM   r0   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 ©NrW   r1   rM   r†   rl   r)   r'   r>   z&get_new_module_tests.<locals>.<lambda>õ	  ó%   € œeŸj™j¨¨A¨qÓ1´5·:±:¸aÀÀAÓ3FÐG€ r)   )	r@   rA   rB   r�   r_   rK   rE   rF   rG   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†   rl   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†   rl   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¸ž?r.   )rW   rR   ztorch::nn::LinearOptions(3, 5)c                  ó,   — t        j                  d«      S r   r†   rl   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 )Nr3   r4   r   )r5   r6   r8   r7   r:   s      r'   r>   z&get_new_module_tests.<locals>.<lambda>!
  s=   € ¬¯©°!·&±&¸¸B³-ÀÀ1ÁÇÁÃÓ)J×)OÑ)OÐPRÓ)SÐVWÐXYÑVZÑ)Z€ r)   )	r@   rA   rB   r�   rD   rK   rE   rF   rG   rU   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))éýÿÿÿr4   )rW   r1   rR   )r@   rB   rA   rC   rD   rK   rG   Ú	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})éþÿÿÿÚ	LayerNorm)é8   r°  r°  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r1   r°  r°  r°  Ú3d_no_affine_large_feature)	r@   rA   rB   rC   r�  Ú
check_evalÚgradcheck_fast_modeÚ
check_halfrK   )ÚreflectÚcircularÚ	replicater  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZerosrµ  ú{z, ú}rÌ  rß  c              3   ó&   K  — | ]	  }|d z   –— Œ y­w©r3   Nrl   ©Ú.0r<   s     r'   ú	<genexpr>z'get_new_module_tests.<locals>.<genexpr>V
  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)
r@   rA   rB   rC   Úoutput_sizer�  rK   rE   rF   rG   )ÚELUÚ
HardshrinkÚHardsigmoidÚHardtanhÚ	HardswishÚ	LeakyReLUÚ
LogSigmoidÚPReLUÚReLUÚReLU6rL   ÚSELUÚCELUÚGELUÚGLUrÚ   ÚSiLUÚMishÚSoftplusÚ
SoftshrinkÚSoftsignÚTanhÚ
TanhshrinkÚ	ThresholdrÏ  )r  )rA   rG   rÙ  rA   rÆ  )r_   Ú	check_jitrG   rÈ  )rN   rG   rÄ  rG   rÐ  rÑ  rÅ  rÇ  rÉ  rÊ  rÓ  rË  rÍ  rÌ  rÎ  )rÒ  rÚ   rÔ  rÕ  rÖ  r×  rØ  )r@   rC   rD   rK   Útest_cpp_api_parity)Jr—   r¯   rÅ   rÜ   rã   r·   rÌ   ré   rý   r  r  r  r  r%  r6  r=  rD  rV  r[  rs  r€  r•  rž  r¥  r±  rÀ  r¸  rÇ  rÔ  rÍ  rá  rç  rð  rö  r   r  r  r#  r)  r6  r?  rG  rU  r[  ri  ro  ru  r|  r‚  rˆ  r•   r5   rc   rš  r   rx   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_paddingrC   rÃ  Únon_linear_activations_no_batchÚ!non_linear_activations_extra_infoÚnon_linear_activationÚactivation_test_infoÚ
extra_infos                r'   Úget_new_module_testsró  8  s&#  € ð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ó+[ò #Ñ&ˆÐ&ñ ò 	ˆ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  rS  Ú	batchmeanr   )r5   rŠ   r©   r  rS  rQ  rd   )r¤  rK  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\  s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 )NrW   r   r3   rM   rŸ  r  rS  )rQ  rd   r5   r  r�   Úonesr   rä  Úitemr�  ÚinsertrŽ  rS  )r¤  rK  r+   rv  r   ÚNÚCÚout_sizeÚoutputÚtotal_weightrd   ÚtupÚt_nxÚnormÚinput_indexs                  r'   ÚnlllossNd_referencer  ­
  sB  € à�9‰9‹;˜!ÒÐÐØ�
‰
�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\  sJ ‚t        j                  | d«      } | j                  d«      }|€$t        j                  |«      j                  | «      } |j                  d|gd„ | j                  dd  D «       ¢­Ž }|dkD  r|dk  sJ ‚|d|z
  z  ||z  z   }| |z  |z  j                  d¬«       }|dk(  r|j                  «       S |dk(  r|j                  «       S |S )	NrM   r3   c              3   ó    K  — | ]  }d –— Œ y­wr»  rl   ©r½  r=   s     r'   r¾  z;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>Ï
  s   è ø€ Ò < q¤Ñ <ùó   ‚rŸ  rX  rP  r  rS  )
rQ  r5   rß  rd   rø  r�   r8   ÚshaperS  r  )r¤  rK  r+   r   Úlabel_smoothingrü  rþ  s          r'   Ú(cross_entropy_loss_prob_target_referencer  Ç
  sô   € à�9‰9‹;˜!ÒÐÐä×Ñ˜e QÓ'€EØ�
‰
�1‹€AØ€~Ü—‘˜A“×&Ñ& uÓ-ˆØˆV�[‰[˜˜AÐ=Ñ <¨E¯K©K¸¸¨OÔ <Ò=€Fà˜ÒØ #Ò%Ð%Ð%Ø˜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J ‚ J ‚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 )
Nr3   ru  rŸ  rX  c              3   ó    K  — | ]  }d –— Œ y­wr»  rl   r  s     r'   r¾  z>cross_entropy_loss_indices_target_reference.<locals>.<genexpr>ï
  s   è ø€ Ò+G°!¬AÑ+Gùr  rM   r  r   rS  )r5   rß  r   ra  rd   r8   r	  rS  Úmasked_fill_ÚgatherÚmasked_selectÚlogical_notrZ   r  )r¤  rK  r+   rv  r   r
  Úlog_softmax_inputÚnlllossrü  Úsmooth_lossÚignore_maskÚrets               r'   Ú+cross_entropy_loss_indices_target_referencer  Ý
  s‰  € ä×)Ñ)¨%°Ó3ÐÜ�j‰jØØØØ!Øô€Gð ˜#ÒØˆà�Ô' CÒ'Ð'Ñ'Ð'Ð'ä×Ñ˜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   rv  r
  )r	  r  r  )r¤  rK  r+   rv  r   r
  s         r'   Úcross_entropy_loss_referencer    sK   € à‡{�{�f—l‘lÒ"Ü7ØØØØØ+ô-ð 	-ô ;Ø�6 &°IØ%°ô
ð 	
r)   c           
      óö   — d„ }t        | |«      D ��cg c]  \  }} |||||«      ‘Œ }}}t        |Ž \  }	}
| 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€  r3   rl   )r¤  rK  r+   rv  r  r&   s         r'   Únll_loss_helperz*nllloss_reference.<locals>.nll_loss_helper  s6   € Ø�\Ò!ØØ�N‰q¨¨v©ˆØ˜‘-� $Ñ&ˆØ˜ˆ~Ðr)   r  rS  )rã  Ú
new_tensorrS  )r¤  rK  r+   rv  r   r  r;   r7   Úlosses_and_weightsÚlossesr,   Úlosses_tensors               r'   Únllloss_referencer!    s–   € òô '*¨%°Ó&8÷:Ù"˜a ñ *¨!¨Q°¸ÕEð :Ðñ :äÐ-Ð.�O€FˆGØ×$Ñ$ VÓ,€MØ�FÒÜ�=Ó!¤C¨£LÑ0Ð0Ø	�eÒ	Ü�=Ó!Ð!àÐùó:s   “A5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ë  rM   r  rS  )r3  r�   r  rS  )r¤  rK  r   rí  Úabs_diffÚge_beta_maskÚlt_beta_maskrþ  s           r'   Úsmoothl1loss_referencer&  +  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ë  rM   r  rS  )r3  r  rS  )r¤  rK  r   rû  r#  Ú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        dt        | «      «      D ]"  }||vsŒ|t        dd| |   z
  | |   z   «      z  }Œ$ Œ> |S )Nr   r3   )rç  rä  Úlenr  )r¤  rK  ÚtargetsÚtarget_indexrS  r;   s         r'   Ú_multilabelmarginloss_referencer/  G  s”   € Ø€GØò %ˆØ˜!ÒÙØ�‰�|Õ$ð%ð
 €CØò BˆÜ�qœ#˜e›*Ó%ò 	BˆAØ˜ÒØ”s˜1˜a %¨Ñ"5Ñ5¸¸a¹Ñ@ÓAÑA‘ñ	BðBð
 €Jr)   c                 óê  — | j                  «       }| j                  «       dk  r�|j                  «       dk  s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|«      D ]  }t        | |   ||   «      ||<   Œ |dk(  r|j                  «       |z  S |dk(  r|j                  «       |z  S |dk  r|j                  «       |z  S ||z  S ©NrM   r3   r   r  rS  )
rQ  r�  rd   ÚnewÚzero_rä  r/  r  rS  r–  )r¤  rK  r   Ú	input_dimÚnrQ  rþ  r;   s           r'   Úmultilabelmarginloss_referencer6  W  sO  € à—	‘	“€IØ‡y�yƒ{�Q‚Ø�z‰z‹|˜aÒÐÐØ&+§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�a‹[ò 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  r3   r  rS  )r"  r�   r5   Úwherer  rS  )r¤  rK  r<  r   Úmargin_clamprþ  s         r'   Úhingeembeddingloss_referencer:  q  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 )Nr3   r  rS  )rŠ   r©   r  rS  )r¤  rK  r   rþ  s       r'   Úsoftmarginloss_referencer<  |  sQ   € Ø�E�6˜F‘?×'Ñ'Ó)Ñ)×.Ñ.Ó0€Fà�FÒØ�{‰{‹}ÐØ	�eÒ	Ø�z‰z‹|ÐØ€Mr)   c           	      óè   — |€)| j                  t        | «      «      j                  d«      }d}t        dt        | «      «      D ],  }||k7  sŒ	|||   t	        d|| |   z
  | |   z   «      |z  z  z  }Œ. |S )Nr3   r   )r2  r,  Úfill_rä  r  )r¤  Ú
target_idxr<   r<  r+   rþ  r;   s          r'   Ú_multimarginloss_referencer@  †  sŠ   € Ø€~Ø—‘œ3˜u›:Ó&×,Ñ,¨QÓ/ˆà€FÜ�1”c˜%“jÓ!ò bˆØ�
‹?Ø�f˜ZÑ(¬C°°F¸UÀ:Ñ=NÑ4NÐQVÐWXÑQYÑ4YÓ,[Ð_`Ñ,`ÑaÑa‰Fðbð €Mr)   c                 ól  — | 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|«      D ]  }
t        | |
   ||
   |||«      |	|
<   Œ |dk(  r|	j                  «       |z  S |dk(  r|	j                  «       |z  S |dk(  r|	j                  d«      |z  S |	|z  S r1  )	rQ  r�  rd   r2  rä  r@  r  rS  r–  )r¤  rK  r<   r<  r+   r   Ú
target_dimr5  rQ  rþ  Úxs              r'   Úmultimarginloss_referencerD  ‘  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�a‹[ò 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                 ó8  — | j                  | j                  d«      «      }t        d| j                  d«      «      D ][  }| |   ||   z  j                  «       | |   | |   z  j                  «       dz   ||   ||   z  j                  «       dz   z  dz  z  ||<   Œ] |S )Nr   gê-�™—q=rë  )r2  rd   rä  rS  )ÚaÚbÚcosr;   s       r'   Ú_cosz+cosineembeddingloss_reference.<locals>._cos©  s¤   € Ø�e‰e�A—F‘F˜1“IÓˆÜ�q˜!Ÿ&™& ›)Ó$ò 	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)   r3   r   r  r  rS  )r5   r8  r"  r  rS  )Úinput1Úinput2rK  r<  r   rJ  rþ  s          r'   Úcosineembeddingloss_referencerM  ¨  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  rS  )r5   Úpairwise_distancer  r"  r  rS  )ÚanchorÚpositiveÚnegativer<  r<   ÚepsÚswapr   Úd_pÚd_nÚd_srþ  s               r'   Útripletmarginloss_referencerX  ¸  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  rS  )r"  r  rS  )rK  rL  rK  r<  r   rþ  s         r'   Úmarginrankingloss_referencerZ  È  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   r3   rM   r®  r4   r  ©rº   ÚdevicerS  )r5   Ú	as_tensorrb  rº   rc   Úcumsumrä  rd   rù  Únew_fullrQ  rŠ   Ú	new_zerosÚcloner8  rç  rS  r©   Úcatr®   r]  r  )Ú	log_probsr-  Úinput_lengthsÚtarget_lengthsÚblankr   ÚdtÚcum_target_lengthsr  r;   Úinput_lengthÚtarget_lengthÚcum_target_lengthÚtargets_primeÚprobsÚalphaÚ
mask_thirdr7   Ú
alpha_nextrþ  s                       r'   Úctcloss_referencerr  Ò  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  rj  r®  rß  rÿ  r  r1  rF  rf  ÚCosineEmbeddingLossÚTripletMarginLossÚMarginRankingLossÚCTCLossÚCrossEntropyLossr|  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.
    r4   c                 ó˜   — t        | t        t        f«      r| D �cg c]  }|j                  d«      ‘Œ c}S | j                  d«      S c c}w rJ   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 rk   )rŒ  r�  rŽ  Úextendrç  )Úxsr&   rC  rZ   s      €r'   rZ   z4single_batch_reference_criterion_fn.<locals>.flatten  sO   ø€ ØˆÜ�bœ4¤˜-Ô(Øò *�Ø—‘™g a›jÕ)ð*ð ˆð �M‰M˜"ÔØˆr)   Nr}   r   )r(   r–  )rn   Ú	criterionr’  r¤  Úsingle_batch_input_argsrþ  r   rZ   s          @r'   Ú#single_batch_reference_criterion_fnr    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  rS  Ú_no_batch_dim_)Únamec                 ó8   —  t        t        | «      t        ¬«      S ©Nr~   ©r!   rv   r   ©r„  rn   s     r'   r>   r>   6  ó   € Ð->¬W´R¸Ó->ÌÔ-S€ r)   rÀ  )r�   rŽ   rC   Útarget_sizerD   rÛ  rG   ÚKLDivLoss_no_batch_dim_c                  ó6   — t        j                  t        ¬«      S r†  )rv   rö   r   rl   r)   r'   r>   r>   C  s   € œBŸL™L´9Ô=€ r)   c                  óH   — t        j                  d«      j                  «       S ©NrÀ  rò   rl   r)   r'   r>   r>   D  s   € œŸ™ DÓ)×-Ñ-Ó/€ r)   c                  ó,   — t        j                  d«      S rŽ  r†   rl   r)   r'   r>   r>   E  s   € œ%Ÿ*™* TÓ*€ r)   )r�   rŽ   r�   Ú	target_fnrD   rÛ  rG   ÚBCELossc                  ór   — t        j                  t        j                  dt         j                  ¬«      «      S ©Nr8  r¹   )r5   rÖ   r”   rc   rl   r)   r'   r>   r>   R  s   € ”—‘œeŸk™k¨!´5·<±<Ô@ÓA€ r)   c                  ó¤   — t        j                  dt         j                  ¬«      j                  d«      j	                  t         j                  «      S )Nr8  r¹   r   )r5   r”   rc   r­   r®   rl   r)   r'   r>   r>   S  s/   € ”—‘˜A¤U§\¡\Ô2×5Ñ5°aÓ8×;Ñ;¼E¿L¹LÓI€ r)   ÚBCEWithLogitsLossc                  óL   — t        j                  dt         j                  ¬«      S r“  ©r5   r”   rc   rl   r)   r'   r>   r>   U  s   € ¤%§+¡+¨a´u·|±|Ô"D€ r)   c                  óL   — t        j                  dt         j                  ¬«      S r“  r—  rl   r)   r'   r>   r>   U  s   € ÌeÏkÉkÐZ[Ôch×coÑcoÔNp€ r)   r1  c                  óL   — t        j                  dt         j                  ¬«      S r“  r—  rl   r)   r'   r>   r>   V  s   € ¤5§;¡;¨q¼¿¹Ô#E€ r)   c                  ó6   — t        j                  g d¢dz  «      S ©N)r4   r3   r3   rW   ©r5   Útensorrl   r)   r'   r>   r>   V  s   € ÌuÏ|É|Ò\fÐijÑ\jÓOk€ r)   r  c                  óL   — t        j                  dt         j                  ¬«      S )Nr1   r¹   r—  rl   r)   r'   r>   r>   W  s   € ¤U§[¡[°¼%¿,¹,Ô%G€ r)   c                  ó0   — t        j                  g d¢«      S )N)rW   r   r4   r3   rœ  rl   r)   r'   r>   r>   W  s   € ÔQV×Q]ÑQ]Ò^kÓQl€ r)   rF  c                  óL   — t        j                  dt         j                  ¬«      S r“  r—  rl   r)   r'   r>   r>   X  s   € œuŸ{™{¨1´E·L±LÔA€ r)   c                  ó6   — t        j                  g d¢dz  «      S r›  rœ  rl   r)   r'   r>   r>   X  s   € Ì5Ï<É<ÒXbÐefÑXfÓKg€ r)   rj  c                  óv   — t        j                  t        j                  dt        j                  ¬«      d¬«      S )NrW   r¹   r   rP  )r   rß  r5   r”   rc   rl   r)   r'   r>   r>   Y  s    € œŸ™¤e§k¡k°!¼5¿<¹<Ô&HÈaÔP€ r)   c                  ó,   — t        j                  d«      S rY   rœ  rl   r)   r'   r>   r>   Y  s   € ÔZ_×ZfÑZfÐghÓZi€ r)   rs  c                  ó–   — t        j                  dt         j                  ¬«      t        j                  dt         j                  ¬«      fS r“  r—  rl   r)   r'   r>   r>   \  ó)   € ”—‘˜Q¤e§l¡lÔ3´U·[±[ÀÌ%Ï,É,Ô5WÐX€ r)   c                  óL   — t        j                  dt         j                  ¬«      S )Nr3   r¹   )r5   r�  rc   rl   r)   r'   r>   r>   ]  s   € ”—‘˜Q¤e§l¡lÔ3€ r)   ru  c                  óV   — t        j                  d«      t        j                  d«      fS r  r/  rl   r)   r'   r>   r>   `  s   € ¤5§;¡;¨r£?´E·K±KÀ³OÐ"D€ r)   c                  óH   — t        j                  d«      j                  «       S r  )r5   r”   Úsignrl   r)   r'   r>   r>   `  s   € ÌeÏkÉkÐZ\Ëo×NbÑNbÓNd€ r)   rt  c                  ó–   — t        j                  dt         j                  ¬«      t        j                  dt         j                  ¬«      fS r“  r—  rl   r)   r'   r>   r>   d  r¥  r)   c                  óL   — t        j                  dt         j                  ¬«      S r“  r—  rl   r)   r'   r>   r>   e  s   € ”—‘˜A¤U§\¡\Ô2€ r)   ÚMultiLabelSoftMarginLossc                  óL   — t        j                  dt         j                  ¬«      S r“  r—  rl   r)   r'   r>   r>   g  s   € ¬¯©°Q¼e¿l¹lÔ)K€ r)   c                  ó,   — t        j                  d«      S )Nr8  r/  rl   r)   r'   r>   r>   g  s   € ÔUZ×U`ÑU`ÐabÓUc€ r)   r_   Ú,classification_criterion_no_batch_extra_info)r‘  r•  r1  rj  rF  c                 ó8   —  t        t        | «      t        ¬«      S r†  r‡  rˆ  s     r'   r>   r>   y  r‰  r)   c                 ó   —  | «       S rk   rl   ©Úfs    r'   r>   r>   z  s   € ¡A£C€ r)   c                 ó   —  | «       S rk   rl   r²  s    r'   r>   r>   {  s   € ¡a£c€ r)   )r�   rŽ   r�   r�  rD   rÛ  Ú
has_parityc                   ó|  — 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ej                  eej                     f   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         ‚rk   ©ÚNotImplementedError)rm   rn   rp   s      r'   Ú_forwardzNNTestCase._forwardˆ  ó   € ä!Ð!r)   r˜  Úreturnc                 ó   — t         ‚rk   r¹  ©rm   r˜  s     r'   Ú_get_parameterszNNTestCase._get_parametersŒ  r¼  r)   Nc                 ó   — t         ‚rk   r¹  r¿  s     r'   Ú_zero_grad_parametersz NNTestCase._zero_grad_parameters�  r¼  r)   r¤  rþ  Úgrad_outputÚcreate_graphc                 ó   — t         ‚rk   r¹  )rm   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rk   )Ú	_jacobian)r½  ÚelemÚnum_outrm   s     €€r'   r¾  z'NNTestCase._jacobian.<locals>.<genexpr>�  s   øè ø€ ÒI¸4˜Ÿ™¨¨g×6ÑIùs   ƒ)rŒ  rŽ  r�  rÉ  r5   r  Únelement)rm   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 )Nr4   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrk   )Ú_flatten_tensors)r½  rG  rm   s     €r'   r¾  z.NNTestCase._flatten_tensors.<locals>.<genexpr>ª  s   øè ø€ Ò=°a˜×.Ñ.¨q×1Ñ=ùó   ƒ)rŒ  r5   r•  Ú	is_sparseÚto_denser8   rŽ  )rm   rC  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 rk   )rŒ  r5   r•  r  Úgradr3  Údetach_Ú_zero_grad_input)rm   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 ��cg c]  \  }}|€t        j                  |«      n|‘Œ  }}}t        j                  |«      }|j                  d«      }d||<   |r| j                  |«       |r| j                  |«       | j                  ||||«      }|rCt        t	        |«      «      D ]+  \  }}|j!                  «       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rk   )Únumelr¼  s     r'   r¾  z2NNTestCase._analytical_jacobian.<locals>.<genexpr>¾  s   è ø€ ÒO¨!˜AŸG™GŸIÑOùó   ‚r   r4   r3   rl   )r»  rÌ  rÉ  r�  r   rS  rÀ  r5   r  rä  rã  Ú
zeros_liker8   rÂ  rÖ  rÆ  Ú
contiguousrc  rÏ  )rm   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_ÓM`×aÁ6ÀAÀq¨a¨i”u×'Ñ'¨Ô*¸QÑ>ÐaˆGÑaä×$Ñ$ VÓ,ˆEØŸ™ B›ˆJØˆJ�q‰Má"Ø×*Ñ*¨6Ô2áØ×%Ñ% eÔ,Ø—n‘n V¨U°F¸EÓBˆGáÜ'*Ð+>ÄÈgÓ@VÓ'Wò A‘O�J Ø'*§~¡~Ó'7×'<Ñ'<¸RÓ'@�Jšq !˜tÒ$ðAâ"Ü',§y¡y°×1FÑ1FÀwÓ1OÐQRÓ'S�šq !˜tÓ$ð)	Tð, )+ˆÙØ�<�=Ñ ˆCÙØ�>�?Ñ"ˆCàˆ
ùó3 bs   Â9#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 rk   )r»  Údetach)r¤  r˜  rm   s    €€r'   Úfwz*NNTestCase._numerical_jacobian.<locals>.fwà  s   ø€ Ø—=‘= ¨Ó/×6Ñ6Ó8Ð8r)   rl   ç�íµ ÷Æ°>)rS  )rK  rS  r   )r   rÀ  rç  r5   rc  )rm   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 ]W  \  }
}|
j                  «       dk7  sŒ|	j                  |
j                  |d¬«      j                  «       j                  «       «       ŒY t        |	«      dkD  r | j                  t        |	«      t        «       y y )Nr   r4   )ro  )ÚboolrÀ  rë  ró  r�  r   rã  rÙ  rç  rŽ  r3  r  r,  ÚassertLessEqualÚ	PRECISION)rm   r˜  r¤  rÝ  rÞ  Ú
analyticalÚ	numericalÚanalytical_tÚnumerical_tÚdifferencesrG  r5  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Ó2ò 	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)rr   rs   rt   r   r»  rv   rw   rŽ  r�  Ú	ParameterrÀ  rÂ  r   r5   r•  r   r   rõ  rÆ  rÉ  rÏ  rÖ  rë  ró  rý  rl   r)   r'   r·  r·  …  s  „ ð ñ"ó ð"ð ð" b§i¡ið "°E¸$¸r¿|¹|Ñ:LÈdÐSU×S_ÑS_ÑN`Ð:`Ñ4aò "ó ð"ð ð"¨B¯I©Ið "¸$ò "ó ð"ð ð (-ñ" §	¡	ð "Ø)ð"Ø38·<±<ð"à$ U§\¡\°8¸E¿L¹LÑ3IÐ%IÑJð"ð !%ò"ó ð"ò:ò>ò)ñ(Ð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_argsrA   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  rA   rl   z
: Specify z5 by a value, a function to generate it, or it's size!)	rK   r�   rŽ   rD   Ú_required_arg_namesÚ
ValueErrorÚget_nameÚ_extra_kwargsÚ
_arg_cache)rm   rŽ   rK   rD   r�   rp   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Ž   rr   rK   )rm   Ú	test_names     r'   r	  zTestBase.get_name  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rk   )Ú_unpack)r½  Úvrm   s     €r'   r¾  z#TestBase._unpack.<locals>.<genexpr>  s   øè ø€ Ò>°1˜tŸ|™|¨AŸÑ>ùrÐ  )rŒ  r5   r•  r   Útype)rm   Úvalues   ` r'   r  zTestBase._unpack  s:   ø€ Ü�eœUŸ\™\Ô*ØˆLÜ˜ÔØ”4˜“;Ó>¸Ô>Ó>Ð>àˆLr)   c                 ó&   — | j                  dd«      S )NrA   T©Ú_get_arg©rm   s    r'   rA   zTestBase.constructor_args#  s   € à�}‰}Ð/°Ó6Ð6r)   c                 ó&   — | j                  dd«      S )Nr  Tr  r  s    r'   r  zTestBase.extra_args'  s   € à�}‰}˜\¨4Ó0Ð0r)   c           
      ó  ‡— || j                   v sJ ‚|| j                  vr»|dz   }|dz   }|| j                  v r| j                  |   | j                  |<   n†|| j                  v r" | j                  |   «       | j                  |<   nV|| j                  v s!J d|› d|› d|› d| j                  «       › �«       ‚ˆfd„Š ‰| j                  |   «      | j                  |<   |r| j	                  | j                  |   «      S | j                  |   S )Nr  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 rk   )rŒ  r�  r5   r•  rc   r”   )ÚsizesÚsÚmap_tensor_sizess     €r'   r  z+TestBase._get_arg.<locals>.map_tensor_sizes:  sS   ø€ Ü! %¬Ô.Ø=BÖC¸Ñ 0°Õ 3ÒCÐCÜ# E¬5¯<©<Ô8Ø$Ÿ|™|›~Ð-ä$Ÿ{™{¨5Ó1Ð1ùò	  Ds   –A')r  r  r
  r	  r  )rm   r„  ÚunpackÚfn_nameÚ	size_namer  s        @r'   r  zTestBase._get_arg+  s  ø€ Ø�t×/Ñ/Ñ/Ð/Ð/à�t—‘Ñ&Ø˜U‘lˆGØ˜w™ˆIà�t×)Ñ)Ñ)Ø(,×(:Ñ(:¸4Ñ(@�—‘ Ò%Ø˜D×.Ñ.Ñ.Ø(C¨×(:Ñ(:¸7Ñ(CÓ(E�—‘ Ò%à  D×$6Ñ$6Ñ6ð \Ø ˜v T¨)¨°F¸7¸)À6È$Ï-É-Ë/ÐIZÐ[ó\Ð6ô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  )rm   r   s     r'   Ú
_get_inputzTestBase._get_inputF  s   € Ø�}‰}˜W fÓ-Ð-r)   c                 ó   — t         ‚rk   r¹  )rm   Ú	test_cases     r'   Ú__call__zTestBase.__call__I  s   € Ü!Ð!r)   )Ú NNrÿ  )rr   rs   rt   r  r  r	  r  ÚpropertyrA   r  r  r$  r'  rl   r)   r'   r  r     sO   „ âEÐóòòð ñ7ó ð7ð ñ1ó ð1òXó6.ó"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 )Ú
ModuleTestr&  r˜  r¤  r½  c                 ó   — t         ‚rk   r¹  )rm   r&  r˜  r¤  s       r'   Ú_do_testzModuleTest._do_testO  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d «      | _
        | j                  €t        j                  «       | _
        y y )NrÝ  TrN   r’   r_   Ú!FIXME_no_cuda_gradgrad_comparisonFr¬   g-Cëâ6*?Úcheck_forward_onlyrG   )Úsuperr  rè  rÝ  Úshould_test_cudaÚshould_test_pickler_   r/  r¬   r0  rG   r5   Úget_default_dtype©rm   rn   rp   Ú	__class__s      €r'   r  zModuleTest.__init__S  sÕ   ø€ Ü‰Ñ˜$Ð) &Ò)Ø$Ÿj™jÐ)9¸4Ó@ˆÔØ &§
¡
¨;¸Ó =ˆÔØ"(§*¡*¨X°tÓ"<ˆÔØ$Ÿj™jÐ)9¸4Ó@ˆÔà�J‰JÐ:¸EÓBð 	Ô.àŸ™ K°Ó6ˆŒØ"(§*¡*Ð-AÀ5Ó"IˆÔØ#ŸZ™Z¨¸Ó>ˆÔØ×ÑÐ%Ü!&×!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   rG   rŽ   rA   r$  rD   r»  r   rÀ  ÚassertEqualr0  Útest_noncontigr3  ÚtempfileÚTemporaryFiler5   ÚsaveÚseekÚloadr-  )
rm   r&  r˜  r¤  ÚoutÚ	ref_inputÚ
ref_moduleÚexpected_outr³  Úmodule_copys
             r'   r'  zModuleTest.__call__a  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                 óZ  ‡ — 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J ‚|j                  |_        |S c c}w )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrk   )Únoncontiguize)r½  Úorm   s     €r'   r¾  z+ModuleTest.noncontiguize.<locals>.<genexpr>€  s   øè ø€ Ò<°1˜×+Ñ+¨A×.Ñ<ùrÐ  r3   r   )rŒ  r�  rH  rŽ  rQ  rä  rd   r5   r"  Ú
empty_likeÚselectrî  rÙ  Úis_contiguousr  )rm   ÚobjrI  r�  ÚndimrQ  rÀ  Ú	noncontigs   `       r'   rH  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×^Ñ^Ó`ˆ	Ø�‰Ó  AÒ%¨¯©Ó):¸aÒ)?Ày×G^ÑG^ÔG`Ð`Ð`Ø"(×"6Ñ"6ˆ	ÔØÐùò# 8s   –D(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Œ  r5   r•  rQ  )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_indicesFr3   ©TFrM   )r1  g-Cëâ6?©ÚatolÚrtol)rŒ  r5   r•  rQ  ÚanyrÂ  rÖ  r   r»  r!   r2  r	  Únormal_rb  r   rÆ  rÀ  rH  r   r:  )rm   r&  r˜  r¤  rþ  rÃ  rç  rä  Únc_inputÚnc_grad_outputÚcontig_iÚcontig_gr;   ÚgorA  rÔ  s                   r'   r;  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 ]   \  }}|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 ]$  \  }}|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 ]%  \  }}|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 ]%  \  }}|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rk   )rŒ  r5   r•  rº   Ú
is_complex©r½  r7   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   rR  F©rU  rV  r8  rR   r3   rT  T)r  )rÄ  c              3   óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrk   ©rS  r3  ©r½  rC  s     r'   r¾  z'ModuleTest.test_cuda.<locals>.<genexpr>ÿ  ó   è ø€ Ò>eÐQR¸q¿u¹u»w¿{¹{¿}Ñ>eùó   ‚(*c              3   óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrk   rf  rg  s     r'   r¾  z'ModuleTest.test_cuda.<locals>.<genexpr>   rh  ri  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrk   ©rS  rg  s     r'   r¾  z'ModuleTest.test_cuda.<locals>.<genexpr>  ó   è ø€ Ò8YÀQ¸¿¹¿Ñ8YùrÚ  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrk   rl  rg  s     r'   r¾  z'ModuleTest.test_cuda.<locals>.<genexpr>  rm  rÚ  )Úretain_graph)+r   r2  ÚunittestÚSkipTestr   rG   r$  r5   rc   ÚfloatrŒ  rŽ  rW  r   rŽ   rA   ÚcudarÀ  rã  r›  Úcopy_rÖ  rÂ  r»  r!   r:  r¬   rä  rb  rX  r�   rÆ  r_   r/  Ú
randn_likerî  r  ÚautogradrÔ  r—  rS  r3  r;  )rm   r&  Ú	cpu_inputrc  Ú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'   rN   zModuleTest.test_cuda¶  s8  € Ý × 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±,Ó ?ò (‘��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¹,Ó(Gò 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Ó(Kò 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Ó(;ò lÑ$�G˜WØ×)Ñ)¨'°7ÀÇÁÐVWÐejÐ)Õkðlð ×Ñ 	¨:°ÔG÷oW	H÷ W	Hñ W	Hús   ½T!U'Õ'U0)rr   rs   rt   r   r   rv   rw   r-  r  r'  rH  r;  rN   Ú__classcell__©r6  s   @r'   r+  r+  M  sR   ø„ àð" #ð "¨r¯y©yð "Àð "Èò "ó ð"ô;ò4ò6ò*#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rk   rl   )r½  rÊ  Úmap_variabless     €r'   r¾  zGInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>  s   øè ø€ ÒA°t™}¨T×2ÑAùó   ƒ)rŒ  r5   r•  Úis_floating_pointra  r  r  )r;   r˜  s    €r'   r˜  z4InputVariableMixin._get_input.<locals>.map_variables  sH   ø€ Ü˜!œUŸ\™\Ô*Ø×&Ñ&Ô(¨A¯L©L¬NØ&*�A”OØ�à”t˜A“wÓA¸qÔAÓAÐAr)   )r  r$  )rm   r¤  r˜  s     @r'   r$  zInputVariableMixin._get_input  s(   ø€ Ü×#Ñ# D¨%Ó0ˆô	Bñ ˜UÓ#Ð#r)   N)rr   rs   rt   r$  rl   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                 óz  •— 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d «      | _        |j                  dd«      | _        |j                  dd«      | _        y )Nr�  FÚcheck_inplacer_   TÚskip_doubler  rE   rF   r\   Útest_cpur3  r`   r³  rû   Úsupports_fwgrad_bwgrad)r1  r  rè  r�  rž  r_   rŸ  r  rE   rF   r   r3  r`   r³  rû   r¡  r5  s      €r'   r  zNewModuleTest.__init__$  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ÀTÓ#JˆÔ Ø#)§:¡:Ð.CÀUÓ#KˆÔ Ø&,§j¡jÐ1IÈ5Ó&QˆÕ#r)   c           	      ó  ‡‡‡— t        d„ ‰j                  «       D «       «      }t        |«      Šˆˆˆfd„}| j                  r6‰dk(  sJ ‚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rk   rl   rg  s     r'   r¾  z1NewModuleTest._check_gradients.<locals>.<genexpr>5  s   è ø€ Ò6˜Q”qÑ6ùr  c                  ó6   •— |rJ ‚‰j                  ‰| d ‰ «      S rk   )r»  )Úinputs_and_paramsrp   r˜  Ú
num_inputsr&  s     €€€r'   Úfn_to_gradcheckz7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck8  s&   ø€ ÙÐ�:Ø×%Ñ% fÐ.?ÀÀÐ.LÓMÐMr)   r3   r   )r`   Ú	fast_modeÚcheck_forward_ad)r`   r¨  Úcheck_fwd_over_rev)rŽ  r—  r,  r3  r5   rš  rý  Ú
assertTruer   r`   r³  rû   r_   r   r¡  )rm   r&  r˜  Úinput_tupleÚparamsr§  Útest_input_jacobianr¦  s    ``    @r'   Ú_check_gradientszNewModuleTest._check_gradients4  sõ   ú€ ÜÑ6 &×"3Ñ"3Ó"5Ô6Ó6ˆÜ˜Ó%ˆ
ö	Nð ×$Ò$Ø ’?Ð"�?Ü"'×"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k(  sJ ‚|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„	}t/        d„ |D «       «      rñt0        rët	        d„ |D «       «      }‰j3                  «       j5                  «         ‰|Ž   |t         j4                  j6                  d«       t         j4                  j9                  «       dkD  �r³t	        d„ |D «       «      }‰j5                  d«       t         j4                  j;                  d«      5   ‰|Ž  d d d «        |t         j4                  j6                  d«       �n@d	„ Šˆfd
„Šˆfd„Šˆfd„Št	        ˆfd„|D «       «      }‰j3                  «         ‰|Ž   |t         j6                  «       t	        ˆfd„|D «       «      }‰j=                  «         ‰|Ž   |t         j>                  «       t0        �r©| j@                  �rœt	        ˆfd„|D «       «      }‰j3                  «       j5                  «         ‰|Ž   |t         j4                  j6                  d«       t	        d„ |D «       «      }‰jC                  «         ‰|Ž   |t         j6                  «       t	        d„ |D «       «      }‰j5                  «         ‰|Ž   |t         j4                  j6                  d«       | jD                  rYt         jF                  jD                  jI                  d¬«      5   ‰|Ž   |t         j4                  j6                  d«       d d d «       t         j4                  j9                  «       dk\  rqt	        d„ |D «       «      }‰j5                  d«       t         j4                  j;                  d«      5   ‰|Ž  d d d «        |t         j4                  j6                  d«       | jJ                  sXt	        ˆfd„|D «       «      }‰j=                  «       j5                  «         ‰|Ž   |t         j4                  j>                  d«       | jL                  sXt	        ˆfd„|D «       «      }‰jO                  «       j5                  «         ‰|Ž   |t         j4                  jP                  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)Nr3   r   ÚinplaceTc                 óš   •— ‰j                  «       D ]7  }‰j                  || «       |€Œ‰j                  |j                  «       |«       Œ9 y rk   )r—  ÚassertIsInstancer:  Ú
get_device)Útensor_typeÚ	device_idr<   r˜  r&  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rk   )rŒ  r5   Ú
LongTensorrb  s     r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>�  s   è ø€ ÒD°1Œz˜!œU×-Ñ-×.ÑDùs   ‚$&c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrk   ©rs  rb  s     r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>„  s   è ø€ Ò>¨Q §¡§Ñ>ùrÚ  c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wr»  r»  rb  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 rk   )ra  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 rk   )r5   Úfloat16©rC  rÀ  s    €r'   Úto_halfz'NewModuleTest._do_test.<locals>.to_half™  s   ø€ á˜q¤%§-¡-°Ó6Ð6r)   c                 óP   •—  ‰| t         j                  t         j                  «      S rk   )r5   Úfloat32Ú	complex64rÃ  s    €r'   Ú	to_singlez)NewModuleTest._do_test.<locals>.to_single�  s   ø€ Ù˜q¤%§-¡-´·±ÓAÐAr)   c                 óP   •—  ‰| t         j                  t         j                  «      S rk   )r5   rÞ  r  rÃ  s    €r'   Ú	to_doublez)NewModuleTest._do_test.<locals>.to_double   s   ø€ Ù˜q¤%§-¡-´×1AÑ1AÓBÐBr)   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrk   rl   ©r½  r7   rÈ  s     €r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>¤  ó   øè ø€ ÒB°¡	¨!§ÑBùr™  c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrk   rl   ©r½  r7   rÊ  s     €r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>ª  rÍ  r™  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrk   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rk   )Úcpurb  s     r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>º  s   è ø€ Ò#A° A§E¡E§GÑ#AùrÚ  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrk   r»  rb  s     r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>À  s   è ø€ Ò#B° A§F¡F§HÑ#BùrÚ  F)ÚenabledrM   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wr»  r»  rb  s     r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>Î  s   è ø€ Ò'G°a¨¯©¨q¯	Ñ'Gùr½  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrk   r»  rÏ  s     €r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>Ö  s   øè ø€ Ò'QÀ©	°!«×(9Ñ(9×(;Ñ'QùrÑ  c              3   óJ   •K  — | ]  } ‰|«      j                  «       –— Œ y ­wrk   r»  )r½  r7   rÄ  s     €r'   r¾  z)NewModuleTest._do_test.<locals>.<genexpr>Ý  s   øè ø€ Ò'O¸a©°«
¯©×(9Ñ'OùrÑ  rk   ))r5   Úget_num_threadsÚset_num_threadsrŒ  rŽ  r¯  Ú__repr__rž  r,  rŽ   rA   Ú_versionr   r:  r   rb  ÚassertNotEqualr›  rX  rÔ  Úno_gradr3  ÚbackwardÚallr   rr  rs  ÚFloatTensorÚdevice_countr]  rc   ÚDoubleTensorr2  rÓ  r�  ÚbackendsÚflagsrŸ  r  ÚhalfÚ
HalfTensor)rm   r&  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_testP  sU  ý€ Ü×+Ñ+Ó-ˆÜ×Ñ˜aÔ Ü)¨%´Ô7‘e¸e¸Xˆà×Ñ˜i¨°Ô=ð 	�‰Ôà×Óô �{Ó# qÒ(Ð(Ð(Ø ‘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   Â<	Z#Ä	Z0ÆZ=Ç[
Ì[Ô'[$Ö[1Ú#Z-Ú0Z:Ú=[Û
[Û[!Û$[.Û1[;c                 ó&   — | j                  dd«      S ©NrK  Fr  r  s    r'   Ú_get_targetzNewModuleTest._get_targetã  ó   € Ø�}‰}˜X uÓ-Ð-r)   c                 ó&   — | j                  dd«      S ©NrA   Fr  r  s    r'   rA   zNewModuleTest.constructor_argsæ  ó   € à�}‰}Ð/°Ó7Ð7r)   )
rr   rs   rt   r  r¯  r-  rð  r)  rA   r‘  r’  s   @r'   rœ  rœ  #  s/   ø„ ôRò `ò8Q+òf.ð ñ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 )	ÚCriterionTestrK  c                 ój  •— 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d «      | _        | j                  €t        j                  «       | _        y y )NrN   Tr0  Fr_   r´  Úcheck_bfloat16Úcheck_complexr   rE   rF   r\   r`   rG   )r1  r  rè  r2  r0  r_   r´  rø  rù  r   rE   rF   r`   rG   r5   r4  r5  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Ó!:ˆ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rk   rl   rg  s     r'   r¾  z)CriterionTest.__call__.<locals>.<genexpr>  s   è ø€ Ò: œ1Ñ:ùr  c                 ó   •—  ‰| |«      S rk   rl   )r¤  rK  r­  r˜  s      €r'   Úapply_fnz(CriterionTest.__call__.<locals>.apply_fn  s   ø€ Ù! %¨Ó0Ð0r)   c                 ó   •—  ‰| ||«      S rk   rl   )rK  rL  rK  r­  r˜  s       €r'   rþ  z(CriterionTest.__call__.<locals>.apply_fn  s   ø€ Ù! &¨&°&Ó9Ð9r)   )r`   )r   rG   rŽ   rA   r$  rÛ  r|  rð  rD   Ú_forward_criterionr  r   r:  r0  rŽ  r—  rŒ  r   r`   r_   r   )rm   r&  r¤  rK  rA  Úref_argsrD  r­  Úinputsrþ  r˜  s             @r'   r'  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rk   rl   )r½  rI  Úconvert_dtyperº   r  s     €€€r'   r¾  zACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>*  s   øè ø€ ÒQÈ™]¨1¨e°]×CÑQùs   ƒ)rŒ  r5   r•  rî  r®   Úrequires_grad_rŽ  )rM  rº   r  r  s    ``€r'   r  z.CriterionTest.test_cuda.<locals>.convert_dtype&  sS   ú€ Ü˜#œuŸ|™|Ô,Ø—z‘z“|—‘¨U�Ó3×BÑBÀ=ÓQÐQÜ˜C¤Ô'ÜÕQÈSÔQÓQÐQà�
r)   r_  Trû  rP   g-Cëâ6:?r   rd  rþ  )r   r2  rp  rq  r   rG   r$  rð  rŽ   rA   rš  ra  r  r   rs  r5   ræ  Úbfloat16r   r:  Ú_backward_criterion)rm   r&  rº   r  rw  Ú
cpu_targetr{  r|  Ú	gpu_inputÚ
gpu_targetr�  r‚  r…  r†  r  s                 @r'   rN   zCriterionTest.test_cuda%  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_targetX  rñ  r)   c                 ó&   — | j                  dd«      S ró  r  r  s    r'   rA   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)   rk   )rr   rs   rt   r  r  Úunionr  r'  rN   rð  r)  rA   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º   r]  r  r\  )r]  Frd  )r5   r”   rÆ  r‡   r  rr  r  ru  rß  rî  r:  rÔ  r›  )r&  Úopr]  Úinp_dimsÚprecr<  rK  Úout1Úgrad_input1Úop_bfp16rL  Úgrad_input2Úout2s                r'   Ú_test_bfloat16_opsr  d  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  r5   Ú	rand_likerß  r:  rd   r—  r  rÔ  rÛ  )r&  r˜  r‘  Ú
check_sizeÚ	inferencerA  ÚgOr<   s           r'   Ú_test_module_empty_inputr   w  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 )NrW   rR   r3   rÄ  )
r1  r  rv   r   r5   ro  Úlayer_dummy_paramÚBufferr  Úlayer_dummy_buf)rm   r6  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©rr   rs   rt   r  r‘  r’  s   @r'   ÚLayerr#  ˆ  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 )NrW   rR   rÄ  r3   )r1  r  Úl1rv   r   r5   ro  Údummy_paramr&  r  Ú	dummy_buf)rm   r*  r6  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)   r(  r)  )r6  r*  s   @€r'   ÚNetr,  Ž  s   ù„ ÷	@ò 	@r)   r1  )rv   rw   Ú
Sequential)r1  Úlr5  r  r*  s       @r'   Ú_create_basic_netr4  ‡  sR   ø€ ôF”—	‘	ô Fö@Œb�i‰iô @ñ 	‹€AÙ‹€AÜ
�‰�a˜Ó€Aàˆa�ˆ7€Nr)   )r  F)Néœÿÿÿr  )Nr  rŸ  )Nr5  r  rŸ  )r  rX  )r  )rX  r  )r3   r3   Nr  )r   r  )rX  rM   rð  Fr  )rl   rŒ  NrS  )œÚabcr   r<  rp  Úcopyr   Ú	functoolsr   r   Ú	itertoolsr   Úoperatorr   r5   Ú
torch.cudaÚtorch.nnrv   Útorch.nn.functionalÚ
functionalr   r	   r"   Ú$torch.testing._internal.common_utilsr
   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   r   r   Úcollections.abcr   r=  r÷  r(   r-   r•   rc   Úmodule_testsrf   rx   r—   r¯   r·   rÅ   rÌ   rÜ   rã   ré   rý   r  r  r  r  r%  r6  r=  rD  rV  r[  rs  r€  r•  rž  r¥  r±  r¸  rÀ  rÇ  rÍ  rÔ  rá  rç  rð  rö  r   r  r  r#  r)  r6  r?  rG  rU  r[  ri  ro  ru  r|  r‚  rˆ  rš  ró  rö  r  r  r  r  r!  r&  r*  r/  r6  r:  r<  r@  rD  rM  rX  rZ  rr  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  r   r4  rl   r)   r'   ú<module>rP     sß  ðö Û Û å ß %Ý Ý ó Û Ý ß Ð Ý -÷C÷ Có Cç Fß KÝ #Ý (Û ç 'Ñ 'Ý $à×&Ñ&€Ø€	òò'ñ| 	ØØ Ø>ØÙZØØØ—l‘lô	ñ 	ØØ'ØJØØÙ:ØØØ—l‘lô
ñ 	ØØØØ—l‘lô	ñ 	ØØ#ØNØØØØ—l‘lôñ 	ØØÙ6Ø—l‘lô	ñ 	Ø#Ø+Ø]ØØà Ø—l‘lô	ðY6€òx6ò
ò$ò$ò $òò(ò&ò$ò$ò$$ò ò"$ò $ò ò"$ò $òò$ò$ò $ò $ò"$ò$$ò,$ò.$ò.$ò"$ò$$ò,$ò"$ò$$ò,$ò"$ò"$ò"$ò"$ò"ò"$ò$$ò$$ò$$ò"$ò"$ò"$ò"$ò*$ò$$ò$$ò$$ò$$ò($ò,6ò"dóN3ð BFØ"(óð4 TZØ=@óð, Z^ØRUó%IðP [aØ14ó
ð  @DØ &óó,ó 	òó ó4óòóó.ð  ]bØ*0óó ó"ðL %Ù#Ð$7ÀDÔIØ Ø$Ø*Ø$Ø:Ø6Ø.Ø0Ø8Ø4Ø4Ø Ø4ñ-Ð �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J"ñ J"ôZDH�ô DH÷N$ñ $ôE8Ð&¨
ô E8ôPv2Ð&¨ô v2órgó&?ó r)   