
    `iߡ                    0   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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/m0Z0 ej1        Z1dZ2d Z3d Z4 e5ddddd ddej6                   e5dddddd derdndej6        	  	         e5d d!d"ej6        #           e5d d$d%d&d'd"ej6        (           e5d)d*d+ ej6        ,           e5d-d.d/d0d"d"ej6        1          g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 Zldg ZmddiZn	 	 ddkZo	 	 ddmZp	 	 ddnZq	 	 ddoZr	 	 ddpZsddrZtddsZudt ZvdduZwddvZxddwZydx ZzddzZ{dd{Z|	 	 dd~Z}ddZ~ddZen eend          eseoeteuewexeye{e|e}e~eerdZe5de,f         ed<   g Zd Zg dZg dZ e
ee          D ]:\  ZZ e5e de edddded"ej6                  Ze                    e           ;eD ]4Z e5de d d d ed"ej6                  Ze                    e           5dd d fdd d fdd d fdd d fdd d fdd d fdd d fdd d fdd d fdd d fg
Zddd"iiZe5ee5f         ed<   d"d"d"d"d"dZg dZ e
ee          D ]~\  \  ZZZZ e5e de eddefdefdede                    ed                    Ze                    ei           Ze                    e           e                    e            G d de          Z G d d          Z G d de          Z G d d          Z G d dee          Z G d dee          ZddńZddƄZdǄ ZdS )    )abstractmethodN)deepcopy)reducepartial)product)mul)
_reduction)	TestCaseto_gpufreeze_rng_stateis_iterable	gradcheckgradgradcheckset_default_dtypeskipIfTorchDynamoTEST_WITH_ROCM)	TEST_CUDASM90OrLater)_get_numerical_jacobian_iter_tensors)Variable)_TensorOrTensors)CallableUnionAny)Sequenceh㈵>c                     t          | dd           }|&t          j        t          | dd           dd          }|J |S )N	reductionsizeAverageTF)emit_warning)getattr
_Reductionlegacy_get_stringmresults     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/testing/_internal/common_nn.pyget_reductionr)   !   sM    QT**F~-ga.M.MtbghhhM    c                 N    t          | dd           }||S t          | dd           S )Nweightweights)r"   r%   s     r(   
get_weightr.   )   s0    Q$''F1i&&&r*   Linear)
      ztorch::nn::LinearOptions(10, 8))   r0   c                     t          j        | |d                                                   |d                             dd                              dd          z   S )Nr      r2   r1   )torchmmtviewexpandip_s      r(   <lambda>r?   l   sG    UXa1%:%:QqTYYq"=M=M=T=TUVXY=Z=Z%Z r*   T{Gzt?)module_nameconstructor_argscpp_constructor_args
input_sizereference_fn	with_tf32tf32_precisiondefault_dtype)r0   r1   Fz+torch::nn::LinearOptions(10, 8).bias(false)no_biasc                 \    t          j        | |d                                                   S )Nr   )r6   r7   r8   r;   s      r(   r?   r?   w   s    UXa1%:%: r*   皙?)	rA   rB   rC   rD   descrE   rF   rG   rH   RReLU)r4      rN   F)rA   rD   	test_cudarH   皙?g?/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r2   r2      with_up_downrA   rB   rC   rD   rL   rO   rH   FlattenrN      r2   rS   c                 ,    t          j        | d          S Nr4   )r6   flatten)r<   r>   s     r(   r?   r?      s    5=A#6#6 r*   )rA   rD   rE   rH   CrossMapLRN2d)rS   r@   MbP?rN   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)rN   rX      r_   )rA   rB   rC   rD   check_gradgradcheck_batched_gradrH   c                      t          t          | d          } t          j        |          j        |                                  S rZ   )r   r   r6   randpermr9   double)sizetotals     r(   _rand_tensor_non_equalrg      s9    3a  E%5>%  %t,33555r*   c                 @      G  fddt           j                  }|S )Nc                       e Zd Z fdZdS ))wrap_functional.<locals>.FunctionalModulec                      |i S N )selfargsfnkwargss     r(   forwardz1wrap_functional.<locals>.FunctionalModule.forward   s    2t&v&&&r*   N)__name__
__module____qualname__rr   )rp   rq   s   r(   FunctionalModulerj      s3        	' 	' 	' 	' 	' 	' 	' 	'r*   rv   )nnModule)rp   rq   rv   s   `` r(   wrap_functionalry      sG    ' ' ' ' ' ' ' '29 ' ' ' r*   c            
           t          j        dd           t          dt           fd          dd d d fdd	t           j        
          S )Nr0   PoissonNLLLoss_no_reducec                 X    t          j        |                     |           d          S Nnoner   )Fpoisson_nll_losstype_asr<   r8   s    r(   r?   z/poissonnllloss_no_reduce_test.<locals>.<lambda>   #    a(AIIaLLFKKK r*   zaF::poisson_nll_loss(i, t.to(i.options()), F::PoissonNLLLossFuncOptions().reduction(torch::kNone))c                  ,    t          j        dd          S Nr0   r6   randrm   r*   r(   r?   z/poissonnllloss_no_reduce_test.<locals>.<lambda>   s    B++ r*   _get_input()r   c                 X    |                                                      |           z
  S rl   )expr   r<   r>   r8   s     r(   r?   z/poissonnllloss_no_reduce_test.<locals>.<lambda>   s    15577QUU1XX#5 r*   Ffullnameconstructorcpp_function_callinput_fncpp_var_maprE   picklerH   r6   randndictry   rd   r8   s   @r(   poissonnllloss_no_reduce_testr      st    BA+#KKKKM Mj++(q115555l
$ 
$ 
$ 
$r*   c                      t          t          j        dd                              d                              t          j                             t          dt           fd          dd d d	 fd
ddt          j        	  	        S )N   r0   r   BCELoss_no_reducec                 X    t          j        |                     |           d          S r}   r   binary_cross_entropyr   r   s    r(   r?   z(bceloss_no_reduce_test.<locals>.<lambda>   #    a,Q		!OOO r*   iF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().reduction(torch::kNone))c                  T    t          j        dd                              dd          S Nr   r0   y&1?v?r6   r   clamp_rm   r*   r(   r?   z(bceloss_no_reduce_test.<locals>.<lambda>   "    B++226:FF r*   r   r   c                 p    |                                  z  dz
  d| z
                                   z  z    S rZ   logr   s     r(   r?   z(bceloss_no_reduce_test.<locals>.<lambda>   0    Q[AEa!e[[]]3J%J#K r*   FgǺF?	r   r   r   r   r   rE   r   	precisionrH   )r   r6   r   gttord   r   ry   r   s   @r(   bceloss_no_reduce_testr      s    R$$''**--el;;<<A$#OOOOQ QnFF(q11KKKKl$ $ $ $r*   c            
           t          j        d                              d                              t           j                   t          dt           fd          dd d d fd	d
t           j                  S )Nrm   r   BCELoss_no_reduce_scalarc                 X    t          j        |                     |           d          S r}   r   r   s    r(   r?   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>   r   r*   r   c                  R    t          j        d                              dd          S Nrm   r   r   r   rm   r*   r(   r?   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>       B..vzBB r*   r   r   c                 p    |                                  z  dz
  d| z
                                   z  z    S rZ   r   r   s     r(   r?   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>   r   r*   Fr   )r6   r   r   r   rd   r   ry   r   s   @r(   bceloss_no_reduce_scalar_testr      s    B1  ..A+#OOOOQ QnBB(q11KKKKl
$ 
$ 
$ 
$r*   c                  z    t          t          j        ddt          j                                      d                              t          j                             t          j        dt          j                  t          dt           fd          dd d	 d
 fdddt          j        	  	        S )Nr   r0   dtyper   BCELoss_weights_no_reducec                     t          j        |                     |                               |           d          S Nr~   r,   r   r   r<   r8   r-   s    r(   r?   z0bceloss_weights_no_reduce_test.<locals>.<lambda>   <    a,Q		!4;OOA4F4FRXZ Z Z r*   zF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  T    t          j        dd                              dd          S r   r   rm   r*   r(   r?   z0bceloss_weights_no_reduce_test.<locals>.<lambda>   r   r*   r   r   c                 v    |                                  z  dz
  d| z
                                   z  z    z  S rZ   r   )r<   r=   r&   r8   r-   s      r(   r?   z0bceloss_weights_no_reduce_test.<locals>.<lambda>   s6    q15577{a!eA{{}}5L'L%MPW%W r*   Fa2U0*3?r   )	r   r6   r   rd   r   r   r   r   ry   r8   r-   s   @@r(   bceloss_weights_no_reduce_testr      s    R5<888;;A>>AA%,OOPPAj5<000G,#Z Z Z Z Z[ [x GF(qWEEWWWWWl   r*   c            
      D    t          j        d                              d                              t           j                   t          j        dt           j                  t          dt           fd          dd dd	  fd
dt           j                  S )Nrm   r   r    BCELoss_weights_no_reduce_scalarc                     t          j        |                     |                               |           d          S r   r   r   s    r(   r?   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   r   r*   zF::binary_cross_entropy(
            i, t.to(i.options()),
            F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))r   r   c                  R    t          j        d                              dd          S r   r   rm   r*   r(   r?   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   r   r*   c                 v    |                                  z  dz
  d| z
                                   z  z    z  S rZ   r   r<   r>   r8   r-   s     r(   r?   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   s5    Q[AEa!e[[]]3J%J#Kg#U r*   F)r   r   r   r   r   rE   r   rH   )r6   r   r   r   rd   r   r   ry   r   s   @@r(   %bceloss_weights_no_reduce_scalar_testr      s    B1  ..Aj5<000G3#Z Z Z Z Z[ [k )qWEEBBUUUUUl   r*   c                  D    t          t          j        dd                              d                              t          j                            t          j                     t          dt          fd          dd dd	 fd
ddt          j        	  	        S )Nr   r0   r   BCEWithLogitsLoss_legacy_enumc                 X    t          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AIIaLLQVWWW r*   F::binary_cross_entropy_with_logits(
            i, t.to(i.options()), F::BinaryCrossEntropyWithLogitsFuncOptions().reduction(torch::kNone))c                  T    t          j        dd                              dd          S r   r   rm   r*   r(   r?   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  r   r*   r   r   c                      |                                            z  dz
  d |           z
                                   z  z    S rZ   r   r<   r>   sigmoidr8   s     r(   r?   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  H    Q)9)9%9QUq77ST::~FZFZF\F\<\%\#] r*   F	r   r   r   r   r   rE   r`   r   rH   
r   r6   r   r   r   rd   rw   Sigmoidr   ry   r   r8   s   @@r(   "bce_with_logistic_legacy_enum_testr     s    R$$''**--el;;<<AjllG0#WWWWY YkFF(q11]]]]]l   r*   c                  D    t          t          j        dd                              d                              t          j                            t          j                     t          dt          fd          dd dd	 fd
ddt          j        	  	        S )Nr   r0   r   BCEWithLogitsLoss_no_reducec                 X    t          j        |                     |           d          S r}   r   r   s    r(   r?   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>  $    a8AIIaLLTZ[[[ r*   r   c                  T    t          j        dd                              dd          S r   r   rm   r*   r(   r?   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>  r   r*   r   r   c                      |                                            z  dz
  d |           z
                                   z  z    S rZ   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     s    R$$''**--el;;<<AjllG.#[[[[] ]kFF(q11]]]]]l   r*   c                  (    t          j        d                              d                              t           j                  t          j                     t          dt          fd          dd dd fd	d
d
t           j        	  	        S )Nrm   r   "BCEWithLogitsLoss_no_reduce_scalarc                 X    t          j        |                     |           d          S r}   r   r   s    r(   r?   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>-  r   r*   r   c                  R    t          j        d                              dd          S r   r   rm   r*   r(   r?   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>0  r   r*   r   r   c                      |                                            z  dz
  d |           z
                                   z  z    S rZ   r   r   s     r(   r?   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>2  r   r*   Fr   )	r6   r   r   r   rd   rw   r   r   ry   r   s   @@r(   'bce_with_logistic_no_reduce_scalar_testr   '  s    B1  ..AjllG5#[[[[] ]kBB(q11]]]]]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 )Nr0   r   KLDivLoss_with_target_no_reducec                 X    t          j        |                     |           d          S r}   r   kl_divr   r   s    r(   r?   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>>  "    ahq!))A,,&AAA r*   NF::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone))c                  P    t          j        dd                                          S r   r6   r   r   rm   r*   r(   r?   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>@      B++//11 r*   r   r   c                 Z    t          d         |                     |           d          S N	KLDivLossr~   r   loss_reference_fnsr   r   s     r(   r?   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>B  )    {+Aqyy||vNNN r*   TF	r   r   r   r   r   rE   supports_forward_adr   rH   r6   r   rd   r   ry   r   s   @r(   $kldivloss_with_target_no_reduce_testr   9  s    
2r...A2#AAAAC Cj11(q11O O O O 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 )Nr0   r   KLDivLoss_no_reducec                 X    t          j        |                     |           d          S r}   r   r   s    r(   r?   z*kldivloss_no_reduce_test.<locals>.<lambda>N  r   r*   r   c                  P    t          j        dd                                          S r   r   rm   r*   r(   r?   z*kldivloss_no_reduce_test.<locals>.<lambda>P  r   r*   r   r   c                 Z    t          d         |                     |           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  s    
2r...A&#AAAAC Cj11(q11O O O O l   r*   c                       t          j        dt           j                   t          dt	           fd          dd d d fd	d
dt           j        	  	        S )Nrm   r   KLDivLoss_no_reduce_scalarc                 X    t          j        |                     |           d          S r}   r   r   s    r(   r?   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>_  r   r*   r   c                  N    t          j        d                                          S Nrm   r   rm   r*   r(   r?   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>a      B++-- r*   r   r   c                 Z    t          d         |                     |           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  s    
2U\***A-#AAAAC Cj--(q11O O O O 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 )Nr0   r   #KLDivLoss_with_log_target_no_reducec                 Z    t          j        |                     |           dd          S Nr~   T)r   
log_targetr   r   s    r(   r?   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>o  $    ahq!))A,,&TRRR r*   _F::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone).log_target(true))c                  P    t          j        dd                                          S r   r   rm   r*   r(   r?   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>q  r   r*   r   r   c                 Z    t          d         |                     |           d          S NKLDivLoss_log_targetr~   r   r   r   s     r(   r?   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>s  +    56q!))A,,RXYYY r*   TFr   r6   r   rd   r   r   ry   r   s   @r(   (kldivloss_with_log_target_no_reduce_testr  j  s    
2r...2244A6#RRRRT T{11(q11Z Z Z Z 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 )Nr0   r   KLDivLoss_no_reduce_log_targetc                 Z    t          j        |                     |           dd          S r  r   r   s    r(   r?   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>  r  r*   r  c                  P    t          j        dd                                          S r   r   rm   r*   r(   r?   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>  r   r*   r   r   c                 Z    t          d         |                     |           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    
2r...2244A1#RRRRT T{11(q11Z Z Z Z l   r*   c                       t          j        dt           j                                                   t	          dt           fd          dd d d fd	d
dt           j        	  	        S )Nrm   r   %KLDivLoss_no_reduce_scalar_log_targetc                 Z    t          j        |                     |           dd          S r  r   r   s    r(   r?   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r  r*   r  c                  N    t          j        d                                          S r	  r   rm   r*   r(   r?   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r
  r*   r   r   c                 Z    t          d         |                     |           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    
2U\***..00A8#RRRRT T{--(q11Z Z Z Z 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 )NrN   rX   r2   r   L1Loss_no_reducec                 X    t          j        |                     |           d          S r}   r   l1_lossr   r   s    r(   r?   z'l1loss_no_reduce_test.<locals>.<lambda>  "    ai199Q<<6BBB r*   PF::l1_loss(i, t.to(i.options()), F::L1LossFuncOptions().reduction(torch::kNone))c                  .    t          j        ddd          S NrN   rX   r2   r6   r   rm   r*   r(   r?   z'l1loss_no_reduce_test.<locals>.<lambda>      Q1-- r*   r   r   c                 X    |                      |           z
                                  S rl   r   absr   s     r(   r?   z'l1loss_no_reduce_test.<locals>.<lambda>  "    A		!$4#9#9#;#; r*   TFr   r6   r   rd   r   ry   r   s   @r(   l1loss_no_reduce_testr7    s}    Aq!5<000A##BBBBD Dl--(q11;;;; l
$ 
$ 
$ 
$r*   c            
           t          j        dddt           j                   t          dt	           fd          dd d	 d
 fddd          S )NrN   rX   r2   r   L1Loss_no_reduce_complexc                 X    t          j        |                     |           d          S r}   r*  r   s    r(   r?   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  r,  r*   r-  c                  F    t          j        dddt           j                  S )NrN   rX   r2   r   )r6   r   cdoublerm   r*   r(   r?   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  s    Q1EMBBB r*   r   r   c                 X    |                      |           z
                                  S rl   r3  r   s     r(   r?   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  r5  r*   TF)r   r   r   r   r   rE   r   r   )r6   r   r<  r   ry   r   s   @r(   l1loss_no_reduce_complex_testr>    sx    Aq!5=111A+#BBBBD DlBB(q11;;;; 	 	 	 	r*   c                       t          j        dt           j                   t          dt	           fd          dd d d fd	d
dt           j        	  	        S )Nrm   r   L1Loss_no_reduce_scalarc                 X    t          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	  r0  rm   r*   r(   r?   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>      R r*   r   r   c                 X    |                      |           z
                                  S rl   r3  r   s     r(   r?   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>  r5  r*   TFr   r6  r   s   @r(   l1loss_no_reduce_scalar_testrE    sy    Bel+++A*#BBBBD Dl(((q11;;;; 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 )NrW   r   MSELoss_no_reducec                 X    t          j        |                     |           d          S r}   r   mse_lossr   r<   targets    r(   r?   z(mseloss_no_reduce_test.<locals>.<lambda>  $    ajFNN1$5$5HHH r*   WF::mse_loss(i, target.to(i.options()), F::MSELossFuncOptions().reduction(torch::kNone))r   rK  c                 4    | z
                       d          S NrN   powr<   r>   rL  s     r(   r?   z(mseloss_no_reduce_test.<locals>.<lambda>      AJ#3#3A#6#6 r*   TF	r   r   r   rD   r   rE   r   r   rH   r6  rD   rL  s    @r(   mseloss_no_reduce_testrW    s{    J[*9EL99F$#HHHHJ Js(F;;6666 l
$ 
$ 
$ 
$r*   c                      d} t          j        | t           j                  t          dt	          fd          d| ddfdd	d
t           j        	  	        S )Nrm   r   MSELoss_no_reduce_scalarc                 X    t          j        |                     |           d          S r}   rI  rK  s    r(   r?   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>  rM  r*   rN  r   rK  c                 4    | z
                       d          S rP  rQ  rS  s     r(   r?   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>  rT  r*   TFrU  r6  rV  s    @r(   mseloss_no_reduce_scalar_testr\    s{    J[5<888F+#HHHHJ Js(F;;6666 l
$ 
$ 
$ 
$r*   c            
      V    t          t          j        d                                                              d                                                                                    ddi t          dt           fd          dd d	d
 fddt          j	                  S )Nr   r0   r   r~   NLLLoss_no_reducec                     t          j        |                     |                                           d                   S Nr   r   r   nll_lossr   longr<   rq   r8   s    r(   r?   z(nllloss_no_reduce_test.<locals>.<lambda>  3    ajAIIaLL$5$5$7$76+CVWWW r*   pF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().reduction(torch::kNone))c                  P    t          j        dd                                          S Nr   r0   r   rm   r*   r(   r?   z(nllloss_no_reduce_test.<locals>.<lambda>  r   r*   r   r   c                 v    t          d         |                     |                                           fi S NNLLLossr   r   rc  r<   r>   rq   r8   s     r(   r?   z(nllloss_no_reduce_test.<locals>.<lambda>  8    y)!QYYq\\->->-@-@KKFKK r*   Fr   
r   r6   emptyuniform_r   floorrc  r   ry   rd   rq   r8   s   @@r(   nllloss_no_reduce_testrt    s    R))++//3399;;@@BBCCA6"F$#WWWWWY Yg11(q11L L L L Ll$ $ $ $r*   c            
      X    t          t          j        d                                                              d                                                                                    ddd t          dt           fd          dd	 d
d fddt          j	                  S )Nr   r0   rN   r~   ignore_indexr   NLLLoss_no_reduce_ignore_indexc           	          t          j        |                     |                                           t	          d                   t          d                             S Nrw  r   rv  r   rb  r   rc  intstrrd  s    r(   r?   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  U    ajAIIaLL$5$5$7$7c&Q_J`FaFa+.vk/B+C+CE E E r*   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(2).reduction(torch::kNone))c                  P    t          j        dd                                          S rh  r   rm   r*   r(   r?   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  r   r*   r   r   c                 v    t          d         |                     |                                           fi S rj  rl  rm  s     r(   r?   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  rn  r*   Fr   ro  rs  s   @@r(   #nllloss_no_reduce_ignore_index_testr    s    R))++//3399;;@@BBCCA:;&)Q)QF1#E E E E EF Fw11(q11L L L L Ll$ $ $ $r*   c            
          t          t          j        d                                                              d                                                                                    t          j        d          fd t          dt           fd          dd dd	 fd
dt          j
                  S )Nr   r0   c                 4                         |           ddS r   r   r<   r,   s    r(   rq   z.nllloss_no_reduce_weights_test.<locals>.kwargs       ..++&AAAr*   NLLLoss_no_reduce_weightsc                     t          j        |                     |                                           fi  |           S rl   ra  rd  s    r(   r?   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  9    ajAIIaLL$5$5$7$7EE66!99EE r*   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone))c                  v    t          j        dd                              d                                          S Nr   r0   {Gz?r6   r   addr   rm   r*   r(   r?   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  ,    B++//5599;; r*   r   r<   r8   r,   c                     t          d         |                     |                                           fi  |           S rj  rl  rm  s     r(   r?   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  @    y)!QYYq\\->->-@-@NNFF1IINN r*   Fr   r   r6   rp  rq  r   rr  rc  r   r   ry   rd   rq   r8   r,   s   @@@r(   nllloss_no_reduce_weights_testr  
  s    R))++//3399;;@@BBCCAZ^^FB B B B B ,#EEEEEG G_ <;(qFCCO O O O Ol$ $ $ $r*   c            
          t          t          j        d                                                              d                                                                                    t          j        d          fd t          dt           fd          dd dd	 fd
dt          j
                  S )Nr   r0   c                 6                         |           dddS )Nr~   rN   r,   r   rw  r  r  s    r(   rq   z;nllloss_no_reduce_weights_ignore_index_test.<locals>.kwargs$  s&     ..++& !# # 	#r*   &NLLLoss_no_reduce_weights_ignore_indexc                     t          j        |                     |                                           fi  | j                  S rl   )r   rb  r   rc  datard  s    r(   r?   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>+  s;    ajAIIaLL$5$5$7$7JJ66!&>>JJ r*   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone).ignore_index(2))c                  v    t          j        dd                              d                                          S r  r  rm   r*   r(   r?   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>/  r  r*   r   r  c                     t          d         |                     |                                           fi  |           S rj  rl  rm  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399;;@@BBCCAZ^^F# # # # # 9#JJJJJL Lo <;(qFCCO O O O Ol$ $ $ $r*   c            
      
    t          t          j        d                                                              d                                                                                    t          j        d          fd t          dt           fd          dt          j        ddt          j
                                      d                                          d	d
 fddt          j
                  S )Nr   r0   c                 6                         |           dddS )Nr~   r5   r  r  r  s    r(   rq   z?nllloss_no_reduce_weights_ignore_index_neg_test.<locals>.kwargs;  s&     ..++& "$ $ 	$r*   *NLLLoss_no_reduce_weights_ignore_index_negc                     t          j        |                     |                                           fi  |           S rl   ra  rd  s    r(   r?   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>B  r  r*   zF::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                     t          d         |                     |                                           fi  |           S rj  rl  rm  s     r(   r?   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>H  r  r*   F)r   r   r   inputr   rE   r   rH   )r   r6   rp  rq  r   rr  rc  r   r   ry   rd   r  r   r  s   @@@r(   /nllloss_no_reduce_weights_ignore_index_neg_testr  7  s   R))++//3399;;@@BBCCAZ^^F$ $ $ $ $ =#EEEEEG Gp jRu|44488>>BBDD(qFCCO O O O Ol$ $ $ $r*   c            
      6    t          t          j        ddd                              d                                                                                    ddi t          dt           fd          dd	 d
d fddt          j                  S )NrN   rS   rX   r   r~   NLLLoss2d_no_reducec                     t          j        |                     |                                           d                   S r`  ra  rd  s    r(   r?   z*nllloss2d_no_reduce_test.<locals>.<lambda>T  re  r*   rf  c                  T    t          j        dddd                                          S NrN   rX   rS   r   rm   r*   r(   r?   z*nllloss2d_no_reduce_test.<locals>.<lambda>W  "    Aq!Q//3355 r*   r   r   c                 v    t          d         |                     |                                           fi S N	NLLLossNdrl  rm  s     r(   r?   z*nllloss2d_no_reduce_test.<locals>.<lambda>Y  8    {+Aqyy||/@/@/B/BMMfMM r*   Fr   	r   r6   r   r   rr  rc  r   ry   rd   rs  s   @@r(   nllloss2d_no_reduce_testr  N  s    Aq!$$((++113388::;;A6"F&#WWWWWY Yg55(q11N N N N Nl$ $ $ $r*   c            
      8    t          t          j        ddd                              d                                                                                    ddd t          dt           fd          d	d
 dd fddt          j                  S )NrN   rS   rX   r4   r~   rv   NLLLoss2d_no_reduce_ignore_indexc           	          t          j        |                     |                                           t	          d                   t          d                             S rz  r{  rd  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                  T    t          j        dddd                                          S r  r   rm   r*   r(   r?   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>i  r  r*   r   r   c                 v    t          d         |                     |                                           fi S r  rl  rm  s     r(   r?   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>k  r  r*   Fr   r  rs  s   @@r(   %nllloss2d_no_reduce_ignore_index_testr  _  s    Aq!$$((++113388::;;A:;&)Q)QF3#E E E E EF Fw55(q11N N N N Nl$ $ $ $r*   c            
      d    t          t          j        ddd                              d                                                                                    t          j        d          fd t          dt           fd          dd d	d
 fddt          j                  S )NrN   rS   rX   c                 4                         |           ddS r   r  r  s    r(   rq   z0nllloss2d_no_reduce_weights_test.<locals>.kwargsu  r  r*   NLLLoss2d_no_reduce_weightsc                     t          j        |                     |                                           fi  |           S rl   ra  rd  s    r(   r?   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>{  r  r*   r  c                  T    t          j        dddd                                          S r  r   rm   r*   r(   r?   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>  r  r*   r   r  c                     t          d         |                     |                                           fi  |           S r  rl  rm  s     r(   r?   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>  @    {+Aqyy||/@/@/B/BPPffQiiPP r*   Fr   r  r  s   @@@r(    nllloss2d_no_reduce_weights_testr  q  s    Aq!$$((++113388::;;AZ]]FB B B B B .#EEEEEG G_ 65(qFCCQ Q Q Q Ql$ $ $ $r*   c            
      :    t          t          j        ddddd                              d                                                                                    ddi t          dt           fd          dd	 d
d fddt          j                  S )NrN   rS   rX   r   r~   NLLLossNd_no_reducec                     t          j        |                     |                                           d                   S r`  ra  rd  s    r(   r?   z*nlllossNd_no_reduce_test.<locals>.<lambda>  re  r*   rf  c                  X    t          j        dddddd                                          S r  r   rm   r*   r(   r?   z*nlllossNd_no_reduce_test.<locals>.<lambda>  &    Aq!Q15599;; r*   r   r   c                 v    t          d         |                     |                                           fi S r  rl  rm  s     r(   r?   z*nlllossNd_no_reduce_test.<locals>.<lambda>  r  r*   Fr   r  rs  s   @@r(   nlllossNd_no_reduce_testr    s    Aq!Q**..q117799>>@@AAA6"F&#WWWWWY Yg;;(q11N N N N Nl$ $ $ $r*   c            
      <    t          t          j        ddddd                              d                                                                                    ddd t          dt           fd          d	d
 dd fddt          j                  S )NrN   rS   rX   r4   r~   rv   NLLLossNd_no_reduce_ignore_indexc           	          t          j        |                     |                                           t	          d                   t          d                             S rz  r{  rd  s    r(   r?   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r~  r*   r  c                  X    t          j        dddddd                                          S r  r   rm   r*   r(   r?   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r*   r   r   c                 v    t          d         |                     |                                           fi S r  rl  rm  s     r(   r?   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r*   Fr   r  rs  s   @@r(   %nlllossNd_no_reduce_ignore_index_testr    s    Aq!Q**..q117799>>@@AAA:;&)Q)QF3#E E E E EF Fw;;(q11N N N N Nl$ $ $ $r*   c            
      h    t          t          j        ddddd                              d                                                                                    t          j        d          fd t          dt           fd          dd d	d
 fddt          j                  S )NrN   rS   rX   c                 4                         |           ddS r   r  r  s    r(   rq   z0nlllossNd_no_reduce_weights_test.<locals>.kwargs  r  r*   NLLLossNd_no_reduce_weightsc                     t          j        |                     |                                           fi  |           S rl   ra  rd  s    r(   r?   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r*   r  c                  X    t          j        dddddd                                          S r  r   rm   r*   r(   r?   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r*   r   r  c                     t          d         |                     |                                           fi  |           S r  rl  rm  s     r(   r?   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r*   Fr   r  r  s   @@@r(    nlllossNd_no_reduce_weights_testr    s    Aq!Q**..q117799>>@@AAAZ]]FB B B B B .#EEEEEG G_ <;(qFCCQ Q Q Q Q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 )NrN   rX   r2   r   SmoothL1Loss_no_reducec                 X    t          j        |                     |           d          S r}   r   smooth_l1_lossr   r   s    r(   r?   z-smoothl1loss_no_reduce_test.<locals>.<lambda>  #    a&q!))A,,&III r*   jF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone))c                  .    t          j        ddd          S r/  r0  rm   r*   r(   r?   z-smoothl1loss_no_reduce_test.<locals>.<lambda>  r1  r*   r   r   c                 Z    t          d         |                     |           d          S NSmoothL1Lossr~   r   r   r   s     r(   r?   z-smoothl1loss_no_reduce_test.<locals>.<lambda>  )    ~.q!))A,,&QQQ r*   TFr   r6  r   s   @r(   smoothl1loss_no_reduce_testr    s    Aq!5<000A)#IIIIK K[--(q11R R R R l$ $ $ $r*   c                       t          j        dt           j                   t          dt	           fd          dd d d fd	d
dt           j        	  	        S )Nrm   r   SmoothL1Loss_no_reduce_scalarc                 X    t          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	  r0  rm   r*   r(   r?   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  rC  r*   r   r   c                 Z    t          d         |                     |           d          S r  r   r   s     r(   r?   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  r  r*   TFr   r6  r   s   @r(   "smoothl1loss_no_reduce_scalar_testr    s    Bel+++A0#IIIIK K[(((q11R R R R 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 )NrN   rX   r2   r   SmoothL1Loss_betac                 Z    t          j        |                     |           dd          S )Nr~         ?r   betar  r   s    r(   r?   z(smoothl1loss_beta_test.<locals>.<lambda>  s%    a&q!))A,,&sSSS r*   zoF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0.5)c                  .    t          j        ddd          S r/  r0  rm   r*   r(   r?   z(smoothl1loss_beta_test.<locals>.<lambda>  r1  r*   r   r   c                 \    t          d         |                     |           dd          S )Nr  r~   r  r  r   r   s     r(   r?   z(smoothl1loss_beta_test.<locals>.<lambda>  s,    ~.q!))A,,&WZ[[[ r*   TFr   r6  r   s   @r(   smoothl1loss_beta_testr    s    Aq!5<000A$#SSSSU U`--(q11\ \ \ \ 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 )NrN   rX   r2   r   SmoothL1Loss_zero_betac                 Z    t          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QQ r*   zmF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0)c                  .    t          j        ddd          S r/  r0  rm   r*   r(   r?   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  r1  r*   r   r   c                 \    t          d         |                     |           dd          S )Nr  r~   r   r  r   r   s     r(   r?   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  s,    ~.q!))A,,&WXYYY r*   TFr   r6  r   s   @r(   smoothl1loss_zero_beta_testr    s    Aq!5<000A)#QQQQS S^--(q11Z Z Z Z l$ $ $ $r*   c                       t          j        ddd           t          dt           fd          dd d d	 fd
ddt           j        	  	        S )NrN   rX   r2   HuberLoss_deltac                 Z    t          j        |                     |           dd          S )Nr~   r  r   delta)r   
huber_lossr   r   s    r(   r?   z&huberloss_delta_test.<locals>.<lambda>	  s$    al1aiillfCPPP r*   znF::huber_loss(
            i, t.to(i.options()), F::HuberLossFuncOptions().reduction(torch::kNone).delta(0.5))c                  .    t          j        ddd          S r/  r0  rm   r*   r(   r?   z&huberloss_delta_test.<locals>.<lambda>  r1  r*   r   r   c                 \    t          d         |                     |           dd          S )N	HuberLossr~   r  r  r   r   s     r(   r?   z&huberloss_delta_test.<locals>.<lambda>  s,    {+Aqyy||vUXYYY r*   TFr   r   r   s   @r(   huberloss_delta_testr    s    Aq!A"#PPPPR Rc--(q11Z Z Z Z l$ $ $ $r*   c                       t          j        d                                           t          dt	           fd          dd d d fdd	d
d
	  	        S )Nrm   !MultiLabelMarginLoss_0d_no_reducec                 |    t          j        |                     |                                           d          S r}   r   multilabel_margin_lossr   rc  r   s    r(   r?   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  0    a.q!))A,,2C2C2E2EQWXX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	  r0  rm   r*   r(   r?   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  rC  r*   r   r   c                     t          d         | j                            |                                           d          S NMultiLabelMarginLossr~   r   r   r  r   rc  r   s     r(   r?   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  ;    56q!&..:K:K:P:P:R:R^deee r*   TF)	r   r   r   r   r   rE   check_sum_reductionr`   r   )r6   zerosrc  r   ry   r   s   @r(   &multilabelmarginloss_0d_no_reduce_testr    s    BA4#XXXXZ Zt(((q11f f f f    r*   c                  (    t          t          j        d                              d                                                                                     t          dt           fd          dd d d fdd	d
d
t          j        
  
        S )Nr0   !MultiLabelMarginLoss_1d_no_reducec                 |    t          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   r0  rm   r*   r(   r?   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>.  rC  r*   r   r   c                     t          d         | 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   rE   r  r`   r   rH   r  r   s   @r(   &multilabelmarginloss_1d_no_reduce_testr  &  s    B##B''--//446677A4#XXXXZ Zt(((q11f f f f l$ $ $ $r*   c                  x    t          t          j        t          j        dd                              d                              d                                                                          d                     t          dt           fd          d	d
 d d fddddt          j
        
  
        S )NrS   r0   g         r5   minMultiLabelMarginLoss_index_negc                 |    t          j        |                     |                                           d          S r}   r  r   s    r(   r?   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>=  r  r*   r  c                  ,    t          j        dd          S NrS   r0   r0  rm   r*   r(   r?   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>@      Q++ r*   r   r   c                     t          d         | j                            |                                           d          S r  r  r   s     r(   r?   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>B  r  r*   TFr  )r   r6   clampr   r  r   rr  rc  r   ry   rd   r   s   @r(   #multilabelmarginloss_index_neg_testr$  8  s    UZ2..22377;;B??EEGGLLNNTVWWWXXA1#XXXXZ Zt++(q11f f f f l$ $ $ $r*   c                  *    t          t          j        dd                              d                                                                                     t          dt           fd          dd d d fd	d
ddt          j        
  
        S )NrS   r0   MultiLabelMarginLoss_no_reducec                 |    t          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   r0  rm   r*   r(   r?   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>R  r!  r*   r   r   c                     t          d         | 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  s    Ar""&&r**00227799::A1#XXXXZ Zt++(q11f f f f l$ $ $ $r*   c                  d    t          t          j        d                              d                              t          j                                      d                              d                     t          dt           fd          dd d	 d
 fdddt          j        	  	        S )Nr0   r   rN   r4   HingeEmbeddingLoss_no_reducec                 X    t          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   r0  rm   r*   r(   r?   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>d  rC  r*   r   r   c                 Z    t          d         |                     |           d          S )NHingeEmbeddingLossr~   r   r   r   s     r(   r?   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>f  s+    34Q		!PVWWW r*   TF	r   r   r   r   r   rE   r  r   rH   
r   r6   r   r   r   rd   mul_subr   ry   r   s   @r(   !hingeembeddingloss_no_reduce_testr7  \  s    R##A&&))%,77<<Q??CCAFFGGA/#OOOOQ Qa(((q11X X X X l$ $ $ $r*   c                  d    t          t          j        d                              d                              t          j                                      d                              d                     t          dt           fd          dd d	 d
 fdddt          j        	  	        S )Nr0   r   rN   r4   #HingeEmbeddingLoss_margin_no_reducec                 Z    t          j        |                     |           dd          S Nr  r~   marginr   r.  r   s    r(   r?   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>r  s&    a,Q		!STZ[[[ r*   zF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().margin(0.5).reduction(torch::kNone))c                  *    t          j        d          S r   r0  rm   r*   r(   r?   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>u  rC  r*   r   r   c                 \    t          d         |                     |           dd          S )Nr2  r  r~   r<  r   r   s     r(   r?   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>w  s-    34Q		!S\bccc r*   TFr3  r4  r   s   @r(   (hingeembeddingloss_margin_no_reduce_testr@  m  s    R##A&&))%,77<<Q??CCAFFGGA6#[[[[] ]m(((q11d d d d 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 )NrS   r   SoftMarginLoss_no_reducec                 X    t          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 )NrS   r0  rm   r*   r(   r?   z/softmarginloss_no_reduce_test.<locals>.<lambda>  s    Q** r*   r   r   c                 Z    t          d         |                     |           d          S )NSoftMarginLossr~   r   r   r   s     r(   r?   z/softmarginloss_no_reduce_test.<locals>.<lambda>  s*    /0AIIaLLFSSS r*   TFr   r6  r   s   @r(   softmarginloss_no_reduce_testrH  ~  s    Aq---A+#KKKKM M]**(q11T T T T l$ $ $ $r*   c                       t          j        dd                              d                                           t	          dt           fd          dd d d	 fd
ddt           j        	  	        S )NrS   r0   rN   "MultiLabelSoftMarginLoss_no_reducec                 X    t          j        |                     |           d          S r}   r   multilabel_soft_margin_lossr   r   s    r(   r?   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  s#    a3Aqyy||vVVV r*   zF::multilabel_soft_margin_loss(
            i, t.to(i.options()), F::MultilabelSoftMarginLossFuncOptions().reduction(torch::kNone))c                  ,    t          j        dd          S r   r0  rm   r*   r(   r?   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  r!  r*   r   r   c                    |                                                                  z  dz
  |                                                                   z  z                        d          |                     d          z  S Nr4   dimr   r   sumre   r   s     r(   r?   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  sp    199;;??$$$A1"1C1C1E1E'EEFKKPQKRRUVU[U[\]U^U^^ r*   Fr   r6   r   r   rr  r   ry   rd   r   s   @r(   'multilabelsoftmarginloss_no_reduce_testrV    s    
1ba  &&((A5#VVVVX Xg++(q11_ _ _ _l$ $ $ $r*   c                      t          j        dd                              d                                           t          j        d          t	          dt           fd          dd d d	 fd
dddt           j        
  
        S )NrS   r0   rN   *MultiLabelSoftMarginLoss_weights_no_reducec                     t          j        |                     |                               |           d          S r   rL  r   s    r(   r?   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  s<    a3Aqyy||;B??1;M;MY_a a a r*   zF::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   r0  rm   r*   r(   r?   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  r!  r*   r   r   c                    |                                                                  z  dz
  |                                                                   z  z    z                      d          |                     d          z  S rP  rS  r   s     r(   r?   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  su    199;;??$$$A1"1C1C1E1E'EEFPUUZ[U\\_`_e_efg_h_hh r*   TFr  rU  r   s   @@r(   /multilabelsoftmarginloss_weights_no_reduce_testr\    s    
1ba  &&((AjnnG=#a a a a ab bq ,+(qWEEi i i i i l$ $ $ $r*   c                      t          j        d                              d                                                                           t          dt           fd          dd d d fd	d
ddt           j        
  
        S )NrS   r1   MultiMarginLoss_no_reducec                 |    t          j        |                     |                                           d          S r}   r   multi_margin_lossr   rc  r   s    r(   r?   z0multimarginloss_no_reduce_test.<locals>.<lambda>  /    a)!QYYq\\->->-@-@FSS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   r0  rm   r*   r(   r?   z0multimarginloss_no_reduce_test.<locals>.<lambda>  r!  r*   r   r   c                     t          d         | j                            |                                           d          S NMultiMarginLossr~   r   r  r   s     r(   r?   z0multimarginloss_no_reduce_test.<locals>.<lambda>  ;    01!QV^^A5F5F5K5K5M5MY_``` r*   TFr  r6   r   r   rr  rc  r   ry   rd   r   s   @r(   multimarginloss_no_reduce_testrj    s    
1!""$$))++A,#SSSSU Uo++(q11a a a a l$ $ $ $r*   c                      t          j        d                              d                                                                           t          dt           fd          dd d d fd	d
ddt           j        
  
        S )Nr4   r1   MultiMarginLoss_1d_no_reducec                 |    t          j        |                     |                                           d          S r}   r`  r   s    r(   r?   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rb  r*   rc  c                  *    t          j        d          S r   r0  rm   r*   r(   r?   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rC  r*   r   r   c                     t          d         | j                            |                                           d          S rf  r  r   s     r(   r?   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rh  r*   TFr  ri  r   s   @r(   !multimarginloss_1d_no_reduce_testrp    s    
1!""$$))++A/#SSSSU Uo(((q11a a a a l$ $ $ $r*   c                      t          j        d                              d                                                                           t          dt           fd          dd d d fd	d
ddt           j        
  
        S )Nrm   r1   ,multimarginloss_1d_input_0d_target_no_reducec                 |    t          j        |                     |                                           d          S r}   r`  r   s    r(   r?   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rb  r*   rc  c                  *    t          j        d          S r   r0  rm   r*   r(   r?   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rC  r*   r   r   c                     t          d         | j                            |                                           d          S rf  r  r   s     r(   r?   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rh  r*   TFr  ri  r   s   @r(   1multimarginloss_1d_input_0d_target_no_reduce_testrv    s    
21##%%**,,A?#SSSSU Uo(((q11a a a a l$ $ $ $r*   c                      t          j        d                              d                                                                           t          dt           fd          dd d d fd	d
ddt           j        
  
        S )NrS   r1   MultiMarginLoss_p_no_reducec                 ~    t          j        |                     |                                           dd          S )NrN   r~   r=   r   r`  r   s    r(   r?   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s2    a)!QYYq\\->->-@-@AQWXXX r*   zF::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().p(2).reduction(torch::kNone))c                  T    t          j        dd                              dd          S )NrS   r0   r  gGz?)r6   r   r   rm   r*   r(   r?   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s"    Q++224BB r*   r   r   c                     t          d         | j                            |                                           dd          S )Nrg  rN   r~   rz  r  r   s     r(   r?   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s>    01!QV^^A5F5F5K5K5M5MQR^deee r*   TFr  ri  r   s   @r(    multimarginloss_p_no_reduce_testr}    s    
1!""$$))++A.#XXXXZ ZtBB(q11f f f f l$ $ $ $r*   c                      t          j        d                              d                                                                           t          dt           fd          dd d d fd	d
ddt           j        
  
        S )NrS   r1    MultiMarginLoss_margin_no_reducec                 ~    t          j        |                     |                                           dd          S r;  r`  r   s    r(   r?   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  s2    a)!QYYq\\->->-@-@X^___ r*   zF::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   r0  rm   r*   r(   r?   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  r!  r*   r   r   c                     t          d         | j                            |                                           dd          S )Nrg  r  r~   r<  r  r   s     r(   r?   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  sF    01!QV^^A5F5F5K5K5M5M9<P P P r*   TFr  ri  r   s   @r(   %multimarginloss_margin_no_reduce_testr    s    
1!""$$))++A3#____a aT ,+(q11P P P P !l$ $ $ $r*   c                  V    t          j        d                              d                                                                           t          j        dt           j                  t          dt           fd          dd d	 d
 fddddt           j        
  
        S )NrS   r1   r0   r   !MultiMarginLoss_weights_no_reducec                     t          j        |                     |                                                               |           d          S r   r`  r   s    r(   r?   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  sE    a)!QYYq\\->->-@-@YZI[I[4:< < < r*   zF::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   r0  rm   r*   r(   r?   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  r!  r*   r   r   c                     t          d         | j                            |                                           d          S )Nrg  r~   r   r  r   s     r(   r?   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  sF    01!QV^^A5F5F5K5K5M5M9@FT T T r*   TFr  )r6   r   r   rr  rc  rd   r   ry   r   s   @@r(   &multimarginloss_weights_no_reduce_testr    s    
1!""$$))++Aj5<000G4#< < < < <= =h ,+(qWEET T T T T !l!$ $ $ $r*   c                     d } ||           }t          |t          j                  r|gn|}t                      5   ||                     d          cddd           S # 1 swxY w Y   dS )zReference 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 | D             S |                     d          S )Nc                 8    g | ]}|                     d           S r   	unsqueeze.0r8   s     r(   
<listcomp>zDsingle_batch_reference_fn.<locals>.unsqueeze_inp.<locals>.<listcomp>/  "    000qAKKNN000r*   r   
isinstancelisttupler  inps    r(   unsqueeze_inpz0single_batch_reference_fn.<locals>.unsqueeze_inp-  >    cD%=)) 	100C0000}}Qr*   r   N)r  r6   Tensorr   squeeze)r  
parametersmoduler  single_batch_inputs        r(   single_batch_reference_fnr  '  s         
 'u--1;<NPUP\1]1]u,--cu			 6 6v)*221556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A!!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          j4                  te          ddd	ddd
ddtf          j4        	  	        te          ddddddddtf          j4        	  	        te          ddddddddtf          j4        	  	        te          ddddddddtf          j4        	  	        te          ddddddddtf          j4        	  	        te          dddddddd          te          dd ddddtf          j4                   te          d!d" d#d$dddtf          j4        %          te          d&d' d(ddddtf          j4        %          te          d)d* d+ddddtf          j4        %          te          d,d- d.ddddtf          j4        %          te          d/d0 d1ddddtf          j4        %          te          d2d3 d4dd5ddtf          j4        6          te          d2d7d8d9dd:ddtf          j4        	  	        te          d2d;d<d9dd=ddtf          j4        	  	        te          d>d? d@ddAddtf          j4        6          te          dBdCdDdEddddtf          j4        F	  	        te          dBdGdHdIddJdddtf          j4        K
  
        te          dBdLdMdIddNdddtf          j4        K
  
        te          dBdOdPdQdd=dddtf          j4        K
  
        te          dBdRdSdTdd:dddUtf          j4        K
  
        te          dBdCdDdVddddW          te          dXdY dZd[ddddUtf          j4        \	  	        te          d]d^ dZd[dddUtf          j4        _          te          d`da dbdcdddtf          j4        %          te          ddde dfdcdddtf          j4        %          te          dgdh didcdddtf          j4        %          te          djdkdlddmdddtf          j4        n	  	        te          djdodpdqdd=dddtf          j4        K
  
        te          djdrdsdqdd:dddtf          j4        K
  
        te          dtdu dvdwddddtf          j4        \	  	        te          dxdy dzd{ddtf          j4                   te          d|d} d~d{ddtf          j4                   te          dd dd{ddtf          j4                   te          dd dd{ddtf          j4                   te          dd ddddtf          j4                   te          ddddddddtf          j4        F	  	        te          dddddd:dddtf          j4        K
  
        te          dddddddddtf          j4        K
  
        te          dddddd
dddtf          j4        K
  
        te          dddddddddtf          j4        K
  
        te          dddddddd          te          dd ddddddtf          j4        \	  	        te          dd ddddtf          j4                   te          dd ddddtf          j4                   te          dd dddddtf          j4        %          te          dd dddddtf          j4        %          te          dd dddddtf          j4        %          te          dddddddtf          j4                  te          dddddd=ddtf          j4        	  	        te          ddddtf          j4                  te          ddddtj          dtf          j4                  te          dddd dd          te          ddddń dtf          j4        tm          dƦ          Ǧ          te          ddddȄ ddtf          j4        tm          dƦ          ʦ          te          dddd̈́ ddtf          j4        Ϧ          te          ddddЄ ddtf          j4        Ϧ          te          ddddӄ ddtf          j4        Ϧ          te          ddddׄ ddtf          j4        Ϧ          te          ddڄ dd܄ dtf          j4        ݦ          te          dd߄ dd dtf          j4        ݦ          te          dd dd dtf          j4        ݦ          te          dd dd dd          te          d dd ddd          te          ddddtf          j4                  te          ddddtf          j4                  te          to          tp          j9        dd d          ddddtf          j4                  te          to          tp          j9        dd d          dddd           te          to          tp          j9        dd d          ddddtf          j4                  te          to          tp          j9        d dd          ddddtf          j4                  te          to          tp          j9        dd dd          d	dd
dtf          j4                  te          to          tp          j9        dd dd          ddddtf          j4                  te          to          tp          j9        d ddd          ddddtf          j4                  te          to          tp          j9        dd dd          d	ddd           te          to          tp          j9        dd dd          ddddtf          j4                  te          to          tp          j9        d ddd          ddddtf          j4                  te          to          tp          j9        dd d          ddddtf          j4                  te          to          tp          j9        dd d          ddddtf          j4                  te          to          tp          j9        dd d          ddddtf          j4                  te          to          tp          j9        d dd          d dd!dtf          j4                  te          to          tp          j9        dd d          dd"d#d           te          to          tp          j9        dd d$d          d%dd&dtf          j4                  te          to          tp          j9        dd d$d          d%d"d'd           te          to          tp          j9        d(d d$d          d)d*d+dtf          j4                  te          to          tp          j9        d dd$d          d,dd-dtf          j4                  te          to          tp          j9        d d.d$d          d/dd0dtf          j4                  te          to          tp          j9        d d1d$d          d2dd3dtf          j4                  te          to          tp          j9        d(d d$d          d4dd5dtf          j4                  te          to          tp          j9        d d1d$d          d6dd7dtf          j4                  te          to          tp          j9        dd d8d          d9dd:dtf          j4                  te          to          tp          j9        dd d8d          d9d"d;d           te          to          tp          j9        d(d d8d          d<d*d=dtf          j4                  te          to          tp          j9        d dd8d          d>dd?dtf          j4                  te          to          tp          j9        d d.d8d          d@ddAdtf          j4                  te          to          tp          j9        d d1d8d          dBddCdtf          j4                  te          to          tp          j9        d(d d8d          dDddEdtf          j4                  te          to          tp          j9        d d1d8d          dFddGdtf          j4                  te          to          tp          j9        dd d          dHdIdJdtf          j4                  te          to          tp          j9        dd d          dHdKdLd           te          to          tp          j9        dMd d          dNdOdPdtf          j4                  te          to          tp          j9        d dd          dQdIdRdtf          j4                  te          to          tp          j9        dd dSd          dTdIdUdtf          j4                  te          to          tp          j9        dd dSd          dTdKdVd           te          to          tp          j9        dWd dSd          dXdYdZdtf          j4                  te          to          tp          j9        d d[dSd          d\dd]d^dtf          j4        _          te          to          tp          j9        dWd dSd          d`dYdadtf          j4                  te          to          tp          j9        d d[dSd          dbdOdcd^dtf          j4        _          te          to          tp          j:        dde          dfdgdhdtf          j4                  te          to          tp          j:        ditf          j;        j          dkdgdlddtf          j4        m          te          to          tp          j:        die          dndodpdtf          j4                  te          to          tp          j:        die          dndqdrdtf          j4                  te          to          tp          j:        ditf          j;        j          dkdqdsddtf          j4        m          te          to          tp          j:        dte          dudvdwddtf          j4        x          te          to          tp          j:        dye          dzdvd{ddtf          j4        x          te          to          tp          j:        dde          dfd|d}dd~          te          to          tp          j<        dde          ddgddtf          j4                  te          to          tp          j<        die          ddoddtf          j4                  te          to          tp          j<        die          ddqddtf          j4                  te          to          tp          j<        dte          ddvddtf          j4                  te          to          tp          j<        dye          ddvddtf          j4                  te          to          tp          j<        dte          dd|dd           te          dd ddddtf          j4                  te          dd ddddtf          j4                  te          dd dddtj          dtf          j4                  te          dd ddddtf          j4                  te          dd ddddtf          j4                  te          dd ddtj          ddtf          j4                  te          dddd|ddtf          j4                  te          dd tf          j4                  te          dd dtf          j4                  te          dd dtf          j4                  te          dddd dtf          j4                  te          dd tj          dtf          j4                  te          dddddddddtf          j4        
  
        te          dddddtp          j=        fdddddt|          rdndtf          j4        	  	        te          dddÐdĄ ddddtf          j4        Ŧ	  	        te          dddddtp          j=        fdƐdǄ ddddtf          j4        Ŧ	  	        te          dȐddddddtp          j?        fdɐdʄ dddt|          rdndtf          j4        Ŧ	  	        te          d͐dΐdϐdЄ dф dddtf          j4        Ҧ	  	        te          dӐdԐdՐdtj          dtf          j4        צ          te          dؐdِdtg          j@        ddg          fdtj          dtf          j4        צ          te          dg dܢddfdސdddddd	  	        } t          g dg d          D ]\  }}dD ]}|dyk    r|dk    rt          t          di|diz                       }ddD                    t          t          |                    z   dz   }dd|z  z   }dt          d |D                       z   }| G                    te          d| dddydyd|didid|f	d| d| d| d||d| dddtf          j4        
  
                   g d}i ddtf          j4        dddd1idddtf          j4        ddddtf          j4        dddtf          j4        dddtf          j4        iddtf          j4        id dtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        iddtf          j4        id	dtf          j4        idtf          j4        idtf          j4        idtf          j4        idtf          j4        idtf          j4        idtf          j4        idtf          j4        id
}	|D ]]}
te          |
dtj          dd          }|	H                    |
i           }|I                    |           | G                    |           ^| S (  NConv1d)r2   rS   rX   z!torch::nn::Conv1dOptions(4, 5, 3))rN   r2   r0   Tr@   )rA   rB   rC   rD   cudnnrF   rG   rH   )r2   rS   rX   rN   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)stride)	rA   rB   rC   rD   r  rL   rF   rG   rH   )r2   rS   rX   r4   r4   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)pad1r  )r2   rS   rS   r4   rN   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)pad2)r2   r2   rX   r4   r4   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r4   r2   r4   	pad1size1)r2   r2   rS   r4   rN   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)	pad2size1)r   r2   r0   
zero_batch)rA   rB   rC   rD   r  rL   rF   rG   Conv1d_dilatedc                  2    t          j        dddd          S )Nr2   rS   rX   rN   kernel_sizedilationrw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>      	!QA J J J r*   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r   r   rC   rD   rF   rG   rH   Conv1d_groupsc                  2    t          j        dddd          S )Nr2   r_   rX   rN   r  groupsr  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>      	!QAa H H H r*   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rN   r2   r_   )r   r   rC   rD   r  rF   rG   rH   Conv1d_pad_validc                  2    t          j        dddd          S )Nr2   rS   rX   validpaddingr  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!Q7 C C C r*   z8torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kValid)Conv1d_pad_samec                  2    t          j        dddd          S )Nr2   rS   rX   samer  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>      	!Q6 B B B r*   z7torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame)Conv1d_pad_same2c                  2    t          j        dddd          S )Nr2   rS   r  r  r  rm   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                  4    t          j        ddddd          S )Nr2   rS   r  rN   r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!Q6A N N N r*   zCtorch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame).dilation(2)ConvTranspose1dc                  6    t          j        dddddd          S )NrX   r2   rX   r4   r4   )r  r  r  output_paddingrw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s      21aQt]^os t t t r*   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r4   rX      )r   r   rC   r  rD   rF   rG   rH   )rX   r2   rX   rN   r4   r4   r4   Fztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r4   rX   r_   rI   )	rX   r2   rX   rN   r4   r4   r4   TrN   ztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(true).dilation(2)dilatedConvTranspose1d_groupsc            	      8    t          j        ddddddd          S )	Nr2   r_   rX   r  r4   r  rN   )r  r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s#     21a4QRcgpq r r r r*   ztorch::nn::ConvTranspose1dOptions(4, 6, 3)
                                    .stride(3).padding(1).output_padding(1).groups(2))rN   r2   r  Conv2d)rX   r2   rX   rN   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rN   rX   r  rS   )	rA   rB   rC   rD   r  check_with_long_tensorrF   rG   rH   )rX   r2   rX   rX   rN   rN   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r^   strided)
rA   rB   rC   rD   r  rL   r  rF   rG   rH   )rX   r2   r  r  r4   r4   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r  )rX   rN   r  r  r  r  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rN   rX   r1   r1   )rX   r2   r  r4   r   r4   r4   Fztorch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rN   rX   r_   rS   gQ?)r   rX   r  rS   )rA   rB   rC   rD   r  rL   r  rF   Conv2d_groupsc                  2    t          j        dddd          S Nr2   r_   r  rN   r  rw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>g      	!Qq A A A r*   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rN   r2   r_   rS   )	r   r   rC   rD   r  r  rF   rG   rH   Conv2d_groups_thnnc                  2    t          j        dddd          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>r  r  r*   )r   r   rC   rD   r  rF   rG   rH   Conv2d_pad_validc                  2    t          j        dddd          S )NrN   r2   rX   r2   r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>|  s    	!Q H H H r*   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rN   rN   r_   rS   Conv2d_pad_samec                  2    t          j        dddd          S )NrN   r2   r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!Q G G G r*   z<torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame)Conv2d_pad_same_dilatedc                  4    t          j        ddddd          S )NrN   r2   r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!QQR S S S r*   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ConvTranspose2d)rX   r2   rX   r  r4   r  ztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r4   rX   r  r_   )	rA   rB   rC   r  rD   r  rF   rG   rH   )	rX   r2   rX   rN   rX   r4   r  r4   Fr  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r4   rX   r_   r  )rX   r2   rX   r  r4   r  r4   Fztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3}).padding(1).output_padding({1, 1}).groups(1).bias(false)ConvTranspose2d_groupsc                  2    t          j        dddd          S )NrN   r2   r  r  )rw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s     21a J J J r*   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r4   rN   r2   rS   Conv2d_depthwisec                  2    t          j        dddd          S )Nr2   r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rN   r2   r_   r_    Conv2d_depthwise_with_multiplierc                  2    t          j        dddd          S )Nr2   r1   r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   z0torch::nn::Conv2dOptions(4, 8, {3, 3}).groups(4)Conv2d_depthwise_stridedc                  4    t          j        ddddd          S )Nr2   r  r  )r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!Qva P P P r*   z?torch::nn::Conv2dOptions(4, 4, {3, 3}).stride({2, 2}).groups(4)Conv2d_depthwise_paddedc                  4    t          j        ddddd          S )Nr2   r  r  )r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!Qq Q Q Q r*   z@torch::nn::Conv2dOptions(4, 4, {3, 3}).padding({1, 1}).groups(4)Conv2d_depthwise_dilatedc                  4    t          j        ddddd          S )Nr2   r  )r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    	!QPQ R R R r*   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rN   r2   rS   rS   Conv3d)rN   rX   rN   rX   rN   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r4   rN   r2   rS   r2   rK   )rN   rX   rN   rX   r2   r4   r   r4   r4   Fztorch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r4   rN   rX   r2   rS   )rN   rX   )r4   r4   r4   r4   r   r4   r4   F1x1x1_no_biasF)rX   r2   rN   rN   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rN   rX   rS   rS   rS   )rX   r2   rN   rN   r4   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)stride_padding)rX   r2   r  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rX   rX   r2   rS   )rA   rB   rC   rD   r  r  rL   rF   Conv3d_groupsc                  2    t          j        dddd          S )NrN   r2   rX   r  rw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>D  r  r*   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)Conv3d_dilatedc                  2    t          j        dddd          S )NrX   r2   rN   r  r  rm   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                  4    t          j        ddddd          S )NrX   r2   rN   )r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>X  s    	!QARS T T T r*   z7torch::nn::Conv3dOptions(3, 4, 2).dilation(2).stride(2)Conv3d_pad_validc                  2    t          j        dddd          S )NrX   r2   r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>a  s    	!Q	7 K K K r*   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rN   rX   r_   rS   r2   Conv3d_pad_samec                  2    t          j        dddd          S )NrX   r2   r  r  r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>k  s    	!Q	6 J J J r*   z?torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame)Conv3d_pad_same_dilatedc                  4    t          j        ddddd          S )NrX   r2   r  r  rN   r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>u  s    	!Q	6TU V V V r*   zKtorch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame).dilation(2)ConvTranspose3dz2torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2}))rA   rB   rC   r  rD   rF   rG   rH   )	rN   rX   r  r4   r   r   r4   T)rN   rN   rN   ztorch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	rA   rB   rC   r  rD   rL   rF   rG   rH   ReplicationPad3d))r4   rN   rX   rX   rN   r4   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rN   rX   rN   rN   rN   )rA   rB   rC   rD   rH   )rX   rN   rN   rN   no_batch_dim)rA   rB   rC   rD   rE   rL   rH   c            	      L    t          j        dddddt           j        d          S )NrN   rX   T)r   requires_grad)r6   r   
complex128rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s#    UZ1aAU=M]abbb r*   complex)rA   rB   rC   r   	skip_halfrL   	Embedding)r2   rX   z!torch::nn::EmbeddingOptions(4, 3)c                  j    t          j        ddt           j                                      d          S NrN   rX   r   r2   r6   rp  rc  random_rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  '    U[AUZ@@@HHKK r*   z0https://github.com/pytorch/pytorch/issues/117971)rA   rB   rC   r   r`   rH   	decoratorc                      t          j        ddt           j                                      d                              dd          S Nr4   i   r   r2   r  r6   rp  rc  r  r:   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  9    U[CuzBBBJJ1MMTTUVX[\\ r*   discontiguous)rA   rB   rC   r   r`   rL   rH   r  EmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  j    t          j        ddt           j                                      d          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   mean)rA   rB   rC   r   r`   rL   rH   c                      t          j        ddt           j                                      d                              dd          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   )r2   rX   N       @FrT  ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum)c                  j    t          j        ddt           j                                      d          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   rT  )r2   rX   Nr  Fmaxztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax)c                  j    t          j        ddt           j                                      d          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r  r*   r  EmbeddingBag_mean_padding_idxc                  0    t          j        ddd          S )Nr2   rX   r4   padding_idxrw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    1! D D D r*   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                  v    t          j        t          j        d          t          j        d          g          S NrX   r6   stackrc   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  )    U[%.*;*;U^A=N=N)OPP r*   )r   r   rC   r   r`   rH   EmbeddingBag_sum_padding_idxc            	      8    t          j        ddd dddd          S )Nr2   rX   r  FrT  r4   r#  r%  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>       1dBuZ[ \ \ \ r*   ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum).padding_idx(1)c                  v    t          j        t          j        d          t          j        d          g          S r'  r(  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r*  r*   EmbeddingBag_max_padding_idxc            	      8    t          j        ddd dddd          S )Nr2   rX   r  Fr  r4   r#  r%  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r-  r*   ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax).padding_idx(1)c                  v    t          j        t          j        d          t          j        d          g          S r'  r(  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  r*  r*   EmbeddingBag_sparsec                  F    t          j        dddt          j                  S )Nr2   rX   T)sparser   )rw   r  r6   rd   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>   s    1T V V V r*   ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  R    t          j        d                              dd          S NrN   r4   r6   rc   repeatrm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>       U^A..55a;; r*   )r   r   rC   r   r`   has_sparse_gradientsc                  F    t          j        ddt          j        d          S )Nr2   rX   T)r   r4  )rw   r  r6   rd   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>  s    Qd S S S r*   z_torch::nn::EmbeddingOptions(4, 3).sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  R    t          j        d                              dd          S r6  r7  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>
  r9  r*   Embedding_sparse)r   rC   r   r   r`   r:  PixelShuffler  z!torch::nn::PixelShuffleOptions(3))r4   	   r2   r2   PixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r4   r4      rA  rA  nearest)re   scale_factormodezF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r4   rN   r2   interpolate_nearest_1d)r   cpp_options_argsrD   r   r   rH   )r   rN   r2   interpolate_nearest_1d_zero_dim)r   rF  rD   r   r   )rA  )r4   rN   rX   interpolate_nearest_tuple_1dg      @zF::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)interpolate_nearest_scale_1dlinear)re   rC  rD  align_cornersa  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_1d)r2   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_cornersrN   zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4      r4   r4   %interpolate_nearest_2d_launch_configszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rN   r2   r2   interpolate_nearest_2d)rA     zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rN   rX   r2   interpolate_nearest_tuple_2dzF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)interpolate_nearest_scale_2d)r   rN   r2   r2   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)r2   r_   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r4   rN   rN   rX   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_cornerszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rN   r2   r2   r2   interpolate_nearest_3d)r   rN   r2   r2   r2   interpolate_nearest_3d_zero_dim)rA  rU  rU  zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rN   rX   r2   r2   interpolate_nearest_tuple_3dzF::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)r2   r_   r_   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r4   rN   rN   rX   rX   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   rF  rD   r   r   r   rH   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_cornersr5   rQ  zF::SoftmaxFuncOptions(-1))rN   rR  softmax_lastdimr4   )rR  r   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)softmax_lastdim_dtype)r   rF  rD   r   r   rO   rH   zF::SoftmaxFuncOptions(1))rN   rR  rN   rN   softmax_spatial_special)rN   rN   r2   r2   softmax_spatialsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rW   softmax_functional_dim0)r   rF  rD   r   rO   r   rH   rX   zF::SoftmaxFuncOptions(3)softmax_functional_dim3rm   softmax_functional_scalar)r   rF  rD   r   rO   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                  0    t          j        dddd          S )Nr  r  r   r   rw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>q	  s    	&&&& I I r*   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rN   r2   rX   rX   )r   r   rC   rD   r`   rO   rH   Foldc                  2    t          j        ddddd          S Nr  r  r  r  rw   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>z	       O O r*   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rN   rU  r2   Fold_no_batch_dim_inputc                  2    t          j        ddddd          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  r  r*   )rU  r2   )r   r   rC   rD   r`   refrO   rH   Unfold_int_inputc                  0    t          j        dddd          S )NrN   r4   r   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  s    	!Q1 5 5 r*   z<torch::nn::UnfoldOptions(2).dilation(1).padding(0).stride(1)Fold_int_inputc                  2    t          j        ddddd          S NrX   rN   r4   r   r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	      1aA 6 6 r*   z=torch::nn::FoldOptions(3, 2).dilation(1).padding(0).stride(1)Fold_no_batch_dim_int_inputc                  2    t          j        ddddd          S r  r  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  r  r*   )r   r   rC   rD   r  r`   rO   rH   rM   rP   rR   with_up_down_scalarrU   PairwiseDistancec                  V    t          j        dd          t          j        dd          fS Nr0   r1   r0  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  #    ek"a00%+b!2D2DE r*   )rA   r   rH   c                  V    t          j        dd          t          j        dd          fS )Nr0   r4   r1   r0  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  r  r*   broadcast_lhs)rA   r   rL   rH   c                  V    t          j        dd          t          j        dd          fS )Nr0   r1   r4   r0  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  s#    ek"a00%+a2C2CD r*   broadcast_rhs)g      ?r   TzDtorch::nn::PairwiseDistanceOptions().p(1.5).eps(1e-05).keepdim(true)c                  V    t          j        dd          t          j        dd          fS r  r0  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  r  r*   with_non_default_args)rA   rB   rC   r   rL   rH   c                  R    t          j        d          t          j        d          fS )Nr1   r0  rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  s    ek!nnek!nn= r*   )rA   r   rE   rL   rH   TransformerEncoderLayer)r2   rN   rU          ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)r  relu_activationrQ   )
rA   rB   rC   rD   rL   rF   rG   ra   r`   rH   r2   r1   r  ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)gelu_activationg{Gz?)	rA   rB   rC   rD   r`   rL   rF   rG   rH   TransformerDecoderLayer)r2   rN   r1   r  ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)c                  Z    t          j        ddd          t          j        ddd          fS NrX   r2   rN   r   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>	  '    ejAq115:aA3F3FG r*   )	rA   rB   rC   r   r`   rL   rF   rG   rH   ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)c                  Z    t          j        ddd          t          j        ddd          fS r  r   rm   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   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda>
  s7    ejAq115:aA3F3F
STVWHXHXY r*   multilayer_codergQ?r/   )rX   rS   ztorch::nn::LinearOptions(3, 5)c                  *    t          j        d          S r'  r   rm   r*   r(   r?   z&get_new_module_tests.<locals>.<lambda> 
  s    UZ]] r*   c                     t          j        |                     dd          |d                                                                       d          |d         z   S )Nr4   r5   r   )r6   r7   r9   r8   r;   s      r(   r?   z&get_new_module_tests.<locals>.<lambda>!
  sE    !&&B--1)J)J)O)OPR)S)SVWXYVZ)Z r*   )	rA   rB   rC   r   rE   rL   rF   rG   rH   rV   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))r5   )rX   r2   rS   )rA   rC   rB   rD   rE   rL   rH   	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})	LayerNorm)8   r  r  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r2   r  r  r  3d_no_affine_large_feature)	rA   rB   rC   rD   r  
check_evalgradcheck_fast_mode
check_halfrL   )reflectcircular	replicater  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZerosr  {z, }r  r  c              3       K   | ]	}|d z   V  
dS r4   Nrm   r  r=   s     r(   	<genexpr>z'get_new_module_tests.<locals>.<genexpr>V
  s&      (@(@1Q(@(@(@(@(@(@r*   Convdztorch::nn::Convz~dOptions(2, 3, 3)
                                            .stride(2)
                                            .padding(z)
                                            .dilation(1)
                                            .groups(1)
                                            .bias(true)
                                            .padding_mode()_stride2_pad2)
rA   rB   rC   rD   output_sizer  rL   rF   rG   rH   )ELU
HardshrinkHardsigmoidHardtanh	Hardswish	LeakyReLU
LogSigmoidPReLUReLUReLU6rM   SELUCELUGELUGLUr   SiLUMishSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	Thresholdr  )r  )rB   rH   r  rB   r  )r`   	check_jitrH   r  )rO   rH   r  rH   r  r  r  r  r  r  r  r  r  r  r  )r  r   r  r  r  r  r  )rA   rD   rE   rL   test_cpp_api_parity)Jr   r   r   r   r   r   r   r   r   r  r  r  r   r&  r7  r>  rE  rW  r\  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r*  r7  r@  rH  rV  r\  rj  rp  rv  r}  r  r  r   r6   rd   r  r   ry   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_paddingrD   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1K 	-..K 	!""K 	())K 	122K 	,--K 	344K 	K  	&''!K" 	%&&#K$ 	  %K& 	&'''K( 	  )K* 	,--+K, 	'((-K. 	455/K0 	8991K2 	!""3K4 	)**5K6 	.//7K8 	!""9K: 	)**;K< 	.//=K> 	$%%?K@ 	+,,AKB 	  CKD 	$%%EKF 	GKH 	/00IKJ 	/00KKL 	,--MKN 	,--OKP 	*++QKR 	122SKT 	&''UKV 	011WKX 	899YKZ 	'(([K\ 	*++]K^ 	:;;_K` 	)**aKb 	.//cKd 	/00e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J!P! ,	
 	
 	
}KN 	$HH!N  ,		
 		
 		
OKb 	'CC![! ,		
 		
 		
cKv 	&BB!Z! ,		
 		
 		
wKJ 	'BB!Z! ,		
 		
 		
KK^ 	.NN!f! ,		
 		
 		
_Kr 	&tt!t  ,		
 		
 		
sKF 	)9"e  ,	
 	
 	
GK^ 	);"p  ,	
 	
 	
_Kv 	-r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A!S##' ,
	
 
	
 
	
Y	Kn	 	)AA!S##' ,		
 		
 		
o	KB
 	'HH!`# ,		
 		
 		
C
KV
 	&GG!_#,		
 		
 		
W
Kj
 	.SS!k#,		
 		
 		
k
K~
 	)9"Y##',	
 	
 	

KV 	)K"9 $#',!	
 	
 	
WKz 	)C"o##',	
 	
 	
{KT 	-JJ!\##',
	
 
	
 
	
UKj 	'AA!S# ,	
 	
 	
kK| 	7AA!S# ,	
 	
 	
}KN 	/PP!b# ,	
 	
 	
OK` 	.QQ!c# ,	
 	
 	
aKr 	/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H!N&#' ,
	
 
	
 
	
SKh 	%JJ!P&,	
 	
 	
iKz 	-TT!Z&,	
 	
 	
{KL 	'KK!c&,		
 		
 		
MK` 	&JJ!b&,		
 		
 		
aKt 	.V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b	
 	
 	
UKd 	##!DKK ,'(Z[[	
 	
 	
eKv 	##!D\\  ,'(Z[[		
 		
 		
wKJ 	&#!GKK ,	
 	
 	
KK\ 	&#!G\\  ,	
 	
 	
]Kn 	&;"yKK ,		
 		
 		
oKB 	&;"yKK ,		
 		
 		
CKV 	4DD!VPP ,	
 	
 	
WKf 	3\\"HPP ,	
 	
 	
gKx 	3\\"HPP ,	
 	
 	
yKJ 	*VV"f;; !%	
 	
 	
KK\ 	SS "C;;' !%	
 	
 	
]Kl 	&!!D#,	
 	
 	
mKz 	(!!F%,	
 	
 	
{KH 	'BTXabbbv -,	
 	
 	
IKZ 	'BTXabbbv 6	
 	
 	
[Kj 	'FQU\efffv 3,	
 	
 	
kK| 	'DrXabbbu 3,	
 	
 	
}KN 	'BTX`puvvv9
 !,,	
 	
 	
OKf 	'EPT[csxyyy9
 !2,	
 	
 	
gK~ 	'DrX`puvvv9
 !2,	
 	
 	
KV 	'BTX`puvvv9
 !5
	
 
	
 
	
WKl 	'BTX`ptuuu8
 !:,	
 	
 	
mKD 	'DrX`ptuuu8
 !@,	
 	
 	
EK\ 	'ADW`aaa: &<,
	
 
	
 
	
]Kr 	'BTXabbb: $-,
	
 
	
 
	
sKH 	'HSW^ghhh: $3,
	
 
	
 
	
IK^ 	'DrXabbb: $3,
	
 
	
 
	
_Kt 	'BTXabbb: $6		
 		
 		
uKH 	'BTXbrwxxx9
 $.,	
 	
 	
IK` 	'BTXbrwxxx9
 $7
	
 
	
 
	
aKv 	'FQU-7uN N N9
 $4,	
 	
 	
wKP 	'Dr-7uN N N9
 $4,	
 	
 	
QKj 	'Dx-7uN N N9
 $A,	
 	
 	
kKD 	'Dx-7uN N N9
 $A,	
 	
 	
EK^ 	'FQU\fvz{{{8
 $B,	
 	
 	
_Kv 	'Dx-7tM M M8
 $O,	
 	
 	
wKP 	'BTXaqvwww9
 $-,	
 	
 	
QKh 	'BTXaqvwww9
 $6
	
 
	
 
	
iK~ 	'FQU-6eM M M9
 $3,	
 	
 	
KX  	'DrXaqvwww9
 $3,	
 	
 	
Y Kp  	'Dx-6eM M M9
 $@,	
 	
 	
q KJ! 	'Dx-6eM M M9
 $@,	
 	
 	
K!Kd! 	'FQU\euyzzz8
 $A,	
 	
 	
e!K|! 	'Dx-6dL L L8
 $N,	
 	
 	
}!KV" 	'BTXabbb: '-,
	
 
	
 
	
W"Kl" 	'BTXabbb: '6		
 		
 		
m"K@# 	'LW[bklll: '3,
	
 
	
 
	
A#KV# 	'DrXabbb: '3,
	
 
	
 
	
W#Kl# 	'BTXcsxyyy9
 '/,	
 	
 	
m#KD$ 	'BTXcsxyyy9
 '8
	
 
	
 
	
E$KZ$ 	'I59[`b b b9
 '5,	
 	
 	
[$Kt$ 	'DrXcsxyyy9
 '5,	
 	
 	
u$KP% 	'ITX-8N N N8
 'C,	
 	
 	
Q%Kj% 	'DrXcswxxx8
 'C,	
 	
 	
k%KF& 	'	r:::8&,	
 	
 	
G&KV& 	'	qNNNN,,	
 	
 	
W&Kh& 	'	q9997%.,	
 	
 	
i&Kx& 	'	q9997#&,	
 	
 	
y&KH' 	'	qNNNN#,,	
 	
 	
I'KZ' 	'	q9997#.,	
 	
 	
['Kl' 	'	q99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I!s# ,	
 	
 	
m)K~) 	OO!y! ,	
 	
 	
)KP* 	.OO!y ),		
 		
 		
Q*Kd* 	'55!_# ,	
 	
 	
e*Kv* 	%66!`! ,	
 	
 	
w*KH+ 	266!`) ,		
 		
 		
I+K\+ 	'!R&,	
 	
 	
]+Kn+ 	*EE,	
 	
 	
o+Kx+ 	*EE ,		
 	
 	
y+KD, 	*DD ,		
 	
 	
E,KP, 	*/!gEE(,	
 	
 	
Q,K`, 	*==2,	
 	
 	
a,Kn, 	1,"5 !"  % ,	
 	
 	
o,KP- 	1AsAF3"A ! "#.844D,	
 	
 	
Q-Kl- 	1+"5 HG ",	
 	
 	
m-KF. 	1AsAF3"A HG ",	
 	
 	
G.Kb. 	%Aq!S!&9"A ZY ##.844D,!	
 	
 	
c.KF/ 	 #!A**ZZ ,
	
 
	
 
	
G/K\/ 	!!X% 2,	
 	
 	
]/Kn/ 	#!J %*aV"4"45 2,	
 	
 	
o/K@0 	#*llD%8!p& $-
	
 
	
 
	
A0K\0 +.999YYY+[ +[ # #&&  	 	AAvv,)33 E!QUOO,,G		#c7*;*; < <<sBK$(*J 5(@(@(@(@(@#@#@@K## +q&'Aq'1a|%T*QQ *Q *Q6A*Q *Q <L*Q *Q *Q  * +(777"#'"',!     	>' ' '#:UU\JJ:((3: 	%eV[Vbcc: 	ETYT`aa	: 	uu|DD: 	.: 	%,/: 	.: 	5: 	_el3: 	ou|4: 	5: 	%,/:  	/5<0!:" 	/5<0#:$ 	%,/%:& 	%,/':( !%,/#U\2$el3&5$el3 %,/&55: : :%8 "A 
6 
6#-2 % 
  
  
 7::;PRTUU
##J/// 45555 r*   r  c                 l   |rt          j        |          || z
  z  }n||                                | z
  z  }|dk    r|                                S |dk    r|                                S |dk    rB|                                dk    r*|                                |                    d          z  S |S )Nr  rT  	batchmeanr   )r6   r   r   r  rT  rR  re   )r  rL  r   r  r'   s        r(   kldivloss_referencer  
  s     16""fun56::<<%/0F{{}}	e		zz||	k	!	!fjjlla&7&7zz||fkk!nn,,Mr*   c                    |                                  dk    sJ |                     d          }|                     d          }|f|                                 dd          z   }t          j        |                              |           }|'t          j        |                              |           }d}	t          d |D              D ]r}
||
         }||k    rdn||                                         }t          |
          }|	                    d|           | t          |                    |z  ||
<   |	|z  }	s|dk    r|                                |	z  S |dk    r|                                S |S )	NrX   r   r4   rN   c                 ,    g | ]}t          |          S rm   )r  )r  re   s     r(   r  z'nlllossNd_reference.<locals>.<listcomp>
  s    :::t:::r*   r  r  rT  )rR  re   r6   r  r   onesr   itemr  insertr  rT  )r  rL  r,   rw  r   NCout_sizeoutputtotal_weighttupt_nxnorminput_indexs                 r(   nlllossNd_referencer  
  sn   99;;!

1A

1Atejjll122&&H[""**511F~A&&u--L:::::;  c{!T))rrvd|/@/@/B/B3ii1d###U;//0047sFzz||l**	e		zz||Mr*   r  c                    |                                  dk    sJ t          j        | d          } |                     d          }|'t          j        |                              |           } |j        d|gd | j        dd          D             R  }|dk    r|dk    sJ |d|z
  z  ||z  z   }| |z  |z                      d           }|dk    r|	                                S |dk    r|                                S |S )	NrN   r4   c              3      K   | ]}d V  dS r  rm   r  r>   s     r(   r  z;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>
  s"       < <q < < < < < <r*   r  r_  rQ  r  rT  )
rR  r6   r  re   r   r   r9   shaperT  r  )r  rL  r,   r   label_smoothingr  r  s          r(   (cross_entropy_loss_prob_target_referencer  
  s   99;;!eQ''E

1A~A&&u--V[A= < <EKO < < <===F#%%%%A/0?Q3FFv~&+++222FF{{}}	e		zz||Mr*   c                 h   t          j        | d          }t          j        |||||          }|dk    r|S d|cxk     rdk    sn J t          j        | d          } |                     d          }|)|  |j        d|gd | j        dd          D             R  z  } t          j        | d           }	||k    }
|	                    |
d           |dk    r|ut          j        |	          |	                    d|
                    |
                                                                                                                    z  }nWt          j        |	
                    |
                                                    }n|d	k    rt          j        |	          }n|	}d|z
  |z  |||z  z  z   S )
Nr4   rv  r  r_  c              3      K   | ]}d V  dS r  rm   r  s     r(   r  z>cross_entropy_loss_indices_target_reference.<locals>.<genexpr>
  s"      +G+G!A+G+G+G+G+G+Gr*   rN   r  r   rT  )r6   r  r   rb  re   r9   r  rT  masked_fill_gathermasked_selectlogical_notr[   r  )r  rL  r,   rw  r   r  log_softmax_inputnlllossr  smooth_lossignore_maskrets               r(   +cross_entropy_loss_indices_target_referencer  
  s   )%33j!  G #''''C''''''eQ''E

1AAqH+G+Gu{122+G+G+GHHHH9UA&&&KL(K[#...F )K((6==F<P<PQ\QhQhQjQj<k<k<s<s<u<u+v+v+z+z+|+||CC*[66{7N7N7P7PQQRRCC	e		i$$7*SOa4G-HHHr*   c                 t    | j         |j         k    rt          | ||||          S t          | |||||          S )N)r,   r   r  )r,   r   rw  r  )r  r  r  )r  rL  r,   rw  r   r  s         r(   cross_entropy_loss_referencer     s^    {fl""7+- - - 	- ;6&I%
 
 
 	
r*   c                   	 d 		fdt          | |          D             }t          | \  }}|                     |          }|dk    rt          |          t          |          z  S |dk    rt          |          S |S )Nc                 J    ||k    rdS |dn||         }| |          |z  }||fS )Nr  r4   rm   )r  rL  r,   rw  r
  r'   s         r(   nll_loss_helperz*nllloss_reference.<locals>.nll_loss_helper  s=    \!!6Nqqv-$&~r*   c                 2    g | ]\  }} ||          S rm   rm   )r  r<   r8   rw  r#  r,   s      r(   r  z%nllloss_reference.<locals>.<listcomp>  s=     : : :"a */!QEE : : :r*   r  rT  )r  
new_tensorrT  )
r  rL  r,   rw  r   losses_and_weightslossesr-   losses_tensorr#  s
     ``     @r(   nllloss_referencer)    s      : : : : : :&)%&8&8: : :-.OFG$$V,,MF=!!CLL00	e		=!!!r*   r_  c                 F   | |z
                                   }||k                        |          }||k                         |          }|dk    r|}n||d|z  z
  z  |dz  |dz  z  |z  z   }|dk    r|                                S |dk    r|                                S |S )Nr   r  rN   r  rT  )r4  r   r  rT  )r  rL  r   r  abs_diffge_beta_masklt_beta_maskr  s           r(   smoothl1loss_referencer.  +  s    ##%%H$--h77LtO,,X66LqyyC$J!67,:LPX\]P]:^ae:eeF{{}}	e		zz||Mr*   c                     | |z
                                   }||k    }||k     }||z  |d|z  z
  z  |dz  |dz  z  z   }|dk    r|                                S |dk    r|                                S |S )Nr  rN   r  rT  )r4  r  rT  )r  rL  r   r  r+  ge_delta_masklt_delta_maskr  s           r(   huberloss_referencer2  ;  s    ##%%H&M%MU"hu&<=PS@SW_cdWd@eeFF{{}}	e		zz||Mr*   c           	          g }|D ]}|dk     r n|                     |            d}|D ]K}t          dt          |                     D ]+}||vr%|t          dd| |         z
  | |         z             z  },L|S )Nr   r4   )r  r  lenr  )r  rL  targetstarget_indexrT  r<   s         r(   _multilabelmarginloss_referencer7  G  s    G % %!E|$$$$
C B Bq#e**%% 	B 	BAs1a%"55a@AAA	B Jr*   c                    |                                  }|                                  dk     r|                                 dk     sJ |                                  dk    r|                     d          n'|                     d                              d          } |                                 dk    r|                    d          n'|                    d                              d          }|                     d          }|                     d          }|                     |                                          }t          d|          D ]!}t          | |         ||                   ||<   "|dk    r|                                |z  S |dk    r|                                |z  S |dk     r|	                                |z  S ||z  S NrN   r4   r   r  rT  )
rR  r  re   newzero_r  r7  r  rT  r  )r  rL  r   	input_dimnrR  r  r<   s           r(   multilabelmarginloss_referencer>  W  s   		Iyy{{Qzz||a&+iikkQ&6&6"""EOOA<N<N<X<XYZ<[<[(.

(9(9!!!$$$v?O?OPQ?R?R?\?\]^?_?_

1A
**Q--CYYq\\!!F1a[[ I I3E!HfQiHHq		F{{}}s""	e		zz||c!!	Q ~~#%%|r*   c                     || z
                       d                              |           }t          j        |dk    | |          }|dk    r|                                S |dk    r|                                S |S )Nr   r  r4   r  rT  )r#  r   r6   wherer  rT  )r  rL  r=  r   margin_clampr  s         r(   hingeembeddingloss_referencerB  q  sx    UN))a)0088??L[1e\::FF{{}}	e		zz||Mr*   c                     d|  |z                                   z                                   }|dk    r|                                S |dk    r|                                S |S )Nr4   r  rT  )r   r   r  rT  )r  rL  r   r  s       r(   softmarginloss_referencerD  |  sa    E6F?'')))..00FF{{}}	e		zz||Mr*   c           	      &   |5|                      t          |                                         d          }d}t          dt          |                     D ]9}||k    r1|||         t	          d|| |         z
  | |         z             |z  z  z  }:|S )Nr4   r   )r:  r4  fill_r  r  )r  
target_idxr=   r=  r,   r  r<   s          r(   _multimarginloss_referencerH    s    ~3u::&&,,Q//F1c%jj!! b b
??fZ(CFU:=N4NQVWXQY4Y,[,[_`,`aaFMr*   r4   c                     |                                  dk     rU|                                  dk    r|                     d          n'|                     d                              d          } |                                 }|                                 dk    r|                    d          }|                     d          }|                     d          }|                     |          }	t	          d|          D ]$}
t          | |
         ||
         |||          |	|
<   %|dk    r|	                                |z  S |dk    r|	                                |z  S |dk    r|	                    d          |z  S |	|z  S r9  )	rR  r  re   r:  r  rH  r  rT  r  )r  rL  r=   r=  r,   r   
target_dimr=  rR  r  xs              r(   multimarginloss_referencerL    sX   yy{{Q&+iikkQ&6&6"""EOOA<N<N<X<XYZ<[<[Jzz||q!!!$$

1A
**Q--CYYq\\F1a[[ W W.uQxAvvVVq		F{{}}s""	e		zz||c!!	q~~a  3&&C<r*   c                    d }t          j        |dk    d || |          z
   || |          |z
                      d                    }|dk    r|                                S |dk    r|                                S |S )Nc                    |                      |                     d                    }t          d|                     d                    D ]y}| |         ||         z                                  | |         | |         z                                  dz   ||         ||         z                                  dz   z  dz  z  ||<   z|S )Nr   g-q=r  )r:  re   r  rT  )abcosr<   s       r(   _cosz+cosineembeddingloss_reference.<locals>._cos  s    eeAFF1IIq!&&))$$ 	t 	tAdQqTk&&((qtad{.?.?.A.AE.IqQRtVWXYVZ{N_N_NaNadiNi-jor,rsCFF
r*   r4   r   r  r  rT  )r6   r@  r#  r  rT  )input1input2rL  r=  r   rR  r  s          r(   cosineembeddingloss_referencerU    s       [1a$$vv*>*>&>ffAUAUX^A^@e@ejk@e@l@lmmFF{{}}	e		zz||Mr*   rN   ư>c                 ^   t          j        | |||          }t          j        | |||          }	|r,t          j        ||||          }
t          j        |	|
          }	t          j        ||z   |	z
  d          }|dk    r|                                S |dk    r|                                S |S )Nr  r  r  rT  )r6   pairwise_distancer  r#  r  rT  )anchorpositivenegativer=  r=   epsswapr   d_pd_nd_sr  s               r(   tripletmarginloss_referencera    s    

!&(As
;
;C

!&(As
;
;C "%h!SAAiS!![#+555FF{{}}	e		zz||Mr*   c                     | | |z
  z  |z                        d          }|dk    r|                                S |dk    r|                                S |S )Nr   r  r  rT  )r#  r  rT  )rS  rT  rL  r=  r   r  s         r(   marginrankingloss_referencerc    s_    g&)F299a9@@FF{{}}	e		zz||Mr*   c                 B   t          j        |t           j                  }t          j        |t           j                  }| j        }|                                 } |                                }|                    d          }g }t          |                     d                    D ]}	||	                                         }
||	                                         }||	                                         }|	                    d|z  dz   f|          }|
                                dk    r||	d |f         |dd d<   n|||z
  |         |dd d<   | d |
|	f                                         }|                     |dz  dz   f          }|d|f         |d<   |d|d         f         |d<   |d d         |dd          k    }t          d|
          D ]~}|                                }|dd xx         |d d         z  cc<   |dd xx         t          j        ||d d         |                    d                    z  cc<   |||f         |z  }|                    |dd                                                                          d                      t          j        |d          }|dk    r7||                    |j        |j                  z                                  }n|d	k    r|                                }|                    |          }|S )
Nr   r   r4   rN   r  r5   r  r   devicerT  )r6   	as_tensorrc  r   rd   cumsumr  re   r  new_fullrR  r   	new_zeroscloner@  r  rT  r   catr   rf  r  )	log_probsr5  input_lengthstarget_lengthsblankr   dtcum_target_lengthsr'  r<   input_lengthtarget_lengthcum_target_lengthtargets_primeprobsalpha
mask_thirdr8   
alpha_nextr  s                       r(   ctcloss_referencer{    s   OMDDDM_^5:FFFN	B  ""IllnnG'..q11F9>>!$$%% 5 5$Q',,..&q)..00.q16688((!m*;a*?)A5II;;==A")!^m^*;"<M!$Q$")*;m*KL]*]"^M!$Q$-<-*+//11##]Q%6%:$<==E?aM!,,-a#CRC(M!"",==
q,'' 	9 	9AJqrrNNNeCRCj(NNNqrrNNNek*eCRCj%//RSBTBTUUUNNN!]*+j8EEuRSSz~~''++--d334444Yvq!!FF>,,6<,VVV\\^^	e		YYr]]FMr*   )r  )r   r  rk  r  r  r   r  r2  rG  rg  CosineEmbeddingLossTripletMarginLossMarginRankingLossCTCLossCrossEntropyLossr}  r   c                      | d         }d fd fd| dd         D                       } || }t          |          }|dk    r|                    d          S |S )zReference 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.
    r5   c                 |    t          | t          t          f          rd | D             S |                     d          S )Nc                 8    g | ]}|                     d           S r  r  r  s     r(   r  zNsingle_batch_reference_criterion_fn.<locals>.unsqueeze_inp.<locals>.<listcomp>  r  r*   r   r  r  s    r(   r  z:single_batch_reference_criterion_fn.<locals>.unsqueeze_inp  r  r*   c                     g }t          | t          t          f          r$| D ] }|                     |                     !n|                    |            |S rl   )r  r  r  extendr  )xsr'   rK  r[   s      r(   r[   z4single_batch_reference_criterion_fn.<locals>.flatten  sh    b4-(( 	 * *ggajj))))* MM"r*   c                 &    g | ]} |          S rm   rm   )r  r  r  s     r(   r  z7single_batch_reference_criterion_fn.<locals>.<listcomp>#  s#    &S&S&S}}U';';&S&S&Sr*   Nr~   r   )r)   r  )ro   	criterionsingle_batch_input_argsr  r   r[   r  s        @@r(   #single_batch_reference_criterion_fnr    s     RI     
     &g&S&S&S&Scrc&S&S&STTY/0Fi((IF~~a   Mr*   )L1LossMSELossPoissonNLLLossr   r  )r~   r  rT  _no_batch_dim_)namec                 J     t          t          |           t                    S Nr   r"   rw   r   r  ro   s     r(   r?   r?   6      ->WR->->-S-S-S r*   r  )r   r   rD   target_sizerE   r  rH   KLDivLoss_no_batch_dim_c                  6    t          j        t                    S r  )rw   r   r   rm   r*   r(   r?   r?   C  s    BL9=== r*   c                  N    t          j        d                                          S Nr  r   rm   r*   r(   r?   r?   D  s    D))--// r*   c                  *    t          j        d          S r  r   rm   r*   r(   r?   r?   E  s    %*T** r*   )r   r   r   	target_fnrE   r  rH   BCELossc                  f    t          j        t          j        dt           j                            S Nr?  r   )r6   r   r   rd   rm   r*   r(   r?   r?   R  s!    ek!5<@@@AA r*   c                      t          j        dt           j                                      d                              t           j                  S )Nr?  r   r   )r6   r   rd   r   r   rm   r*   r(   r?   r?   S  s5    AU\22255a88;;ELII r*   BCEWithLogitsLossc                  B    t          j        dt           j                  S r  r6   r   rd   rm   r*   r(   r?   r?   U  s    %+au|"D"D"D r*   c                  B    t          j        dt           j                  S r  r  rm   r*   r(   r?   r?   U  s    ekZ[chcoNpNpNp r*   r2  c                  B    t          j        dt           j                  S r  r  rm   r*   r(   r?   r?   V  s    5;q#E#E#E r*   c                  4    t          j        g ddz            S N)r5   r4   r4   rX   r6   tensorrm   r*   r(   r?   r?   V  s    u|\f\f\fij\jOkOk r*   r  c                  B    t          j        dt           j                  S )Nr2   r   r  rm   r*   r(   r?   r?   W  s    U[%,%G%G%G r*   c                  .    t          j        g d          S )N)rX   r   r5   r4   r  rm   r*   r(   r?   r?   W  s    QVQ]^k^k^kQlQl r*   rG  c                  B    t          j        dt           j                  S r  r  rm   r*   r(   r?   r?   X  s    u{1ELAAA r*   c                  4    t          j        g ddz            S r  r  rm   r*   r(   r?   r?   X  s    5<XbXbXbefXfKgKg r*   rk  c                  j    t          j        t          j        dt          j                  d          S )NrX   r   r   rQ  )r   r  r6   r   rd   rm   r*   r(   r?   r?   Y  s&    ek!5<&H&H&HaPPP r*   c                  *    t          j        d          S rZ   r  rm   r*   r(   r?   r?   Y  s    Z_ZfghZiZi r*   r|  c                      t          j        dt           j                  t          j        dt           j                  fS r  r  rm   r*   r(   r?   r?   \  -    Qel333U[%,5W5W5WX r*   c                  B    t          j        dt           j                  S )Nr4   r   )r6   r  rd   rm   r*   r(   r?   r?   ]  s    Qel333 r*   r~  c                  R    t          j        d          t          j        d          fS r	  r0  rm   r*   r(   r?   r?   `  s    5;r??EKOO"D r*   c                  N    t          j        d                                          S r	  )r6   r   signrm   r*   r(   r?   r?   `  s    ekZ\ooNbNbNdNd r*   r}  c                      t          j        dt           j                  t          j        dt           j                  fS r  r  rm   r*   r(   r?   r?   d  r  r*   c                  B    t          j        dt           j                  S r  r  rm   r*   r(   r?   r?   e  s    AU\222 r*   MultiLabelSoftMarginLossc                  B    t          j        dt           j                  S r  r  rm   r*   r(   r?   r?   g  s    Qel)K)K)K r*   c                  *    t          j        d          S )Nr?  r0  rm   r*   r(   r?   r?   g  s    UZU`abUcUc r*   r`   ,classification_criterion_no_batch_extra_info)r  r  r2  rk  rG  c                 J     t          t          |           t                    S r  r  r  s     r(   r?   r?   y  r  r*   c                      |             S rl   rm   fs    r(   r?   r?   z  s    AACC r*   c                      |             S rl   rm   r  s    r(   r?   r?   {  s    aacc r*   )r   r   r   r  rE   r  
has_parityc                   d   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dS )
NNTestCasec                     t           rl   NotImplementedError)rn   ro   rq   s      r(   _forwardzNNTestCase._forward      !!r*   r  returnc                     t           rl   r  rn   r  s     r(   _get_parameterszNNTestCase._get_parameters  r  r*   Nc                     t           rl   r  r  s     r(   _zero_grad_parametersz NNTestCase._zero_grad_parameters  r  r*   Fr  r  grad_outputcreate_graphc                     t           rl   r  )rn   r  r  r  r  r  s         r(   	_backwardzNNTestCase._backward  s
    
 "!r*   c                      t          |t                    rt           fd|D                       S t          |t                    r fd|D             S t          j        |                                          S )Nc              3   D   K   | ]}                     |          V  d S rl   	_jacobianr  elemnum_outrn   s     r(   r  z'NNTestCase._jacobian.<locals>.<genexpr>  s1      II4g66IIIIIIr*   c                 <    g | ]}                     |          S rm   r  r  s     r(   r  z(NNTestCase._jacobian.<locals>.<listcomp>  s'    DDDdDNN411DDDr*   )r  r  r  r6   r  nelement)rn   r  r  s   ` `r(   r  zNNTestCase._jacobian  s    eU## 	:IIIII5IIIIIIt$$ 	:DDDDDeDDDD;u~~//999r*   c                      t          |t          j                  rC|j        r'|                                                    d          S |                    d          S t           fd|D                       S )Nr5   c              3   B   K   | ]}                     |          V  d S rl   )_flatten_tensors)r  rO  rn   s     r(   r  z.NNTestCase._flatten_tensors.<locals>.<genexpr>  s1      ==a..q11======r*   )r  r6   r  	is_sparseto_denser9   r  )rn   rK  s   ` r(   r  zNNTestCase._flatten_tensors  sp    a&& 	>{ "zz||((,,,vvbzz!====1======r*   c                     t          |t          j                  rF|j        r;|j        6|j                                         |j                                         d S d S d S |D ]}|                     |           d S rl   )r  r6   r  r	  gradr;  detach__zero_grad_input)rn   r  r<   s      r(   r  zNNTestCase._zero_grad_input  s    eU\** 	)" %uz'=
  """
""$$$$$% %'='=  ) )%%a(((() )r*   Tc                    |                      ||          }|                                }|r2|                     ||          }t          t	          |                    }|rGt          d |                     |          d         D                       }	t          j        |	|          }
t          |          D ]-}|                     |          \  }}d t          ||          D             }t          j        |          }|                    d          }d||<   |r|                     |           |r|                     |           |                     ||||          }|rQt          |t	          |                    D ]3\  }}|                                                    d          |d d |f<   4|r/t          j        |                     |          d          |
d d |f<   /d}|r||fz  }|r||
fz  }|S )Nc              3   >   K   | ]}|                                 V  d S rl   )numelr  s     r(   r  z2NNTestCase._analytical_jacobian.<locals>.<genexpr>  s*      OO!AGGIIOOOOOOr*   r   c                 D    g | ]\  }}|t          j        |          n|S rl   )r6   
zeros_like)r  r=   r  s      r(   r  z3NNTestCase._analytical_jacobian.<locals>.<listcomp>  s0    aaa6Aqaiu'***Qaaar*   r5   r4   rm   )r  r  r  r  r   rT  r  r6   r  r  r  r  r9   r  r  r  
contiguousrl  r  )rn   r  r  jacobian_inputjacobian_parametersr  r  jacobian_inpflat_jacobian_input	num_paramjacobian_paramr<   paramd_paramd_out
flat_d_outd_input
jacobian_xd_xress                       r(   _analytical_jacobianzNNTestCase._analytical_jacobian  s,   vu--oo'' 	D>>%==L"&}\'B'B"C"C 	AOOt/C/CF/K/KA/NOOOOOI"[K@@N{## 	T 	TA!11&99NE7aaSQVX_M`M`aaaG$V,,EBJJqM" 3**6222 -%%e,,,nnVUFEBBG A'*+>g@V@V'W'W A AOJ'*~~'7'7'<'<R'@'@Jqqq!t$$" T',y1F1Fw1O1OQR'S'Sqqq!t$(* 	!<= C 	#>?"C
r*   c                 &     fd}d}|r|t          ||d          fz  }|rl                               \  }}g }	|D ]6}
t          |||
d          }|	                    |d         d                    7|t          j        |	d          fz  }|S )Nc                  T                         |                                           S rl   )r  detach)r  r  rn   s    r(   fwz*NNTestCase._numerical_jacobian.<locals>.fw  s#    ==//66888r*   rm   rV  )r\  )rL  r\  r   )r   r  r  r6   rl  )rn   r  r  r  r  r  r  r  r>   to_catr=   jacobians   ``          r(   _numerical_jacobianzNNTestCase._numerical_jacobian  s    	9 	9 	9 	9 	9 	9 )+ 	A*2u$???@@C 	+++F33HE1F . .22uQDQQQhqk!n----EIfa((**C
r*   c                    t          |                     |          d                   }|                     ||||          }|                     ||||          }t	          t          |                    }t	          t          |                    }g }	t          ||          D ]k\  }
}|
                                dk    rN|	                    |
	                    |d          
                                                                           lt          |	          dk    r*|                     t          |	          t                     d S d S )Nr   r5   )rx  )boolr  r  r  r  r   r  r  r  r  r4  r  r4  assertLessEqual	PRECISION)rn   r  r  r  r  
analytical	numericalanalytical_tnumerical_tdifferencesrO  r=  s               r(   check_jacobianzNNTestCase.check_jacobian  s2   "4#7#7#?#?#BCC..vunNabb
,,VUNL_``	M*5566=3344k22 	C 	CDAqwwyyA~~""155"5#5#5#9#9#;#;#?#?#A#ABBB{a  [!1!19=====  r*   F)TTT)rs   rt   ru   r   r  rw   rx   r  r  	Parameterr  r  r   r6   r  r   r   r  r  r  r  r  r  r  r	  rm   r*   r(   r  r    s        " " ^" "bi "E$r|:LdSUS_N`:`4a " " " ^" "BI "$ " " " ^"  (-" "	 ")"38<"$U\8EL3I%IJ" !%" " " ^": : :> > >) ) )( (2B ( ( ( (T 1A    "> >,< > > > > > >r*   r  c                   j    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dS )TestBase>   r  
extra_argsrB    Nc                     || _         || _        || _        || _        | j        D ]E}||vr?|dz   |vr8|dz   |vr1|dv rd||<   t          |                                  d| d          F|| _        i | _        d S )N_fn_size>   r  rB   rm   z
: Specify z5 by a value, a function to generate it, or it's size!)	rL   r   r   rE   _required_arg_names
ValueErrorget_name_extra_kwargs
_arg_cache)rn   r   rL   rE   r   rq   r  s          r(   __init__zTestBase.__init__  s    	 &(, 	@ 	@D6!!dUl&&@&@TG^[aEaEa===#%F4LL$%~%~4%~%~%~#r*   c                 n    | j         
d| j         z   S d| j        j        z   }| j        r|d| j        z   z  }|S )Ntest_r>   )r   r   rs   rL   )rn   	test_names     r(   r  zTestBase.get_name  sG    =$T]**d.77	9 	)ty(Ir*   c                      t          |t          j                  r|S t          |          r$ t	          |           fd|D                       S |S )Nc              3   B   K   | ]}                     |          V  d S rl   )_unpack)r  vrn   s     r(   r  z#TestBase._unpack.<locals>.<genexpr>  s-      >>1t||A>>>>>>r*   )r  r6   r  r   type)rn   values   ` r(   r  zTestBase._unpack  s\    eU\** 	L 	4;;>>>>>>>>>>Lr*   c                 .    |                      dd          S )NrB   T_get_argrn   s    r(   rB   zTestBase.constructor_args#  s    }}/666r*   c                 .    |                      dd          S )Nr  Tr$  r&  s    r(   r  zTestBase.extra_args'  s    }}\40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        |<   nT|| j        v s(J d| d| d| d|                                              fd | j        |                   | j        |<   |r |                     | j        |                   n| j        |         S )Nr  r  z	Missing `z`, `z` or `z` for c                     t          | t                    rfd| D             S t          | t          j                  r|                                 S t          j        |           S )Nc                 &    g | ]} |          S rm   rm   )r  smap_tensor_sizess     r(   r  z?TestBase._get_arg.<locals>.map_tensor_sizes.<locals>.<listcomp><  s%    CCC 0 0 3 3CCCr*   )r  r  r6   r  rd   r   )sizesr,  s    r(   r,  z+TestBase._get_arg.<locals>.map_tensor_sizes:  sa    !%.. 2CCCCUCCCC#E5<88 2$||~~-${5111r*   )r  r  r  r  r  )rn   r  unpackfn_name	size_namer,  s        @r(   r%  zTestBase._get_arg+  s4   t/////t&&UlGwIt)))(,(:4(@%%D...(C(:7(C(E(E%% D$6666[[[)[[7[[$--//[[ 7662 2 2 2 2 )9(89KI9V(W(W%6<Wt||DOD1222$/RVBWWr*   Tc                 .    |                      d|          S )Nr  r$  )rn   r.  s     r(   
_get_inputzTestBase._get_inputF  s    }}Wf---r*   c                     t           rl   r  )rn   	test_cases     r(   __call__zTestBase.__call__I  s    !!r*   )r  NNr  )rs   rt   ru   r  r  r  r  propertyrB   r  r%  r2  r5  rm   r*   r(   r  r     s        EEE        7 7 X7 1 1 X1X X X6. . . ." " " " "r*   r  c            	       h     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 )
ModuleTestr4  r  r  r  c                     t           rl   r  )rn   r4  r  r  s       r(   _do_testzModuleTest._do_testO  r  r*   c                 ,    t                      j        |i | |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd	          | _        |                    d
d          | _	        |                    dd           | _
        | j
        t          j                    | _
        d S d S )Nr  TrO   r   r`   !FIXME_no_cuda_gradgrad_comparisonFr   g-C6*?check_forward_onlyrH   )superr  r  r  should_test_cudashould_test_pickler`   r<  r   r=  rH   r6   get_default_dtypern   ro   rq   	__class__s      r(   r  zModuleTest.__init__S  s    $)&)))$jj)94@@ &

; = ="(**Xt"<"<$jj)94@@JJ:EBB 	.K66"(**-A5"I"I#ZZ>>%!&!8!:!:D &%r*   c           	         t          | j                  5   | j        | j         }|                                 }| j        ||                    ||          }t          |          }t          |          }|                     ||                    |          d         |          }|	                    ||d           | j
        r	 d d d            d S |                     |||           | j        rt          j                    5 }|                    ||           t          j        ||           |                    d           t          j        |d          }	|	                    |                    ||          |                    |	|                     d d d            n# 1 swxY w Y   |                     |||           d d d            d S # 1 swxY w Y   d S )Nr   F)exact_dtype)weights_only)r   rH   r   rB   r2  rE   r  r   r  assertEqualr=  test_noncontigr@  tempfileTemporaryFiler6   saveseekloadr:  )
rn   r4  r  r  out	ref_input
ref_moduleexpected_outr  module_copys
             r(   r5  zModuleTest.__call__a  s~   t122 	4 	4%T%t'<=FOO%%E ,((77$UOO	%f--
#00I<U<UV\<]<]^_<`blmm%%c<U%KKK& 	4 	4 	4 	4 	4 	4 	4 	4 	65999& u+-- u&&vu555Jvq)))FF1III"'*QU"C"C"CK)))*<*<VU*K*KYM_M_`kmrMsMstttu u u u u u u u u u u u u u u MM)VU3331	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s=   B/G1GBF#G#F'	'G*F'	+GGGc                     t          |t                    r fd|D             S t          |t                    rt           fd|D                       S |}|                                }|}t	          |          D ]"}|                    |          dk    r|dz   } n#t          j        t          j        |          |g|          	                    |d          
                                }|                                dk    s.|                                dk    s|                                rJ |j        |_        |S )Nc                 :    g | ]}                     |          S rm   noncontiguizer  orn   s     r(   r  z,ModuleTest.noncontiguize.<locals>.<listcomp>~  s'    777aD&&q))777r*   c              3   B   K   | ]}                     |          V  d S rl   rU  rW  s     r(   r  z+ModuleTest.noncontiguize.<locals>.<genexpr>  s1      <<1++A..<<<<<<r*   r4   r   )r  r  r  rR  r  re   r6   r)  
empty_likeselectr  r  is_contiguousr	  )rn   objr  ndimrR  r  	noncontigs   `      r(   rV  zModuleTest.noncontiguize|  sL   c4   	=777737777U## 	=<<<<<<<<<<zz||
 t 	 	A{{1~~!!!e " K!1&!9!96 BCHHOOPSUVWW^^``	  A%%):):a)?)?yG^G^G`G`)?)?`"("6	r*   c           	      ^   t          |t          j                  r|                                dk    rd S t	          d |D                       rd S |                    |           |                    |           t                      5  |                    ||          }t          |dd          r|d         }|
                    |j                                                  }|                                }t          |                    ||||                    }t          |                    |          d                   }d d d            n# 1 swxY w Y   |                     |          }|                     |          }	t%          dd          D ]\  }
}|
r|n|}t          |r|n|	          }|                    |           |                    |           t                      5  |                    ||          }t          |dd          r|d         }|                    ||||          }|                    ||           |                    ||d	d
           |                    |                    |          d         |           d d d            n# 1 swxY w Y   d S )Nr   c              3   z   K   | ]6}t          |t          j                  |                                d k    V  7dS )r   N)r  r6   r  rR  )r  r<   s     r(   r  z,ModuleTest.test_noncontig.<locals>.<genexpr>  s?      JJjEL.I.IJquuww!|JJJJJJr*   return_indicesFr4   TFrN   )r8  g-C6?atolrtol)r  r6   r  rR  anyr  r  r   r  r"   r:  r  normal_rk  r   r  r  rV  r   rG  )rn   r4  r  r  r  r  r  r  nc_inputnc_grad_outputcontig_icontig_gr<   gorN  r  s                   r(   rH  zModuleTest.test_noncontig  sK   eU\** 	uyy{{a/?/?FJJUJJJJJ 	F''///""5))) 	E 	E''66Fv/77 # **V\22::<<K\\^^Fy2265&+VVWWGy88@@CDDG	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E %%e,,++K88")-"B"B"B 	U 	UHh!/xA E++~FFB++F333&&q)))!## U U((336#3U;; !a&C **61c2>>%%c6222%%dG$Q%GGG%%i&?&?&G&G&JGTTTU U U U U U U U U U U U U U U	U 	Us&   B=EEE.B&J  J$	'J$	c           	      <   t           r| j        st          j        d          t	          | j                  5  |                                 }t          j        t          j	        i}t          |t                    r|n|f}t          d |D                       }t          ||          } | j        | j         } | j        | j         	                                                                }|                    |          }	|                    |          }
t%          |	d         |
d                   D ]\  }}|j                            |            |                    |           |                    |           |                    |           |                    |           |                    ||          }|                    ||          }t1          |dd          r|d         }|d         }|                    ||| j        dd           t7          d          D ]}|                                                                }|                    |          }|                    ||||          }|                    ||||          }|                    ||| j        dd           t%          |	d	         |
d	                   D ]#\  }}|                    ||| j        d
           $| j         r| j!        s || } || }t1          |dd          r|d         }|d         }t          j"        |d          }|                    |          #                                }d|_$        t          j%        &                    ||t          |'                                          z   |d          }t          j%        &                    ||t          |'                                          z   |d          }t%          ||          D ]$\  }}|                    ||| j        dd           %|r|(                                )                                tQ          d |D                       z   }|(                                )                                tQ          d |D                       z   }n\|(                                tQ          d |D                       z   }|(                                tQ          d |D                       z   }t          j%        &                    |||fz   t          |'                                          z   d          }t          j%        &                    |||fz   t          |'                                          z   d          }|                    ||| j        dd           t%          ||          D ]$\  }}|                    ||| j        dd           %| *                    |||           d d d            d S # 1 swxY w Y   d S )NExcluded from CUDA testsc              3   b   K   | ]*}t          |t          j                  o|j        j        V  +d S rl   )r  r6   r  r   
is_complexr  s     r(   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  s9      &s&s^_z!U\'B'B'YqwGY&s&s&s&s&s&sr*   )type_mapr   rb  Fre  rf  rE  rS   r4   rd  T)r	  )r  c              3   b   K   | ]*}|                                                                 V  +d S rl   rT  r4  r  rK  s     r(   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  3      >e>eQRquuww{{}}>e>e>e>e>e>er*   c              3   b   K   | ]*}|                                                                 V  +d S rl   ru  rv  s     r(   r  z'ModuleTest.test_cuda.<locals>.<genexpr>   rw  r*   c              3   >   K   | ]}|                                 V  d S rl   rT  rv  s     r(   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  *      8Y8YQ8Y8Y8Y8Y8Y8Yr*   c              3   >   K   | ]}|                                 V  d S rl   rz  rv  s     r(   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  r{  r*   )retain_graph)+r   r?  unittestSkipTestr   rH   r2  r6   rd   floatr  r  rg  r   r   rB   cudar  r  r  copy_r  r  r  r"   rG  r   r  rk  rh  r   r  r`   r<  
randn_liker  r	  autogradr  r  rT  r4  rH  )rn   r4  	cpu_inputrr  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(   rO   zModuleTest.test_cuda  s    	@ 5 	@#$>???t122 W	H W	H))Iek2H+5i+G+GYiii\O#&&s&scr&s&s&s#s#s $_xHHHO))4+@AJ))4+@AGGIINNPPJ!11*==I!11*==I #IaL)A, ? ? ( (u
  ''''&&777&&777++J777++J777"++JHHJ"++JHHJz#3U;; +']
']
!!*jt~TUch!iii 1XX Y Y!+!1!1!3!3!;!;!=!=!/!7!7
!C!C ) 3 3JQ[]k l l ) 3 3JQ[]k l l%%m]^_mr%sss(+IaL)A,(G(G Y Y$GW))'7VW)XXXXY " .l4+Q .l'Z9
'Z9
:'7?? /!+AJ!+AJ!&!1*D!Q!Q!Q!/!7!7
!C!C!J!J!L!L/3,!&!4!4#eJ,A,A,C,C&D&DD"!%	 "5 "' "'
 "'!4!4#eJ,A,A,C,C&D&DD"!%	 "5 "' "' ),NN(K(K l l$GW))'7VWej)kkkk ( Z",.."2"2"6"6"8"83>e>eVd>e>e>e;e;e"eK",.."2"2"6"6"8"83>e>eVd>e>e>e;e;e"eKK",.."2"2S8Y8Y.8Y8Y8Y5Y5Y"YK",.."2"2S8Y8Y.8Y8Y8Y5Y5Y"YK,,#~&77%
@U@U@W@W:X:XX!% - ' ' ,,#~&77%
@U@U@W@W:X:XX!% - ' ' %%m]^_mr%sss(+FF(;(; l l$GW))'7VWej)kkkk	:GGGoW	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	H W	Hs   WXXX)rs   rt   ru   r   r   rw   rx   r:  r  r5  rV  rH  rO   __classcell__rC  s   @r(   r8  r8  M  s        "# "ry " " " " " ^"; ; ; ; ;4 4 46  *#U #U #UJ[H [H [H [H [H [H [Hr*   r8  c                       e Zd Zd ZdS )InputVariableMixinc                 Z    t                               | d          }fd |          S )NFc                     t          | t          j                  r1|                                 s|                                 rd| _        | S  t          |           fd| D                       S )NTc              3   .   K   | ]} |          V  d S rl   rm   )r  r  map_variabless     r(   r  zGInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>  s-      AAt}}T22AAAAAAr*   )r  r6   r  is_floating_pointrq  r	  r!  )r<   r  s    r(   r  z4InputVariableMixin._get_input.<locals>.map_variables  sr    !U\** B&&(( +ALLNN +&*AOtAwwAAAAqAAAAAAr*   )r  r2  )rn   r  r  s     @r(   r2  zInputVariableMixin._get_input  sH    ##D%00	B 	B 	B 	B 	B }U###r*   N)rs   rt   ru   r2  rm   r*   r(   r  r    s#        $ $ $ $ $r*   r  c                   F     e Zd Z fdZd Zd Zd Zed             Z xZ	S )NewModuleTestc                     t                      j        |i | |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    d	d
          | _	        |                    dd          | _
        |                    dd          | _        |                    dd          | _        |                    dd           | _        |                    dd          | _        |                    dd          | _        d S )Nr  Fcheck_inplacer`   Tskip_doubler  rF   rG   r]   test_cpur:  ra   r  r   supports_fwgrad_bwgrad)r>  r  r  r  r  r`   r  r  rF   rG   r  r:  ra   r  r   r  rB  s      r(   r  zNewModuleTest.__init__$  sF   $)&)))ZZ//
#ZZ??$jj)94@@!::mU;;K77K77$jj)95AA

:t44$*JJ/Eu$M$M!"(**-A4"H"H#)::.CT#J#J #)::.CU#K#K &,jj1I5&Q&Q###r*   c           	         t          d                                 D                       }t          |          fd}| j        r@dk    sJ t	          j        |d                   }                    |d         |           n9                    t          |||z   | j	        | j
        | j                             | j        r;                    t          |||z   | j	        | j
        | j                             d S d S )Nc              3      K   | ]}|V  d S rl   rm   rv  s     r(   r  z1NewModuleTest._check_gradients.<locals>.<genexpr>5  s"      66Qq666666r*   c                  H    |rJ                      | d                    S rl   )r  )inputs_and_paramsrq   r  
num_inputsr4  s     r(   fn_to_gradcheckz7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck8  s.    :%%f.?.LMMMr*   r4   r   )ra   	fast_modecheck_forward_ad)ra   r  check_fwd_over_rev)r  r  r4  r:  r6   r  r	  
assertTruer   ra   r  r   r`   r   r  )rn   r4  r  input_tupleparamsr  test_input_jacobianr  s    ``    @r(   _check_gradientszNewModuleTest._check_gradients4  sn   66&"3"3"5"566666%%
	N 	N 	N 	N 	N 	N 	N $ 	W????"'"9+a."I"I$$V[^=PQQQQ  ?K&<P>B>U595M<@<T"V "V "V W W W
  	`  f@TBFBY9=9QBFB]"_ "_ "_ ` ` ` ` `	` 	`r*   c                    t          j                    }t          j        d           t          |t                    r|n|f}|                     |                                            | j        rt          |          dk    sJ |d         } | j	        | j
        ddi}|j        }t                      5   |          }d d d            n# 1 swxY w Y                       |j        |           t          |          }	|	                                }
t                      5   ||
          }d d d            n# 1 swxY w Y                       |
j        |                               ||           |j                                                                        }|j        Dt          j                    5  |j                                         d d d            n# 1 swxY w Y   |	j        Dt          j                    5  |	j                                         d d d            n# 1 swxY w Y   |                    |           |                    |                               |j        |	j                   dfd	}t/          d |D                       rt0          rt	          d |D                       }                                                                  |   |t           j        j        d           t           j                                        dk    rt	          d |D                       }                    d           t           j                            d          5   |  d d d            n# 1 swxY w Y    |t           j        j        d           nd	 fd
fdfdt	          fd|D                       }                                  |   |t           j                   t	          fd|D                       }                                  |   |t           j                   t0          r| j         rt	          fd|D                       }                                                                  |   |t           j        j        d           t	          d |D                       }!                                  |   |t           j                   t	          d |D                       }                                  |   |t           j        j        d           | j"        r]t           j#        j"        $                    d          5   |   |t           j        j        d           d d d            n# 1 swxY w Y   t           j                                        dk    rt	          d |D                       }                    d           t           j                            d          5   |  d d d            n# 1 swxY w Y    |t           j        j        d           | j%        sat	          fd|D                       }                                                                  |   |t           j        j        d           | j&        sat	          fd|D                       }'                                                                  |   |t           j        j(        d           t          j        |           d S )Nr4   r   inplaceTc                                                      D ]B}                    ||            |(                    |                                |           Cd S rl   )r  assertIsInstancerG  
get_device)tensor_type	device_idr=   r  r4  s      r(   assert_module_parameters_arez<NewModuleTest._do_test.<locals>.assert_module_parameters_are{  sg    &&(( E E**1k:::())!,,..)DDDE Er*   c              3   J   K   | ]}t          |t          j                  V  d S rl   )r  r6   
LongTensorr  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s/      DD1z!U-..DDDDDDr*   c              3   >   K   | ]}|                                 V  d S rl   r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s*      >>Q>>>>>>r*   c              3   @   K   | ]}|                     d           V  dS r  r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s,      #C#C!AFF1II#C#C#C#C#C#Cr*   c                     |                                  r|                     |          S |                                 r|                     |          S | S rl   )rq  r   r  )r  realr  s      r(   to_typez'NewModuleTest._do_test.<locals>.to_type  sQ    $$&& "!99W-----// "!99T??*!Mr*   c                 2     | t           j        d           S rl   )r6   float16rK  r  s    r(   to_halfz'NewModuleTest._do_test.<locals>.to_half  s    wq%-666r*   c                 F     | t           j        t           j                  S rl   )r6   float32	complex64r  s    r(   	to_singlez)NewModuleTest._do_test.<locals>.to_single  s    wq%-AAAr*   c                 F     | t           j        t           j                  S rl   )r6   r  r
  r  s    r(   	to_doublez)NewModuleTest._do_test.<locals>.to_double  s    wq%-1ABBBr*   c              3   .   K   | ]} |          V  d S rl   rm   r  r8   r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  +      BB		!BBBBBBr*   c              3   .   K   | ]} |          V  d S rl   rm   r  r8   r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  r  r*   c              3   R   K   | ]!} |                                           V  "d S rl   r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s7      #M#MAIIaLL$5$5$7$7#M#M#M#M#M#Mr*   c              3   >   K   | ]}|                                 V  d S rl   )cpur  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s*      #A#AAEEGG#A#A#A#A#A#Ar*   c              3   >   K   | ]}|                                 V  d S rl   r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s*      #B#BAFFHH#B#B#B#B#B#Br*   F)enabledrN   c              3   @   K   | ]}|                     d           V  dS r  r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s,      'G'Gaq		'G'G'G'G'G'Gr*   c              3   R   K   | ]!} |                                           V  "d S rl   r  r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s7      'Q'Q		!(9(9(;(;'Q'Q'Q'Q'Q'Qr*   c              3   R   K   | ]!} |                                           V  "d S rl   r  )r  r8   r  s     r(   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s5      'O'Oa

(9(9'O'O'O'O'O'Or*   rl   ))r6   get_num_threadsset_num_threadsr  r  r  __repr__r  r4  r   rB   _versionr   rG  r   rk  assertNotEqualr  rh  r  no_gradr;  backwardallr   r  r  FloatTensordevice_countrf  rd   DoubleTensorr?  r  r  backendsflagsr  r  half
HalfTensor)rn   r4  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  st	   +--a   )%77EeeeXi=== 	 	= {##q((((NE(($*?NNNI!NM!## ' '' ' ' ' ' ' ' ' ' ' ' ' ' ' '!!%.-@@@H%^^--N!## 6 6%In55	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6$$^%<mLLL!!&)444;$$&&..00Dz%]__ ' 'J$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '}(]__ * *M'')))* * * * * * * * * * * * * * *OOD!!!t$$$!!%*hm<<<	E 	E 	E 	E 	E 	E 	E DDDDDDD _	K _	K  >>+>>>>>KLLNN!!!FK  (()?CCCz&&((1,,##C#C{#C#C#CCCAZ&&q)) ) )FK(() ) ) ) ) ) ) ) ) ) ) ) ) ) ),,UZ-CQGGG" " "7 7 7 7 7B B B B BC C C C C  BBBBkBBBBBKLLNNNFK  (():;;;  BBBBkBBBBBKMMOOOFK  (();<<< 1KT2 1K
 $#M#M#M#M#M#M#MMM##%%%$$,,UZ-CQGGG $#A#A[#A#A#AAA

$$,,U->??? $#B#Bk#B#B#BBB$$,,UZ-CQGGG : P-33E3BB P P,,44UZ5KQOOOP P P P P P P P P P P P P P P :**,,11 #('G'G;'G'G'G"G"GKKKNNN**1-- - -,,- - - - - - - - - - - - - - -001GKKK' M"''Q'Q'Q'Q['Q'Q'Q"Q"QKMMOO((***FK((001H!LLL ~ K"''O'O'O'O;'O'O'O"O"OKKKMM&&(((FK((001FJJJk*****s~   ?CCC.EE
E
G--G14G1H88H<?H<NNN!W  WW:YYYc                 .    |                      dd          S NrL  Fr$  r&  s    r(   _get_targetzNewModuleTest._get_target      }}Xu---r*   c                 .    |                      dd          S NrB   Fr$  r&  s    r(   rB   zNewModuleTest.constructor_args      }}/777r*   )
rs   rt   ru   r  r  r:  r  r6  rB   r  r  s   @r(   r  r  #  s        R R R R R ` ` `8Q+ Q+ Q+f. . . 8 8 X8 8 8 8 8r*   r  c                        e Zd Zej                            dh          Z fdZd Zd	dZd Z	e
d             Ze
d             Z xZS )
CriterionTestrL  c                     t                      j        |i | |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    d	d          | _	        |                    d
d          | _
        |                    dd          | _        |                    dd          | _        |                    dd           | _        | j        t          j                    | _        d S d S )NrO   Tr=  Fr`   r  check_bfloat16check_complexr  rF   rG   r]   ra   rH   )r>  r  r  r?  r=  r`   r  r  r  r  rF   rG   ra   rH   r6   rA  rB  s      r(   r  zCriterionTest.__init__  s;   $)&))) &

; = ="(**-A5"I"I$jj)94@@ **\488$jj)95AA#ZZ??

:t44K66$jj)95AA"(**-A4"H"H#ZZ>>%!&!8!:!:D &%r*   c                 D  
 t          | j                  5   | j        | j         
|                                 }
                                 t          
           |                                 }| j        h|	                    
||| j
                  }t          |          t          |          f| j
        z   
fz   } | j        | }|                    ||           | j        r	 d d d            d S t          d 
                                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            d S # 1 swxY w Y   d S )Nr  c              3      K   | ]}|V  d S rl   rm   rv  s     r(   r  z)CriterionTest.__call__.<locals>.<genexpr>  s"      ::1::::::r*   c                      | |          S rl   rm   )r  rL  r  r  s      r(   apply_fnz(CriterionTest.__call__.<locals>.apply_fn  s    !6%000r*   c                      | ||          S rl   rm   )rS  rT  rL  r  r  s       r(   r	  z(CriterionTest.__call__.<locals>.apply_fn  s    !6&&&999r*   )ra   )r   rH   r   rB   r2  r  r}  r  rE   _forward_criterionr  r   rG  r=  r  r  r  r   ra   r`   r   )rn   r4  r  rL  rN  ref_argsrQ  r  inputsr	  r  s             @r(   r5  zCriterionTest.__call__   sf   t122 "	\ "	\%T%t'<=FOO%%E OOKKK%%''F ,2265&UYUd2ee$UOOXf-=-=>PTZS\\0t0(;%%c<888& #"	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\& ::f&7&7&9&9:::::FeU++ 	:F*fY61 1 1 1 1 1 6)3: : : : : h4;RSSSS" \h4CZ[[[[E"	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\ "	\s   CF5BFFFNc                    d
fd	t           r| j        st          j        d          t	          | j                  5  |                                 }|                                 } | j        | j	         } | j        | j	         } ||d          }|
                                s|                                r ||          }|                    |           |                    |           t          |          }t          |          }	|                                 |t          j        t          j        hv r7|                                 }|                                 } | j        | j	         }|                    ||||          }
|                    |||	|          }|                    |
||t          j        t          j        hv rdnddd	           |                    |||
||          }|                    ||||	|          }|                    |||t          j        t          j        hv rdnddd	           d d d            d S # 1 swxY w Y   d S )NFc                    t          | t          j                  r;|                                                                                             S t          | t                    rt          fd| D                       S | S )Nr   c              3   2   K   | ]} |          V  d S rl   rm   )r  rX  convert_dtyper   r	  s     r(   r  zACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>*  s1      QQ]]1e]CCQQQQQQr*   )r  r6   r  r  r   requires_grad_r  )r]  r   r	  r  s    ``r(   r  z.CriterionTest.test_cuda.<locals>.convert_dtype&  s    #u|,, zz||U33BB=QQQC'' QQQQQQSQQQQQQ
r*   ro  Tr  rQ   g-C6:?r   rs  r
  )r   r?  r~  r  r   rH   r2  r  r   rB   r  rq  r!  r   r  r6   r  bfloat16r  rG  _backward_criterion)rn   r4  r   r  r  
cpu_targetr  r  	gpu_input
gpu_targetr  r  r  r  r  s                 @r(   rO   zCriterionTest.test_cuda%  s   	 	 	 	 	 	  	@ 5 	@#$>???t122 %	{ %	{))I))++J))4+@AJ))4+@AJ &i==I++-- >1F1F1H1H >*]:u==
OOE"""OOE""" y))I
++JOO U^444 OO--	!--//
-T-t/DE
"55j)Zdn5ooJ"55j)Zdn5ooJ!!*j/4U^8T/T/TttZ^efty " { { { &99Iz:* : V VM%99Iz:* : V VM !!-/4U^8T/T/TttZ^efty " { { {I%	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{ %	{s   HIIIc                 .    |                      dd          S r  r$  r&  s    r(   r  zCriterionTest._get_targetX  r  r*   c                 .    |                      dd          S r  r$  r&  s    r(   rB   zCriterionTest.constructor_args[  r  r*   c                 .    |                      dd          S )Nr  Fr$  r&  s    r(   r  zCriterionTest.extra_args_  s    }}\5111r*   rl   )rs   rt   ru   r  r  unionr  r5  rO   r  r6  rB   r  r  r  s   @r(   r  r    s         #6<<hZHH; ; ; ; ; #\ #\ #\J1{ 1{ 1{ 1{f. . . 8 8 X8 2 2 X2 2 2 2 2r*   r  rm   r  c                    t          j        |t           j        |d          }|Ht          j        |t           j        |          |z                                                                  } ||          }t          j        ||          }|                    |           |                                }	|	                                                                                                }
|                                } |	|
          }|                    |           | 
                    ||||d           | 
                    |j        j        |
j        j        ||d           d S )NT)r   rf  r	  re  )rf  Frs  )r6   r   r  r   r  r  r  r  r  r  rG  r  r  )r4  oprf  inp_dimsprecrC  rS  out1grad_input1op_bfp16rT  grad_input2out2s                r(   _test_bfloat16_opsr%  d  sA   [vUYZZZF*XU^FKKKlZaaccrrtt2f::D"4777KMM+ {{}}H]]__%%''6688F&&((K8FDMM+$4dNNN&+*FK,<4d`efffffr*   c                    |s|                     d            ||          }|s)t          j        |          }|                    |           |r:|                     |                                |                                           |s|                                D ];}|j        r2|                     |j        t          j	        |j                             <|                     |j        t          j	        |                     d S d S )NT)
r  r6   	rand_liker  rG  re   r  r	  r  r  )r4  r  r  
check_size	inferencerN  gOr=   s           r(   _test_module_empty_inputr+  w  s    !4   
&++C _S!!R 6chhjj#((**555 ?""$$ 	H 	HA H%%afe.>qv.F.FGGGch(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>.Layerr  Nc                     t                                                       t          j        t	          j        dd                    | _        t          j        t	          j        dddd                    | _	        d S )NrX   rS   r4   r  )
r>  r  rw   r  r6   rp  layer_dummy_paramBufferr  layer_dummy_buf)rn   rC  s    r(   r  z)_create_basic_net.<locals>.Layer.__init__  s_    GG%'\%+a2C2C%D%DD"#%9U[Aq!-D-D#E#ED   r*   r  Nrs   rt   ru   r  r  r  s   @r(   Layerr.    sG        	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fr*   r5  c                   $     e Zd Zd fdZ xZS )_create_basic_net.<locals>.Netr  Nc                    t                                                                    | _        t          j        t          j        dd                    | _        t          j        t          j	        dddd                    | _
        d S )NrX   rS   r  r4   )r>  r  l1rw   r  r6   rp  dummy_paramr1  r  	dummy_buf)rn   r5  rC  s    r(   r  z'_create_basic_net.<locals>.Net.__init__  si    GGeggDG!|EK1,=,=>>DYu{1aA'>'>??DNNNr*   r3  r4  )rC  r5  s   @r(   Netr7    sN        	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@r*   r<  )rw   rx   
Sequential)r<  lr=  r+  r5  s       @r(   _create_basic_netr?    s    F F F F F	 F F F@ @ @ @ @ @ @bi @ @ @ 	AA
aAa7Nr*   )r  F)Nr  r  )Nr  r  )Nr  r  r  )r  r_  )r  )r_  r  )r4   r4   Nr  )r   r  )r_  rN   rV  Fr  )rm   r  Nrc  )abcr   rI  r~  copyr   	functoolsr   r   	itertoolsr   operatorr   r6   
torch.cudatorch.nnrw   torch.nn.functional
functionalr   r	   r#   $torch.testing._internal.common_utilsr
   r   r   r   r   r   r   r   r   #torch.testing._internal.common_cudar   r   torch.autograd.gradcheckr   r   torch.autogradr   torch.typesr   torch.backends.cudnntypingr   r   r   collections.abcr   rJ  r  r)   r.   r   rd   module_testsrg   ry   r   r   r   r   r   r   r   r   r   r  r  r  r   r&  r7  r>  rE  rW  r\  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r*  r7  r@  rH  rV  r\  rj  rp  rv  r}  r  r  r  r  r  r  r  r  r   r)  r.  r2  r7  r>  rB  rD  rH  rL  rU  ra  rc  r{  r   __annotations__criterion_testsr  regression_criterion_no_batch
reductionsr  r   regression_test_infor  !classification_criterion_no_batchr  r}  classification_cpp_parityr   r  r  classification_test_infor  r  r  r  r8  r  r  r  r%  r+  r?  rm   r*   r(   <module>rZ     s                   % % % % % % % %                                 - - - - - -S S S S S S S S S S S S S S S S S S S S S S F F F F F F F F K K K K K K K K # # # # # # ( ( ( ( ( (     ' ' ' ' ' ' ' ' ' ' $ $ $ $ $ $&	  ' ' '| 	D >ZZl	 	 	 	D'J::-8tt5l
 
 
 	Dl	   	D#Nl   	D66l	   	D#+] l	 	 	Y6x6 6 6
  $ $ $$ $ $ $ $ $  (  &  $  $  $$ $ $   "$ $ $ $ $ $   "$ $ $ $ $ $  $ $ $$ $ $ $ $ $ $ $ $"$ $ $$$ $ $,$ $ $.$ $ $.$ $ $"$ $ $$$ $ $,$ $ $"$ $ $$$ $ $,$ $ $"$ $ $"$ $ $"$ $ $"$ $ $"  "$ $ $$$ $ $$$ $ $$$ $ $"$ $ $"$ $ $"$ $ $"$ $ $*$ $ $$$ $ $$$ $ $$$ $ $$$ $ $($ $ $,6 6 6"d d dN3    BF"(   4 TZ=@   , Z^RU%I %I %I %IP [a14
 
 
 
  @D &   ,    	 	 	 	      4           .     ]b*0       " " " "L %#G$7DIII $*$:6.0844 4- - D)   &   D! ! !  %$$
w<jII 
1 
1OD)433	33'+SSSS8!l   /0000  
1 
1I46966==//**8!l   /0000 	AAII
 DDFpFpqEEGkGklGGIlIlmAACgCghPPRiRijXX33 DDFdFde 	XX22
  !K!KMcMcd1% !6 -u5A ,d39o   
    %$$
.5g6W6@/B /B 5 5*T8Y#t33	33'+SSSS"'''$)))8 ,00t<<      >AA$KKJ##J///34444x> x> x> x> x> x> x> x>vJ" J" J" J" J" J" J" J"ZDH DH DH DH DH DH DH DHN$ $ $ $ $ $ $ $E8 E8 E8 E8 E8&
 E8 E8 E8Pv2 v2 v2 v2 v2& v2 v2 v2rg g g g&? ? ? ?     r*   