
    ΅iA                    j   % S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
  S SKJr  S SKrS SKrS SKJr  S SKJs  Jr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJrJ r J!r!  S S
K"J#r#J$r$  S SK%J&r&J'r'  S SK(J)r)  S SK*J+r+  S SK,rS SK-J.r.J/r/  S SK0J1r1  S SK0J2r2  \Rf                  r3Sr4S r5S r6\7" SSSSS SS\Rp                  S9\7" SSSSSS SS\!=(       a(    S \Rr                  Ru                  S 5      Rv                  ;   (       + \Rp                  S!9
\7" S"S#S$\Rp                  S%9\7" S"S&S'S(S)S$\Rp                  S*9\7" S+S,S- \Rp                  S.9\7" S/S0S1S2S$S$\Rp                  S39/r<S4 r=S5 r>S6 r?S7 r@S8 rAS9 rBS: rCS; rDS< rES= rFS> rGS? rHS@ rISA rJSB rKSC rLSD rMSE rNSF rOSG rPSH rQSI rRSJ rSSK rTSL rUSM rVSN rWSO rXSP rYSQ rZSR r[SS r\ST r]SU r^SV r_SW r`SX raSY rbSZ rcS[ rdS\ reS] rfS^ rgS_ rhS` riSa rjSb rkSc rlSd rmSe rnSf roSg rpSh rqSi rrSSj jrs  SSk jrt  SSl jru  SSm jrv  SSn jrw  SSo jrxSSp jrySSq jrzSr r{SSs jr|SSt jr}SSu jr~Sv rSSw jrSSx jr  SSy jrSSz jrSS{ jr\s\" \sSS|9\x\t\y\z\|\}\~\\\\\\wS}.r\7S~\14   \S'   / rS r/ SQr/ SQr\
" \\5       H8  u  rr\7" \ S\ 3\S.S jSS\S$\Rp                  S9r\GR                  \5        M:     \ H1  r\7" S\ 3S S S \S$\Rp                  S9r\GR                  \5        M3     SS S 4SS S 4SS S 4SS S 4SS S 4SS S 4SS S 4SS S 4SS S 4SS S 4/
rSSS$00r\7\\74   \S'   S$S$S$S$S$S.r/ SQr\
" \\5       Hp  u  u  rrrr\7" \ S\ 3\S.S j\4S j\4S j\S\GR+                  \S5      S9r\GR+                  \0 5      r\GR1                  \5        \GR                  \5        Mr      " S S\5      r " S S5      r " S S\5      r " S S5      r " S S\\5      r " S S\\5      rSS jrSS jrS rg)    )abstractmethodN)deepcopy)reducepartial)product)mul)
_reduction)common_utils)	TestCaseto_gpufreeze_rng_stateis_iterable	gradcheckgradgradcheckset_default_dtypeskipIfTorchDynamoTEST_WITH_ROCM)	TEST_CUDASM90OrLater)_get_numerical_jacobian_iter_tensors)Variable)_TensorOrTensors)UnionAny)Callable)Sequenceh㈵>c                 r    [        U SS 5      nUc!  [        R                  " [        U SS 5      SSS9nUc   eU$ )N	reductionsizeAverageTF)emit_warning)getattr
_Reductionlegacy_get_stringmresults     [/home/james-whalen/.local/lib/python3.13/site-packages/torch/testing/_internal/common_nn.pyget_reductionr*   #   sD    QT*F~--ga.MtbghM    c                 @    [        U SS 5      nUb  U$ [        U SS 5      $ )Nweightweights)r#   r&   s     r)   
get_weightr/   +   s*    Q$'F1i&&r+   Linear)
      ztorch::nn::LinearOptions(10, 8))   r1   c                     [         R                  " XS   R                  5       5      US   R                  SS5      R	                  SS5      -   $ )Nr      r3   r2   )torchmmtviewexpandip_s      r)   <lambda>r@   n   s:    UXXa1%:QqTYYq"=M=T=TUVXY=Z%Zr+   T{Gzt?)module_nameconstructor_argscpp_constructor_args
input_sizereference_fn	with_tf32tf32_precisiondefault_dtype)r1   r2   Fz+torch::nn::LinearOptions(10, 8).bias(false)no_biasc                 P    [         R                  " XS   R                  5       5      $ Nr   )r7   r8   r9   r<   s      r)   r@   r@   y   s    UXXa1%:r+   gfx94)
rB   rC   rD   rE   descrF   rG   rH   	test_cudarI   RReLU)r5      rQ   F)rB   rE   rO   rI   皙?g?/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r3   r3      with_up_downrB   rC   rD   rE   rN   rO   rI   FlattenrQ      r3   rU   c                 0    [         R                  " U S5      $ Nr5   )r7   flatten)r=   r?   s     r)   r@   r@      s    5==A#6r+   )rB   rE   rF   rI   CrossMapLRN2d)rU   rA   MbP?rQ   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)rQ   rZ      ra   )rB   rC   rD   rE   check_gradgradcheck_batched_gradrI   c                      [        [        U S5      n[        R                  " U5      R                  " U 6 R                  5       $ r\   )r   r   r7   randpermr:   double)sizetotals     r)   _rand_tensor_non_equalri      s3    3a E>>% %%t,3355r+   c                 D   ^ ^  " U U4S jS[         R                  5      nU$ )Nc                   $   > \ rS rSrU U4S jrSrg))wrap_functional.<locals>.FunctionalModule   c                    > T" U0 TD6$ N )selfargsfnkwargss     r)   forward1wrap_functional.<locals>.FunctionalModule.forward   s    t&v&&r+   rp   N)__name__
__module____qualname____firstlineno__ru   __static_attributes__)rs   rt   s   r)   FunctionalModulerl      s    	' 	'r+   r|   )nnModule)rs   rt   r|   s   `` r)   wrap_functionalr      s     ' '299 ' r+   c                     ^  [         R                  " SS5      m [        S[        U 4S j5      SS ST S.U 4S jS	[         R                  S
9$ )Nr1   PoissonNLLLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ Nnoner    )Fpoisson_nll_losstype_asr=   r9   s    r)   r@   /poissonnllloss_no_reduce_test.<locals>.<lambda>       a((AIIaLFKr+   zaF::poisson_nll_loss(i, t.to(i.options()), F::PoissonNLLLossFuncOptions().reduction(torch::kNone))c                  0    [         R                  " SS5      $ Nr1   r7   randrp   r+   r)   r@   r      s    B+r+   _get_input()r   c                 H   > U R                  5       TR                  U 5      -
  $ ro   )expr   r=   r?   r9   s     r)   r@   r      s    1557QUU1X#5r+   Ffullnameconstructorcpp_function_callinput_fncpp_var_maprF   picklerI   r7   randndictr   rf   r9   s   @r)   poissonnllloss_no_reduce_testr      sM    BA+#KMj+(q15ll
$ 
$r+   c                    ^  [        [        R                  " SS5      R                  S5      R	                  [        R
                  5      5      m [        S[        U 4S j5      SS ST S	.U 4S
 jSS[        R
                  S9	$ )N   r1   r   BCELoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   binary_cross_entropyr   r   s    r)   r@   (bceloss_no_reduce_test.<locals>.<lambda>       a,,Q		!Or+   iF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().reduction(torch::kNone))c                  P    [         R                  " SS5      R                  SS5      $ Nr   r1   y&1?v?r7   r   clamp_rp   r+   r)   r@   r          B+226:Fr+   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ r\   logr   s     r)   r@   r      *    Q[AEa!e[[]3J%J#Kr+   FgǺF?	r   r   r   r   r   rF   r   	precisionrI   )r   r7   r   gttorf   r   r   r   s   @r)   bceloss_no_reduce_testr      so    R$''*--ell;<A$#OQnF(q1Kll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  [         R                  5      m [        S[        U 4S j5      SS ST S.U 4S	 jS
[         R                  S9$ )Nrp   r   BCELoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r   r   s    r)   r@   /bceloss_no_reduce_scalar_test.<locals>.<lambda>   r   r+   r   c                  N    [         R                  " S5      R                  SS5      $ Nrp   r   r   r   rp   r+   r)   r@   r          B..vzBr+   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ r\   r   r   s     r)   r@   r      r   r+   Fr   )r7   r   r   r   rf   r   r   r   s   @r)   bceloss_no_reduce_scalar_testr      sd    B1  .A+#OQnB(q1Kll
$ 
$r+   c                  l  ^ ^ [        [        R                  " SS[        R                  S9R	                  S5      R                  [        R                  5      5      m [        R                  " S[        R                  S9m[        S[        U U4S j5      SS S	T TS
.U U4S jSS[        R                  S9	$ )Nr   r1   dtyper   BCELoss_weights_no_reducec                 n   > [         R                  " U TR                  U 5      TR                  U 5      SS9$ Nr   r-   r    r   r=   r9   r.   s    r)   r@   0bceloss_weights_no_reduce_test.<locals>.<lambda>   ,    a,,Q		!4;OOA4FRXZr+   zF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  P    [         R                  " SS5      R                  SS5      $ r   r   rp   r+   r)   r@   r      r   r+   r   r   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ r\   r   )r=   r>   r'   r9   r.   s      r)   r@   r      s0    q1557{a!eA{{}5L'L%MPW%Wr+   Fa2U0*3?r   )	r   r7   r   rf   r   r   r   r   r   r9   r.   s   @@r)   bceloss_weights_no_reduce_testr      s    R5<<8;;A>AA%,,OPAjj5<<0G,#Z[x G(qWEWll r+   c                  <  ^ ^ [         R                  " S5      R                  S5      R                  [         R                  5      m [         R
                  " S[         R                  S9m[        S[        U U4S j5      SST TS.S	 U U4S
 jS[         R                  S9$ )Nrp   r   r    BCELoss_weights_no_reduce_scalarc                 n   > [         R                  " U TR                  U 5      TR                  U 5      SS9$ r   r   r   s    r)   r@   7bceloss_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                  N    [         R                  " S5      R                  SS5      $ r   r   rp   r+   r)   r@   r      r   r+   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ r\   r   r=   r?   r9   r.   s     r)   r@   r     s/    Q[AEa!e[[]3J%J#Kg#Ur+   F)r   r   r   r   r   rF   r   rI   )r7   r   r   r   rf   r   r   r   r   s   @@r)   %bceloss_weights_no_reduce_scalar_testr      s    B1  .Ajj5<<0G3#Z[k )qWEBUll r+   c                  2  ^ ^ [        [        R                  " SS5      R                  S5      R	                  [        R
                  5      5      m[        R                  " 5       m [        S[        U4S j5      SS STS	.U U4S
 jSS[        R
                  S9	$ )Nr   r1   r   BCEWithLogitsLoss_legacy_enumc                 N   > [         R                  " U TR                  U 5      SS9$ )NF)r   r    binary_cross_entropy_with_logitsr   r   s    r)   r@   4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  s    a88AIIaLQVWr+   F::binary_cross_entropy_with_logits(
            i, t.to(i.options()), F::BinaryCrossEntropyWithLogitsFuncOptions().reduction(torch::kNone))c                  P    [         R                  " SS5      R                  SS5      $ r   r   rp   r+   r)   r@   r     r   r+   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ r\   r   r=   r?   sigmoidr9   s     r)   r@   r     8    Q)9%9QUq7ST:~FZFZF\<\%\#]r+   F	r   r   r   r   r   rF   rb   r   rI   
r   r7   r   r   r   rf   r}   Sigmoidr   r   r   r9   s   @@r)   "bce_with_logistic_legacy_enum_testr     sz    R$''*--ell;<AjjlG0#WYkF(q1]ll r+   c                  2  ^ ^ [        [        R                  " SS5      R                  S5      R	                  [        R
                  5      5      m[        R                  " 5       m [        S[        U4S j5      SS STS	.U U4S
 jSS[        R
                  S9	$ )Nr   r1   r   BCEWithLogitsLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   r   s    r)   r@   2bce_with_logistic_no_reduce_test.<locals>.<lambda>      a88AIIaLTZ[r+   r   c                  P    [         R                  " SS5      R                  SS5      $ r   r   rp   r+   r)   r@   r   "  r   r+   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ r\   r   r   s     r)   r@   r   $  r   r+   Fr   r   r   s   @@r)    bce_with_logistic_no_reduce_testr     sz    R$''*--ell;<AjjlG.#[]kF(q1]ll r+   c                    ^ ^ [         R                  " S5      R                  S5      R                  [         R                  5      m[
        R                  " 5       m [        S[        U4S j5      SS STS.U U4S	 jS
S
[         R                  S9	$ )Nrp   r   "BCEWithLogitsLoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r   r   s    r)   r@   9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>1  r   r+   r   c                  N    [         R                  " S5      R                  SS5      $ r   r   rp   r+   r)   r@   r   4  r   r+   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ r\   r   r   s     r)   r@   r   6  r   r+   Fr   )	r7   r   r   r   rf   r}   r   r   r   r   s   @@r)   'bce_with_logistic_no_reduce_scalar_testr   +  sr    B1  .AjjlG5#[]kB(q1]ll r+   c                     ^  [         R                  " SS[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nr1   r   KLDivLoss_with_target_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   kl_divr   r   s    r)   r@   6kldivloss_with_target_no_reduce_test.<locals>.<lambda>B      ahhq!))A,&Ar+   NF::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone))c                  L    [         R                  " SS5      R                  5       $ r   r7   r   r   rp   r+   r)   r@   r   D      B+//1r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ N	KLDivLossr   r   loss_reference_fnsr   r   s     r)   r@   r   F      {+Aqyy|vNr+   TF	r   r   r   r   r   rF   supports_forward_adr   rI   r7   r   rf   r   r   r   s   @r)   $kldivloss_with_target_no_reduce_testr  =  sV    

2r.A2#ACj1(q1O ll$ $r+   c                     ^  [         R                  " SS[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nr1   r   KLDivLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   r   s    r)   r@   *kldivloss_no_reduce_test.<locals>.<lambda>R  r   r+   r   c                  L    [         R                  " SS5      R                  5       $ r   r  rp   r+   r)   r@   r  T  r  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r)   r@   r  V  r	  r+   TFr
  r  r   s   @r)   kldivloss_no_reduce_testr  M  sV    

2r.A&#ACj1(q1O ll r+   c                     ^  [         R                  " S[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nrp   r   KLDivLoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r   r   s    r)   r@   1kldivloss_no_reduce_scalar_test.<locals>.<lambda>c  r   r+   r   c                  J    [         R                  " S5      R                  5       $ Nrp   r  rp   r+   r)   r@   r  e      B++-r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r)   r@   r  g  r	  r+   TFr
  r  r   s   @r)   kldivloss_no_reduce_scalar_testr  ^  sT    

2U\\*A-#ACj-(q1O ll$ $r+   c                     ^  [         R                  " SS[         R                  S9R                  5       m [	        S[        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nr1   r   #KLDivLoss_with_log_target_no_reducec                 P   > [         R                  " U TR                  U 5      SSS9$ Nr   T)r    
log_targetr   r   s    r)   r@   :kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>s      ahhq!))A,&TRr+   _F::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone).log_target(true))c                  L    [         R                  " SS5      R                  5       $ r   r  rp   r+   r)   r@   r#  u  r  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ NKLDivLoss_log_targetr   r   r  r   s     r)   r@   r#  w      56q!))A,RXYr+   TFr
  r7   r   rf   r   r   r   r   s   @r)   (kldivloss_with_log_target_no_reduce_testr,  n  s_    

2r.224A6#RT{1(q1Z ll$ $r+   c                     ^  [         R                  " SS[         R                  S9R                  5       m [	        S[        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nr1   r   KLDivLoss_no_reduce_log_targetc                 P   > [         R                  " U TR                  U 5      SSS9$ r!  r   r   s    r)   r@   5kldivloss_no_reduce_log_target_test.<locals>.<lambda>  r$  r+   r%  c                  L    [         R                  " SS5      R                  5       $ r   r  rp   r+   r)   r@   r0    r  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r(  r  r   s     r)   r@   r0    r*  r+   TFr
  r+  r   s   @r)   #kldivloss_no_reduce_log_target_testr3  ~  s_    

2r.224A1#RT{1(q1Z ll r+   c                     ^  [         R                  " S[         R                  S9R                  5       m [	        S[        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nrp   r   %KLDivLoss_no_reduce_scalar_log_targetc                 P   > [         R                  " U TR                  U 5      SSS9$ r!  r   r   s    r)   r@   <kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r$  r+   r%  c                  J    [         R                  " S5      R                  5       $ r  r  rp   r+   r)   r@   r7    r  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r(  r  r   s     r)   r@   r7    r*  r+   TFr
  r+  r   s   @r)   *kldivloss_no_reduce_scalar_log_target_testr:    s]    

2U\\*..0A8#RT{-(q1Z ll$ $r+   c                     ^  [         R                  " SSS[         R                  S9m [        S[	        U 4S j5      SS S	T S
.U 4S jSS[         R                  S9	$ )NrQ   rZ   r3   r   L1Loss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   l1_lossr   r   s    r)   r@   'l1loss_no_reduce_test.<locals>.<lambda>      aii199Q<6Br+   PF::l1_loss(i, t.to(i.options()), F::L1LossFuncOptions().reduction(torch::kNone))c                  2    [         R                  " SSS5      $ NrQ   rZ   r3   r7   r   rp   r+   r)   r@   r@        Q1-r+   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ ro   r   absr   s     r)   r@   r@        A		!$4#9#9#;r+   TFr
  r7   r   rf   r   r   r   s   @r)   l1loss_no_reduce_testrL    sU    Aq!5<<0A##BDl-(q1; ll
$ 
$r+   c                     ^  [         R                  " SSS[         R                  S9m [        S[	        U 4S j5      SS S	T S
.U 4S jSSS9$ )NrQ   rZ   r3   r   L1Loss_no_reduce_complexc                 N   > [         R                  " U TR                  U 5      SS9$ r   r>  r   s    r)   r@   /l1loss_no_reduce_complex_test.<locals>.<lambda>  rA  r+   rB  c                  L    [         R                  " SSS[         R                  S9$ )NrQ   rZ   r3   r   )r7   r   cdoublerp   r+   r)   r@   rP    s    Q1EMMBr+   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ ro   rH  r   s     r)   r@   rP    rJ  r+   TF)r   r   r   r   r   rF   r  r   )r7   r   rR  r   r   r   s   @r)   l1loss_no_reduce_complex_testrT    sN    Aq!5==1A+#BDlB(q1; 	 	r+   c                     ^  [         R                  " S[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nrp   r   L1Loss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r>  r   s    r)   r@   .l1loss_no_reduce_scalar_test.<locals>.<lambda>  rA  r+   rB  c                  .    [         R                  " S5      $ r  rE  rp   r+   r)   r@   rX        Rr+   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ ro   rH  r   s     r)   r@   rX    rJ  r+   TFr
  rK  r   s   @r)   l1loss_no_reduce_scalar_testr\    sQ    Bell+A*#BDl((q1; ll
$ 
$r+   c                     ^ Sn [         R                  " U S[         R                  06m[        S[	        U4S j5      SU STS.U4S jS	S
[         R                  S9	$ )NrY   r   MSELoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   mse_lossr   r=   targets    r)   r@   (mseloss_no_reduce_test.<locals>.<lambda>      ajjFNN1$5Hr+   WF::mse_loss(i, target.to(i.options()), F::MSELossFuncOptions().reduction(torch::kNone))r   rb  c                 ,   > U T-
  R                  S5      $ NrQ   powr=   r?   rc  s     r)   r@   rd        AJ#3#3A#6r+   TF	r   r   r   rE   r   rF   r  r   rI   rK  rE   rc  s    @r)   mseloss_no_reduce_testro    sY    J[[*9ELL9F$#HJs(F;6 ll
$ 
$r+   c                     ^ Sn [         R                  " U [         R                  S9m[        S[	        U4S j5      SU STS.U4S jS	S
[         R                  S9	$ )Nrp   r   MSELoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r`  rb  s    r)   r@   /mseloss_no_reduce_scalar_test.<locals>.<lambda>  re  r+   rf  r   rb  c                 ,   > U T-
  R                  S5      $ rh  ri  rk  s     r)   r@   rs    rl  r+   TFrm  rK  rn  s    @r)   mseloss_no_reduce_scalar_testru    sV    J[[5<<8F+#HJs(F;6 ll
$ 
$r+   c                  (  ^ ^ [        [        R                  " S5      R                  5       R	                  S5      R                  5       R                  5       5      mSS0m [        S[        U U4S j5      SS S	TS
.U U4S jS[        R                  S9$ )Nr   r1   r    r   NLLLoss_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ Nr    r   r   nll_lossr   longr=   rt   r9   s    r)   r@   (nllloss_no_reduce_test.<locals>.<lambda>  (    ajjAIIaL$5$5$76+CVWr+   pF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().reduction(torch::kNone))c                  L    [         R                  " SS5      R                  5       $ Nr   r1   r  rp   r+   r)   r@   r~    r  r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ NNLLLossr  r   r|  r=   r?   rt   r9   s     r)   r@   r~    (    y)!QYYq\->->-@KFKr+   Fr   
r   r7   emptyuniform_r   floorr|  r   r   rf   rt   r9   s   @@r)   nllloss_no_reduce_testr    s    R))+//399;@@BCA6"F$#WYg1(q1Lll$ $r+   c                  *  ^ ^ [        [        R                  " S5      R                  5       R	                  S5      R                  5       R                  5       5      mSSS.m [        S[        U U4S j5      SS	 S
TS.U U4S jS[        R                  S9$ )Nr   r1   rQ   r   ignore_indexr    NLLLoss_no_reduce_ignore_indexc           	         > [         R                  " U TR                  U 5      R                  5       [	        TS   5      [        TS   5      S9$ Nr  r    r  r   r{  r   r|  intstrr}  s    r)   r@   5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  >    ajjAIIaL$5$5$7c&Q_J`Fa+.vk/B+CEr+   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(2).reduction(torch::kNone))c                  L    [         R                  " SS5      R                  5       $ r  r  rp   r+   r)   r@   r    r  r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ r  r  r  s     r)   r@   r    r  r+   Fr   r  r  s   @@r)   #nllloss_no_reduce_ignore_index_testr    s    R))+//399;@@BCA:;&)QF1#EFw1(q1Lll$ $r+   c                  \  ^ ^^ [        [        R                  " S5      R                  5       R	                  S5      R                  5       R                  5       5      m[        R                  " S5      mU4S jm [        S[        U U4S j5      SS STTS	.U U4S
 jS[        R                  S9$ )Nr   r1   c                 ,   > TR                  U 5      SS.$ r   r   r=   r-   s    r)   rt   .nllloss_no_reduce_weights_test.<locals>.kwargs       ..+&AAr+   NLLLoss_no_reduce_weightsc                 z   > [         R                  " U TR                  U 5      R                  5       40 T" U 5      D6$ ro   rz  r}  s    r)   r@   0nllloss_no_reduce_weights_test.<locals>.<lambda>  *    ajjAIIaL$5$5$7E6!9Er+   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone))c                  j    [         R                  " SS5      R                  S5      R                  5       $ Nr   r1   {Gz?r7   r   addr   rp   r+   r)   r@   r    #    B+//599;r+   r   r=   r9   r-   c                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r)   r@   r    ,    y)!QYYq\->->-@NF1INr+   Fr   r   r7   r  r  r   r  r|  r   r   r   rf   rt   r9   r-   s   @@@r)   nllloss_no_reduce_weights_testr    s    R))+//399;@@BCAZZ^FB ,#EG_ <(qFCOll$ $r+   c                  \  ^ ^^ [        [        R                  " S5      R                  5       R	                  S5      R                  5       R                  5       5      m[        R                  " S5      mU4S jm [        S[        U U4S j5      SS STTS	.U U4S
 jS[        R                  S9$ )Nr   r1   c                 .   > TR                  U 5      SSS.$ )Nr   rQ   r-   r    r  r  r  s    r)   rt   ;nllloss_no_reduce_weights_ignore_index_test.<locals>.kwargs(  s     ..+& !# 	#r+   &NLLLoss_no_reduce_weights_ignore_indexc                    > [         R                  " U TR                  U 5      R                  5       40 T" U R                  5      D6$ ro   )r   r{  r   r|  datar}  s    r)   r@   =nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>/  s.    ajjAIIaL$5$5$7J6!&&>Jr+   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                  j    [         R                  " SS5      R                  S5      R                  5       $ r  r  rp   r+   r)   r@   r  3  r  r+   r   r  c                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r)   r@   r  5  r  r+   Fr   r  r  s   @@@r)   +nllloss_no_reduce_weights_ignore_index_testr  $  s    R))+//399;@@BCAZZ^F# 9#JLo <(qFCOll$ $r+   c                    ^ ^^ [        [        R                  " S5      R                  5       R	                  S5      R                  5       R                  5       5      m[        R                  " S5      mU4S jm [        S[        U U4S j5      S[        R                  " SS[        R                  S9R                  S5      R                  5       S	TTS
.U U4S jS[        R                  S9$ )Nr   r1   c                 .   > TR                  U 5      SSS.$ )Nr   r6   r  r  r  s    r)   rt   ?nllloss_no_reduce_weights_ignore_index_neg_test.<locals>.kwargs?  s     ..+& "$ 	$r+   *NLLLoss_no_reduce_weights_ignore_index_negc                 z   > [         R                  " U TR                  U 5      R                  5       40 T" U 5      D6$ ro   rz  r}  s    r)   r@   Anllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>F  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                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r)   r@   r  L  r  r+   F)r   r   r   inputr   rF   r   rI   )r   r7   r  r  r   r  r|  r   r   r   rf   r  r   r  s   @@@r)   /nllloss_no_reduce_weights_ignore_index_neg_testr  ;  s    R))+//399;@@BCAZZ^F$ =#EGp jjRu||488>BBD(qFCOll$ $r+   c                    ^ ^ [        [        R                  " SSS5      R                  S5      R	                  5       R                  5       5      mSS0m [        S[        U U4S j5      SS	 S
TS.U U4S jS[        R                  S9$ )NrQ   rU   rZ   r    r   NLLLoss2d_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ ry  rz  r}  s    r)   r@   *nllloss2d_no_reduce_test.<locals>.<lambda>X  r  r+   r  c                  P    [         R                  " SSSS5      R                  5       $ NrQ   rZ   rU   r  rp   r+   r)   r@   r  [      Aq!Q/335r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ N	NLLLossNdr  r  s     r)   r@   r  ]  (    {+Aqyy|/@/@/BMfMr+   Fr   	r   r7   r   r   r  r|  r   r   rf   r  s   @@r)   nllloss2d_no_reduce_testr  R  s~    Aq!$((+11388:;A6"F&#WYg5(q1Nll$ $r+   c                    ^ ^ [        [        R                  " SSS5      R                  S5      R	                  5       R                  5       5      mSSS.m [        S[        U U4S j5      S	S
 STS.U U4S jS[        R                  S9$ )NrQ   rU   rZ   r5   r   r   NLLLoss2d_no_reduce_ignore_indexc           	         > [         R                  " U TR                  U 5      R                  5       [	        TS   5      [        TS   5      S9$ r  r  r}  s    r)   r@   7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>i  r  r+   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(1).reduction(torch::kNone))c                  P    [         R                  " SSSS5      R                  5       $ r  r  rp   r+   r)   r@   r  m  r  r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ r  r  r  s     r)   r@   r  o  r  r+   Fr   r  r  s   @@r)   %nllloss2d_no_reduce_ignore_index_testr  c  s    Aq!$((+11388:;A:;&)QF3#EFw5(q1Nll$ $r+   c                  D  ^ ^^ [        [        R                  " SSS5      R                  S5      R	                  5       R                  5       5      m[        R                  " S5      mU4S jm [        S[        U U4S j5      SS S	TTS
.U U4S jS[        R                  S9$ )NrQ   rU   rZ   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r)   rt   0nllloss2d_no_reduce_weights_test.<locals>.kwargsy  r  r+   NLLLoss2d_no_reduce_weightsc                 z   > [         R                  " U TR                  U 5      R                  5       40 T" U 5      D6$ ro   rz  r}  s    r)   r@   2nllloss2d_no_reduce_weights_test.<locals>.<lambda>  r  r+   r  c                  P    [         R                  " SSSS5      R                  5       $ r  r  rp   r+   r)   r@   r    r  r+   r   r  c                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r)   r@   r    ,    {+Aqyy|/@/@/BPfQiPr+   Fr   r  r  s   @@@r)    nllloss2d_no_reduce_weights_testr  u  s    Aq!$((+11388:;AZZ]FB .#EG_ 6(qFCQll$ $r+   c                    ^ ^ [        [        R                  " SSSSS5      R                  S5      R	                  5       R                  5       5      mSS0m [        S[        U U4S j5      SS	 S
TS.U U4S jS[        R                  S9$ )NrQ   rU   rZ   r    r   NLLLossNd_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ ry  rz  r}  s    r)   r@   *nlllossNd_no_reduce_test.<locals>.<lambda>  r  r+   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  rp   r+   r)   r@   r         Aq!Q1599;r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ r  r  r  s     r)   r@   r    r  r+   Fr   r  r  s   @@r)   nlllossNd_no_reduce_testr    s    Aq!Q*..q1779>>@AA6"F&#WYg;(q1Nll$ $r+   c                    ^ ^ [        [        R                  " SSSSS5      R                  S5      R	                  5       R                  5       5      mSSS.m [        S[        U U4S j5      S	S
 STS.U U4S jS[        R                  S9$ )NrQ   rU   rZ   r5   r   r   NLLLossNd_no_reduce_ignore_indexc           	         > [         R                  " U TR                  U 5      R                  5       [	        TS   5      [        TS   5      S9$ r  r  r}  s    r)   r@   7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r+   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  rp   r+   r)   r@   r    r  r+   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ r  r  r  s     r)   r@   r    r  r+   Fr   r  r  s   @@r)   %nlllossNd_no_reduce_ignore_index_testr    s    Aq!Q*..q1779>>@AA:;&)QF3#EFw;(q1Nll$ $r+   c                  H  ^ ^^ [        [        R                  " SSSSS5      R                  S5      R	                  5       R                  5       5      m[        R                  " S5      mU4S jm [        S[        U U4S j5      SS S	TTS
.U U4S jS[        R                  S9$ )NrQ   rU   rZ   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r)   rt   0nlllossNd_no_reduce_weights_test.<locals>.kwargs  r  r+   NLLLossNd_no_reduce_weightsc                 z   > [         R                  " U TR                  U 5      R                  5       40 T" U 5      D6$ ro   rz  r}  s    r)   r@   2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r+   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  rp   r+   r)   r@   r    r  r+   r   r  c                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r)   r@   r    r  r+   Fr   r  r  s   @@@r)    nlllossNd_no_reduce_weights_testr    s    Aq!Q*..q1779>>@AAZZ]FB .#EG_ <(qFCQll$ $r+   c                     ^  [         R                  " SSS[         R                  S9m [        S[	        U 4S j5      SS S	T S
.U 4S jSS[         R                  S9	$ )NrQ   rZ   r3   r   SmoothL1Loss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   smooth_l1_lossr   r   s    r)   r@   -smoothl1loss_no_reduce_test.<locals>.<lambda>      a&&q!))A,&Ir+   jF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone))c                  2    [         R                  " SSS5      $ rD  rE  rp   r+   r)   r@   r    rF  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ NSmoothL1Lossr   r   r  r   s     r)   r@   r        ~.q!))A,&Qr+   TFr
  rK  r   s   @r)   smoothl1loss_no_reduce_testr    s[    Aq!5<<0A)#IK[-(q1R ll$ $r+   c                     ^  [         R                  " S[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nrp   r   SmoothL1Loss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r  r   s    r)   r@   4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  r  r+   r  c                  .    [         R                  " S5      $ r  rE  rp   r+   r)   r@   r    rZ  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r	  r  r   s     r)   r@   r    r  r+   TFr
  rK  r   s   @r)   "smoothl1loss_no_reduce_scalar_testr    sW    Bell+A0#IK[((q1R ll$ $r+   c                     ^  [         R                  " SSS[         R                  S9m [        S[	        U 4S j5      SS S	T S
.U 4S jSS[         R                  S9	$ )NrQ   rZ   r3   r   SmoothL1Loss_betac                 P   > [         R                  " U TR                  U 5      SSS9$ )Nr         ?r    betar  r   s    r)   r@   (smoothl1loss_beta_test.<locals>.<lambda>  s    a&&q!))A,&sSr+   zoF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0.5)c                  2    [         R                  " SSS5      $ rD  rE  rp   r+   r)   r@   r    rF  r+   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )Nr
  r   r  r  r  r   s     r)   r@   r    s    ~.q!))A,&WZ[r+   TFr
  rK  r   s   @r)   smoothl1loss_beta_testr    s[    Aq!5<<0A$#SU`-(q1\ ll$ $r+   c                     ^  [         R                  " SSS[         R                  S9m [        S[	        U 4S j5      SS S	T S
.U 4S jSS[         R                  S9	$ )NrQ   rZ   r3   r   SmoothL1Loss_zero_betac                 P   > [         R                  " U TR                  U 5      SSS9$ )Nr   r   r  r  r   s    r)   r@   -smoothl1loss_zero_beta_test.<locals>.<lambda>  s    a&&q!))A,&qQr+   zmF::smooth_l1_loss(
            i, t.to(i.options()), F::SmoothL1LossFuncOptions().reduction(torch::kNone), 0)c                  2    [         R                  " SSS5      $ rD  rE  rp   r+   r)   r@   r!    rF  r+   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )Nr
  r   r   r  r  r   s     r)   r@   r!    s    ~.q!))A,&WXYr+   TFr
  rK  r   s   @r)   smoothl1loss_zero_beta_testr$    s[    Aq!5<<0A)#QS^-(q1Z ll$ $r+   c                     ^  [         R                  " SSS5      m [        S[        U 4S j5      SS ST S	.U 4S
 jSS[         R                  S9	$ )NrQ   rZ   r3   HuberLoss_deltac                 P   > [         R                  " U TR                  U 5      SSS9$ )Nr   r  r    delta)r   
huber_lossr   r   s    r)   r@   &huberloss_delta_test.<locals>.<lambda>  s    all1aiilfCPr+   znF::huber_loss(
            i, t.to(i.options()), F::HuberLossFuncOptions().reduction(torch::kNone).delta(0.5))c                  2    [         R                  " SSS5      $ rD  rE  rp   r+   r)   r@   r+    rF  r+   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )N	HuberLossr   r  r(  r  r   s     r)   r@   r+    s    {+Aqyy|vUXYr+   TFr
  r   r   s   @r)   huberloss_delta_testr/    sU    Aq!A"#PRc-(q1Z ll$ $r+   c                     ^  [         R                  " S5      R                  5       m [        S[	        U 4S j5      SS ST S.U 4S jS	S
S
S9	$ )Nrp   !MultiLabelMarginLoss_0d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multilabel_margin_lossr   r|  r   s    r)   r@   8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  &    a..q!))A,2C2C2EQWXr+   F::multilabel_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultilabelMarginLossFuncOptions().reduction(torch::kNone))c                  .    [         R                  " S5      $ r  rE  rp   r+   r)   r@   r5  !  rZ  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiLabelMarginLossr   r   r  r  r   r|  r   s     r)   r@   r5  #  ,    56q!&&..:K:P:P:R^der+   TF)	r   r   r   r   r   rF   check_sum_reductionrb   r   )r7   zerosr|  r   r   r   s   @r)   &multilabelmarginloss_0d_no_reduce_testr@    sU    BA4#XZt((q1f  r+   c                    ^  [        [        R                  " S5      R                  S5      R	                  5       R                  5       5      m [        S[        U 4S j5      SS ST S.U 4S jS	S
S
[        R                  S9
$ )Nr1   !MultiLabelMarginLoss_1d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r3  r   s    r)   r@   8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>/  r6  r+   r7  c                  .    [         R                  " S5      $ r   rE  rp   r+   r)   r@   rD  2  rZ  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r:  r<  r   s     r)   r@   rD  4  r=  r+   TF
r   r   r   r   r   rF   r>  rb   r   rI   r  r   s   @r)   &multilabelmarginloss_1d_no_reduce_testrH  *  su    B##B'--/4467A4#XZt((q1f ll$ $r+   c                  H  ^  [        [        R                  " [        R                  " SS5      R	                  S5      R                  S5      R                  5       R                  5       SS95      m [        S[        U 4S j5      S	S
 ST S.U 4S jSSS[        R                  S9
$ )NrU   r1   g         r6   minMultiLabelMarginLoss_index_negc                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r3  r   s    r)   r@   5multilabelmarginloss_index_neg_test.<locals>.<lambda>A  r6  r+   r7  c                  0    [         R                  " SS5      $ NrU   r1   rE  rp   r+   r)   r@   rO  D      Q+r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r:  r<  r   s     r)   r@   rO  F  r=  r+   TFrG  )r   r7   clampr   r  r   r  r|  r   r   rf   r   s   @r)   #multilabelmarginloss_index_neg_testrU  <  s    UZZ2.2237;;B?EEGLLNTVWXA1#XZt+(q1f ll$ $r+   c                    ^  [        [        R                  " SS5      R                  S5      R	                  5       R                  5       5      m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[        R                  S9
$ )NrU   r1   MultiLabelMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r3  r   s    r)   r@   5multilabelmarginloss_no_reduce_test.<locals>.<lambda>S  r6  r+   r7  c                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   rY  V  rR  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r:  r<  r   s     r)   r@   rY  X  r=  r+   TFrG  r  r   s   @r)   #multilabelmarginloss_no_reduce_testr\  N  sx    Ar"&&r*002779:A1#XZt+(q1f ll$ $r+   c                  >  ^  [        [        R                  " S5      R                  S5      R	                  [        R
                  5      R                  S5      R                  S5      5      m [        S[        U 4S j5      SS S	T S
.U 4S jSS[        R
                  S9	$ )Nr1   r   rQ   r5   HingeEmbeddingLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   hinge_embedding_lossr   r   s    r)   r@   3hingeembeddingloss_no_reduce_test.<locals>.<lambda>e  r   r+   zvF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().reduction(torch::kNone))c                  .    [         R                  " S5      $ r   rE  rp   r+   r)   r@   rb  h  rZ  r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NHingeEmbeddingLossr   r   r  r   s     r)   r@   rb  j  s    34Q		!PVWr+   TF	r   r   r   r   r   rF   r>  r   rI   
r   r7   r   r   r   rf   mul_subr   r   r   s   @r)   !hingeembeddingloss_no_reduce_testrj  `  s    R##A&))%,,7<<Q?CCAFGA/#OQa((q1X ll$ $r+   c                  >  ^  [        [        R                  " S5      R                  S5      R	                  [        R
                  5      R                  S5      R                  S5      5      m [        S[        U 4S j5      SS S	T S
.U 4S jSS[        R
                  S9	$ )Nr1   r   rQ   r5   #HingeEmbeddingLoss_margin_no_reducec                 P   > [         R                  " U TR                  U 5      SSS9$ Nr  r   marginr    r`  r   s    r)   r@   :hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>v  s    a,,Q		!STZ[r+   zF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().margin(0.5).reduction(torch::kNone))c                  .    [         R                  " S5      $ r   rE  rp   r+   r)   r@   rq  y  rZ  r+   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )Nre  r  r   ro  r  r   s     r)   r@   rq  {  s     34Q		!S\bcr+   TFrf  rg  r   s   @r)   (hingeembeddingloss_margin_no_reduce_testrt  q  s    R##A&))%,,7<<Q?CCAFGA6#[]m((q1d ll$ $r+   c                     ^  [         R                  " SS[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )NrU   r   SoftMarginLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   )r   soft_margin_lossr   r   s    r)   r@   /softmarginloss_no_reduce_test.<locals>.<lambda>  r   r+   znF::soft_margin_loss(
            i, t.to(i.options()), F::SoftMarginLossFuncOptions().reduction(torch::kNone))c                  0    [         R                  " SS5      $ )NrU   rE  rp   r+   r)   r@   ry    s    Q*r+   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NSoftMarginLossr   r   r  r   s     r)   r@   ry    s    /0AIIaLFSr+   TFr
  rK  r   s   @r)   softmarginloss_no_reduce_testr}    sY    Aq-A+#KM]*(q1T ll$ $r+   c                     ^  [         R                  " SS5      R                  S5      R                  5       m [	        S[        U 4S j5      SS ST S	.U 4S
 jSS[         R                  S9	$ )NrU   r1   rQ   "MultiLabelSoftMarginLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ r   r   multilabel_soft_margin_lossr   r   s    r)   r@   9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  s    a33Aqyy|vVr+   zF::multilabel_soft_margin_loss(
            i, t.to(i.options()), F::MultilabelSoftMarginLossFuncOptions().reduction(torch::kNone))c                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   r    rR  r+   r   r   c                    > TU R                  5       R                  5       -  ST-
  U * R                  5       R                  5       -  -   * R                  SS9U R                  S5      -  $ Nr5   dimr   r   sumrg   r   s     r)   r@   r    s[    199;??$$A1"1C1C1E'EEFKKPQKRUVU[U[\]U^^r+   Fr   r7   r   r   r  r   r   rf   r   s   @r)   'multilabelsoftmarginloss_no_reduce_testr    sg    

1ba &&(A5#VXg+(q1_ll$ $r+   c                  
  ^ ^ [         R                  " SS5      R                  S5      R                  5       m [         R                  " S5      m[	        S[        U U4S j5      SS ST TS	.U U4S
 jSSS[         R                  S9
$ )NrU   r1   rQ   *MultiLabelSoftMarginLoss_weights_no_reducec                 n   > [         R                  " U TR                  U 5      TR                  U 5      SS9$ r   r  r   s    r)   r@   Amultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  s,    a33Aqyy|;B??1;MY_ar+   zF::multilabel_soft_margin_loss(
            i, t.to(i.options()),
            F::MultilabelSoftMarginLossFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))c                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   r    rR  r+   r   r   c                    > TU R                  5       R                  5       -  ST-
  U * R                  5       R                  5       -  -   * T-  R                  SS9U R                  S5      -  $ r  r  r   s     r)   r@   r    s`    199;??$$A1"1C1C1E'EEFPUUZ[U\_`_e_efg_hhr+   TFrG  r  r   s   @@r)   /multilabelsoftmarginloss_weights_no_reduce_testr    s~    

1ba &&(AjjnG=#abq ,(qWEi ll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  5       R	                  5       m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[         R                  S9
$ )NrU   r2   MultiMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multi_margin_lossr   r|  r   s    r)   r@   0multimarginloss_no_reduce_test.<locals>.<lambda>  %    a))!QYYq\->->-@FSr+   F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().reduction(torch::kNone))c                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   r    rR  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiMarginLossr   r   r<  r   s     r)   r@   r    ,    01!QVV^^A5F5K5K5MY_`r+   TFrG  r7   r   r   r  r|  r   r   rf   r   s   @r)   multimarginloss_no_reduce_testr    sp    

1!""$))+A,#SUo+(q1a ll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  5       R	                  5       m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[         R                  S9
$ )Nr5   r2   MultiMarginLoss_1d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r  r   s    r)   r@   3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  r  r+   r  c                  .    [         R                  " S5      $ r   rE  rp   r+   r)   r@   r    rZ  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r<  r   s     r)   r@   r    r  r+   TFrG  r  r   s   @r)   !multimarginloss_1d_no_reduce_testr    sp    

1!""$))+A/#SUo((q1a ll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  5       R	                  5       m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[         R                  S9
$ )Nrp   r2   ,multimarginloss_1d_input_0d_target_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r  r   s    r)   r@   Cmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  r  r+   r  c                  .    [         R                  " S5      $ r   rE  rp   r+   r)   r@   r    rZ  r+   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r<  r   s     r)   r@   r    r  r+   TFrG  r  r   s   @r)   1multimarginloss_1d_input_0d_target_no_reduce_testr    sp    

21##%**,A?#SUo((q1a ll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  5       R	                  5       m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[         R                  S9
$ )NrU   r2   MultiMarginLoss_p_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ )NrQ   r   r>   r    r  r   s    r)   r@   2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s(    a))!QYYq\->->-@AQWXr+   zF::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().p(2).reduction(torch::kNone))c                  P    [         R                  " SS5      R                  SS5      $ )NrU   r1   r  gGz?)r7   r   r   rp   r+   r)   r@   r    s    Q+224Br+   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       SSS9$ )Nr  rQ   r   r  r<  r   s     r)   r@   r    s/    01!QVV^^A5F5K5K5MQR^der+   TFrG  r  r   s   @r)    multimarginloss_p_no_reduce_testr    sp    

1!""$))+A.#XZtB(q1f ll$ $r+   c                     ^  [         R                  " S5      R                  S5      R                  5       R	                  5       m [        S[        U 4S j5      SS ST S.U 4S	 jS
SS[         R                  S9
$ )NrU   r2    MultiMarginLoss_margin_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ rn  r  r   s    r)   r@   7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  s(    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                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   r  
  rR  r+   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       SSS9$ )Nr  r  r   ro  r<  r   s     r)   r@   r    s1    01!QVV^^A5F5K5K5M9<Pr+   TFrG  r  r   s   @r)   %multimarginloss_margin_no_reduce_testr    st    

1!""$))+A3#_aT ,(q1P !ll$ $r+   c                  >  ^ ^ [         R                  " S5      R                  S5      R                  5       R	                  5       m [         R                  " S[         R
                  S9m[        S[        U U4S j5      SS S	T TS
.U U4S jSSS[         R
                  S9
$ )NrU   r2   r1   r   !MultiMarginLoss_weights_no_reducec                    > [         R                  " U TR                  U 5      R                  5       TR                  U 5      SS9$ r   r  r   s    r)   r@   8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  s4    a))!QYYq\->->-@YZI[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                  0    [         R                  " SS5      $ rQ  rE  rp   r+   r)   r@   r     rR  r+   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       TSS9$ )Nr  r   r   r<  r   s     r)   r@   r  "  s1    01!QVV^^A5F5K5K5M9@FTr+   TFrG  )r7   r   r   r  r|  rf   r   r   r   s   @@r)   &multimarginloss_weights_no_reduce_testr    s    

1!""$))+Ajj5<<0G4#<=h ,(qWET !ll!$ $r+   c                     S nU" U 5      n[        U[        R                  5      (       a  U/OUn[        5          U" U6 R	                  S5      sSSS5        $ ! , (       d  f       g= f)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                     [        U [        [        45      (       a!  U  Vs/ s H  oR                  S5      PM     sn$ U R                  S5      $ s  snf rL   
isinstancelisttuple	unsqueezeinpr9   s     r)   unsqueeze_inp0single_batch_reference_fn.<locals>.unsqueeze_inp1  B    cD%=)),/0CqKKNC00}}Q 1   Ar   N)r  r7   Tensorr   squeeze)r  
parametersmoduler  single_batch_inputs        r)   single_batch_reference_fnr  +  s[     
 'u-1;<NPUP\P\1]1],-cu		)*2215 
		s   A
A&c                  8   [         R                  " 5         / [        5       P[        5       P[	        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[        5       P[!        5       P[#        5       P[%        5       P['        5       P[)        5       P[+        5       P[-        5       P[/        5       P[1        5       P[3        5       P[5        5       P[7        5       P[9        5       P[;        5       P[=        5       P[?        5       P[A        5       P[C        5       P[E        5       P[G        5       P[I        5       P[K        5       P[M        5       P[O        5       P[Q        5       P[S        5       P[U        5       P[W        5       P[Y        5       P[[        5       P[]        5       P[_        5       P[a        5       P[c        5       P[e        5       P[g        5       P[i        SSSSSSS[j        Rl                  S9P[i        SSS	SSS
SS[j        Rl                  S9	P[i        SSSSSSSS[j        Rl                  S9	P[i        SSSSSSSS[j        Rl                  S9	P[i        SSSSSSSS[j        Rl                  S9	P[i        SSSSSSSS[j        Rl                  S9	P[i        SSSSSSSSS9P[i        SS SSSS[j        Rl                  S 9P[i        S!S" S#S$SSS[j        Rl                  S%9P[i        S&S' S(SSSS[j        Rl                  S%9P[i        S)S* S+SSSS[j        Rl                  S%9P[i        S,S- S.SSSS[j        Rl                  S%9P[i        S/S0 S1SSSS[j        Rl                  S%9P[i        S2S3 S4SS5SS[j        Rl                  S69P[i        S2S7S8S9SS:SS[j        Rl                  S9	P[i        S2S;S<S9SS=SS[j        Rl                  S9	P[i        S>S? S@SSASS[j        Rl                  S69P[i        SBSCSDSESSSS[j        Rl                  SF9	P[i        SBSGSHSISSJSSS[j        Rl                  SK9
P[i        SBSLSMSISSNSSS[j        Rl                  SK9
P[i        SBSOSPSQSS=SSS[j        Rl                  SK9
P[i        SBSRSSSTSS:SSSU[j        Rl                  SK9
P[i        SBSCSDSVSSSSSW9P[i        SXSY SZS[SSSSU[j        Rl                  S\9	P[i        S]S^ SZS[SSSU[j        Rl                  S_9P[i        S`Sa SbScSSS[j        Rl                  S%9P[i        SdSe SfScSSS[j        Rl                  S%9P[i        SgSh SiScSSS[j        Rl                  S%9P[i        SjSkSlSSmSSS[j        Rl                  Sn9	P[i        SjSoSpSqSS=SSS[j        Rl                  SK9
P[i        SjSrSsSqSS:SSS[j        Rl                  SK9
P[i        StSu SvSwSSSS[j        Rl                  S\9	P[i        SxSy SzS{SS[j        Rl                  S 9P[i        S|S} S~S{SS[j        Rl                  S 9P[i        SS SS{SS[j        Rl                  S 9P[i        SS SS{SS[j        Rl                  S 9P[i        SS SSSS[j        Rl                  S 9P[i        SSSSSSSS[j        Rl                  SF9	P[i        SSSSSS:SSS[j        Rl                  SK9
P[i        SSSSSSSSS[j        Rl                  SK9
P[i        SSSSSS
SSS[j        Rl                  SK9
P[i        SSSSSSSSS[j        Rl                  SK9
P[i        SSSSSSSSS9P[i        SS SSSSSS[j        Rl                  S\9	P[i        SS SSSS[j        Rl                  S 9P[i        SS SSSS[j        Rl                  S 9P[i        SS SSSSS[j        Rl                  S%9P[i        SS SSSSS[j        Rl                  S%9P[i        SS SSSSS[j        Rl                  S%9P[i        SSSSSSS[j        Rl                  S9P[i        SSSSSS=SS[j        Rl                  S9	P[i        SSSS[j        Rl                  S9P[i        SSSS[n        S[j        Rl                  S9P[i        SSSS SSS9P[i        SSSS S[j        Rl                  [q        S5      S9P[i        SSSS SS[j        Rl                  [q        S5      S9P[i        SSSS SS[j        Rl                  S9P[i        SSSS SS[j        Rl                  S9P[i        SSSS SS[j        Rl                  S9P[i        SSSS SS[j        Rl                  S9P[i        SS SS S[j        Rl                  S9P[i        SS SS S[j        Rl                  S9P[i        SS SS S[j        Rl                  S9P[i        SS SS SSS9P[i        S SS SSSS9P[i        SSSS[j        Rl                  S9P[i        SSSS[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9SSSS[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9SSSSGS 9P[i        [s        [t        Rv                  GSS SS9SGSGSS[j        Rl                  S9P[i        [s        [t        Rv                  S GSSS9GSSGSS[j        Rl                  S9P[i        [s        [t        Rv                  SS GSSGS9GS	SGS
S[j        Rl                  S9P[i        [s        [t        Rv                  GSS GSSGS9GSGSGSS[j        Rl                  S9P[i        [s        [t        Rv                  S GSGSSGS9GSSGSS[j        Rl                  S9P[i        [s        [t        Rv                  SS GSSGS9GS	SGSSGS 9P[i        [s        [t        Rv                  SS GSSGS9GSSGSS[j        Rl                  S9P[i        [s        [t        Rv                  S GSGSSGS9GSSGSS[j        Rl                  S9P[i        [s        [t        Rv                  GSS SS9GSGSGSS[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9GSGSGSS[j        Rl                  S9P[i        [s        [t        Rv                  GSS SS9GSGSGSS[j        Rl                  S9P[i        [s        [t        Rv                  S GSSS9GS GSGS!S[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9GSGS"GS#SGS 9P[i        [s        [t        Rv                  SS GS$SGS9GS%GSGS&S[j        Rl                  S9P[i        [s        [t        Rv                  SS GS$SGS9GS%GS"GS'SGS 9P[i        [s        [t        Rv                  GS(S GS$SGS9GS)GS*GS+S[j        Rl                  S9P[i        [s        [t        Rv                  S GSGS$SGS9GS,GSGS-S[j        Rl                  S9P[i        [s        [t        Rv                  S GS.GS$SGS9GS/GSGS0S[j        Rl                  S9P[i        [s        [t        Rv                  S GS1GS$SGS9GS2GSGS3S[j        Rl                  S9P[i        [s        [t        Rv                  GS(S GS$SGS9GS4GSGS5S[j        Rl                  S9P[i        [s        [t        Rv                  S GS1GS$SGS9GS6GSGS7S[j        Rl                  S9P[i        [s        [t        Rv                  SS GS8SGS9GS9GSGS:S[j        Rl                  S9P[i        [s        [t        Rv                  SS GS8SGS9GS9GS"GS;SGS 9P[i        [s        [t        Rv                  GS(S GS8SGS9GS<GS*GS=S[j        Rl                  S9P[i        [s        [t        Rv                  S GSGS8SGS9GS>GSGS?S[j        Rl                  S9P[i        [s        [t        Rv                  S GS.GS8SGS9GS@GSGSAS[j        Rl                  S9P[i        [s        [t        Rv                  S GS1GS8SGS9GSBGSGSCS[j        Rl                  S9P[i        [s        [t        Rv                  GS(S GS8SGS9GSDGSGSES[j        Rl                  S9P[i        [s        [t        Rv                  S GS1GS8SGS9GSFGSGSGS[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9GSHGSIGSJS[j        Rl                  S9P[i        [s        [t        Rv                  SS SS9GSHGSKGSLSGS 9P[i        [s        [t        Rv                  GSMS SS9GSNGSOGSPS[j        Rl                  S9P[i        [s        [t        Rv                  S GSSS9GSQGSIGSRS[j        Rl                  S9P[i        [s        [t        Rv                  SS GSSSGS9GSTGSIGSUS[j        Rl                  S9P[i        [s        [t        Rv                  SS GSSSGS9GSTGSKGSVSGS 9P[i        [s        [t        Rv                  GSWS GSSSGS9GSXGSYGSZS[j        Rl                  S9P[i        [s        [t        Rv                  S GS[GSSSGS9GS\SGS]GS^S[j        Rl                  GS_9P[i        [s        [t        Rv                  GSWS GSSSGS9GS`GSYGSaS[j        Rl                  S9P[i        [s        [t        Rv                  S GS[GSSSGS9GSbGSOGScGS^S[j        Rl                  GS_9P[i        [s        [t        Rx                  GSdGSe9GSfGSgGShS[j        Rl                  S9P[i        [s        [t        Rx                  GSi[j        Rz                  GSj9GSkGSgGSlSS[j        Rl                  GSm9P[i        [s        [t        Rx                  GSiGSe9GSnGSoGSpS[j        Rl                  S9P[i        [s        [t        Rx                  GSiGSe9GSnGSqGSrS[j        Rl                  S9P[i        [s        [t        Rx                  GSi[j        Rz                  GSj9GSkGSqGSsSS[j        Rl                  GSm9P[i        [s        [t        Rx                  GStGSe9GSuGSvGSwSS[j        Rl                  GSx9P[i        [s        [t        Rx                  GSyGSe9GSzGSvGS{SS[j        Rl                  GSx9P[i        [s        [t        Rx                  GSdGSe9GSfGS|GS}SSGS~9P[i        [s        [t        R|                  GSdGSe9GSGSgGSS[j        Rl                  S9P[i        [s        [t        R|                  GSiGSe9GSGSoGSS[j        Rl                  S9P[i        [s        [t        R|                  GSiGSe9GSGSqGSS[j        Rl                  S9P[i        [s        [t        R|                  GStGSe9GSGSvGSS[j        Rl                  S9P[i        [s        [t        R|                  GSyGSe9GSGSvGSS[j        Rl                  S9P[i        [s        [t        R|                  GStGSe9GSGS|GSSGS 9P[i        GSGS GSGSSS[j        Rl                  GS9P[i        GSGS GSGSSS[j        Rl                  GS9P[i        GSGS GSGSS[n        S[j        Rl                  GS9P[i        GSGS GSGSSS[j        Rl                  GS9P[i        GSGS GSGSSS[j        Rl                  GS9P[i        GSGS GSGS[n        SS[j        Rl                  GS9P[i        GSGSGSGS|GSS[j        Rl                  GS9P[i        GSGS [j        Rl                  GS9P[i        GSGS GS[j        Rl                  GS9P[i        GSGS GS[j        Rl                  GS9P[i        GSGSGSGS GS[j        Rl                  GS9P[i        GSGS [n        S[j        Rl                  GS9P[i        GSGSGSGSGSSGSSS[j        Rl                  GS9
P[i        GSGSGSGSGS[t        R~                  4GSGSSGSS[        (       a  GSOS[j        Rl                  GS9	P[i        GSGSGSGS SGSSS[j        Rl                  GS9	P[i        GSGSGSGSGS[t        R~                  4GSGS SGSSS[j        Rl                  GS9	P[i        GSGSGSGSGSGSGS[t        R                  4GSGS SGSS[        (       a  SOGS[j        Rl                  GS9	P[i        GSGSGSGS GS SSS[j        Rl                  GS9	P[i        GSGSGSGS[n        S[j        Rl                  GS9P[i        GSGSGS[j        R                  " GSGS/5      4GS[n        S[j        Rl                  GS9P[i        GS/ GSQGSS4GSGSSSSSGSGS9	Pn [        / GSQ/ GSQSGS9 H  u  pGS H  nUGSy:X  a	  UGS:X  a  M  [        [        GSiUGSi-   5      5      nGSGSR                  [        [        U5      5      -   GS-   nGSGSU-  -   nGS[        GS U 5       5      -   nU R                  [i        GSU GS3GSGSyGSyGSUGSiGSiSU4	GSU GSU GSU GS3UUSU GS3SS[j        Rl                  GS9
5        M     M     / GSQn0 GSGS[j        Rl                  GS._GSGSGS10_GSSS[j        Rl                  GS._GSSS[j        Rl                  GS._GSS[j        Rl                  GS._GSGS[j        Rl                  0_GS GS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GSGS[j        Rl                  0_GS	GS[j        Rl                  0_GS
GS[j        Rl                  0_GS[j        Rl                  0GS[j        Rl                  0GS[j        Rl                  0GS[j        Rl                  0GS[j        Rl                  0GS[j        Rl                  0GS[j        Rl                  0GS.En	U HJ  n
[i        U
GS[n        SSGS9nU	R                  U
0 5      nUR                  U5        U R                  U5        ML     U $ (  NConv1d)r3   rU   rZ   z!torch::nn::Conv1dOptions(4, 5, 3))rQ   r3   r1   TrA   )rB   rC   rD   rE   cudnnrG   rH   rI   )r3   rU   rZ   rQ   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)stride)	rB   rC   rD   rE   r  rN   rG   rH   rI   )r3   rU   rZ   r5   r5   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)pad1r  )r3   rU   rU   r5   rQ   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)pad2)r3   r3   rZ   r5   r5   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r5   r3   r5   	pad1size1)r3   r3   rU   r5   rQ   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)	pad2size1)r   r3   r1   
zero_batch)rB   rC   rD   rE   r  rN   rG   rH   Conv1d_dilatedc                  0    [         R                  " SSSSS9$ )Nr3   rU   rZ   rQ   kernel_sizedilationr}   r  rp   r+   r)   r@   &get_new_module_tests.<locals>.<lambda>      		!QA Jr+   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r   r   rD   rE   rG   rH   rI   Conv1d_groupsc                  0    [         R                  " SSSSS9$ )Nr3   ra   rZ   rQ   r  groupsr  rp   r+   r)   r@   r        		!QAa Hr+   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rQ   r3   ra   )r   r   rD   rE   r  rG   rH   rI   Conv1d_pad_validc                  0    [         R                  " SSSSS9$ )Nr3   rU   rZ   validpaddingr  rp   r+   r)   r@   r    s    		!Q7 Cr+   z8torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kValid)Conv1d_pad_samec                  0    [         R                  " SSSSS9$ )Nr3   rU   rZ   samer  r  rp   r+   r)   r@   r        		!Q6 Br+   z7torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame)Conv1d_pad_same2c                  0    [         R                  " SSSSS9$ )Nr3   rU   r  r  r  rp   r+   r)   r@   r    r  r+   z7torch::nn::Conv1dOptions(4, 5, 4).padding(torch::kSame)Conv1d_pad_same_dilatedc                  2    [         R                  " SSSSSS9$ )Nr3   rU   r  rQ   r  r  r  rp   r+   r)   r@   r    s    		!Q6A Nr+   zCtorch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame).dilation(2)ConvTranspose1dc            	      4    [         R                  " SSSSSSS9$ )NrZ   r3   rZ   r5   r5   )r  r  r  output_paddingr}   r  rp   r+   r)   r@   r    s     2 21aQt]^os tr+   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r5   rZ      )r   r   rD   r  rE   rG   rH   rI   )rZ   r3   rZ   rQ   r5   r5   r5   Fztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r5   rZ   ra   rJ   )	rZ   r3   rZ   rQ   r5   r5   r5   TrQ   ztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(true).dilation(2)dilatedConvTranspose1d_groupsc            
      6    [         R                  " SSSSSSSS9$ )	Nr3   ra   rZ   r   r5   r  rQ   )r  r  r  r  r  rp   r+   r)   r@   r    s     2 21a4QRcgpq rr+   ztorch::nn::ConvTranspose1dOptions(4, 6, 3)
                                    .stride(3).padding(1).output_padding(1).groups(2))rQ   r3   r  Conv2d)rZ   r3   rZ   rQ   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rQ   rZ   r  rU   )	rB   rC   rD   rE   r  check_with_long_tensorrG   rH   rI   )rZ   r3   rZ   rZ   rQ   rQ   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r`   strided)
rB   rC   rD   rE   r  rN   r
  rG   rH   rI   )rZ   r3   r  r  r5   r5   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r  )rZ   rQ   r  r  r  r  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rQ   rZ   r2   r2   )rZ   r3   r	  r5   r   r5   r5   Fztorch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rQ   rZ   ra   rU   gQ?)r   rZ   r  rU   )rB   rC   rD   rE   r  rN   r
  rG   Conv2d_groupsc                  0    [         R                  " SSSSS9$ Nr3   ra   r	  rQ   r  r}   r  rp   r+   r)   r@   r  l      		!Qq Ar+   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rQ   r3   ra   rU   )	r   r   rD   rE   r  r
  rG   rH   rI   Conv2d_groups_thnnc                  0    [         R                  " SSSSS9$ r  r  rp   r+   r)   r@   r  w  r  r+   )r   r   rD   rE   r
  rG   rH   rI   Conv2d_pad_validc                  0    [         R                  " SSSSS9$ )NrQ   r3   rZ   r3   r  r  r  rp   r+   r)   r@   r    s    		!Q Hr+   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rQ   rQ   ra   rU   Conv2d_pad_samec                  0    [         R                  " SSSSS9$ )NrQ   r3   r  r  r  r  rp   r+   r)   r@   r    s    		!Q Gr+   z<torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame)Conv2d_pad_same_dilatedc                  2    [         R                  " SSSSSS9$ )NrQ   r3   r  r  r  r  rp   r+   r)   r@   r    s    		!QQR Sr+   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ConvTranspose2d)rZ   r3   rZ   r	  r5   r  ztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r5   rZ   r  ra   )	rB   rC   rD   r  rE   r
  rG   rH   rI   )	rZ   r3   rZ   rQ   rZ   r5   r  r5   Fr  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r5   rZ   ra   r  )rZ   r3   rZ   r  r5   r  r5   Fztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3}).padding(1).output_padding({1, 1}).groups(1).bias(false)ConvTranspose2d_groupsc                  0    [         R                  " SSSSS9$ )NrQ   r3   r  r  )r}   r  rp   r+   r)   r@   r    s     2 21a Jr+   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r5   rQ   r3   rU   Conv2d_depthwisec                  0    [         R                  " SSSSS9$ )Nr3   r  r  r  rp   r+   r)   r@   r    r  r+   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rQ   r3   ra   ra    Conv2d_depthwise_with_multiplierc                  0    [         R                  " SSSSS9$ )Nr3   r2   r  r  r  rp   r+   r)   r@   r    r  r+   z0torch::nn::Conv2dOptions(4, 8, {3, 3}).groups(4)Conv2d_depthwise_stridedc                  2    [         R                  " SSSSSS9$ )Nr3   r  r  )r  r  r  rp   r+   r)   r@   r    s    		!Qva Pr+   z?torch::nn::Conv2dOptions(4, 4, {3, 3}).stride({2, 2}).groups(4)Conv2d_depthwise_paddedc                  2    [         R                  " SSSSSS9$ )Nr3   r  r  )r  r  r  rp   r+   r)   r@   r    s    		!Qq Qr+   z@torch::nn::Conv2dOptions(4, 4, {3, 3}).padding({1, 1}).groups(4)Conv2d_depthwise_dilatedc                  2    [         R                  " SSSSSS9$ )Nr3   r  )r  r  r  rp   r+   r)   r@   r    s    		!QPQ Rr+   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rQ   r3   rU   rU   Conv3d)rQ   rZ   rQ   rZ   rQ   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r5   rQ   r3   rU   r3   g?)rQ   rZ   rQ   rZ   r3   r5   r   r5   r5   Fztorch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r5   rQ   rZ   r3   rU   )rQ   rZ   )r5   r5   r5   r5   r   r5   r5   F1x1x1_no_biasF)rZ   r3   rQ   rQ   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rQ   rZ   rU   rU   rU   )rZ   r3   rQ   rQ   r5   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)stride_padding)rZ   r3   r.  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rZ   rZ   r3   rU   )rB   rC   rD   rE   r  r
  rN   rG   Conv3d_groupsc                  0    [         R                  " SSSSS9$ )NrQ   r3   rZ   r  r}   r,  rp   r+   r)   r@   r  I  r  r+   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)Conv3d_dilatedc                  0    [         R                  " SSSSS9$ )NrZ   r3   rQ   r  r3  rp   r+   r)   r@   r  T  r  r+   z-torch::nn::Conv3dOptions(3, 4, 2).dilation(2)Conv3d_dilated_stridedc                  2    [         R                  " SSSSSS9$ )NrZ   r3   rQ   )r  r  r  r3  rp   r+   r)   r@   r  ]  s    		!QARS Tr+   z7torch::nn::Conv3dOptions(3, 4, 2).dilation(2).stride(2)Conv3d_pad_validc                  0    [         R                  " SSSSS9$ )NrZ   r3   r.  r  r  r3  rp   r+   r)   r@   r  f  s    		!Q	7 Kr+   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rQ   rZ   ra   rU   r3   Conv3d_pad_samec                  0    [         R                  " SSSSS9$ )NrZ   r3   r.  r  r  r3  rp   r+   r)   r@   r  p  s    		!Q	6 Jr+   z?torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame)Conv3d_pad_same_dilatedc                  2    [         R                  " SSSSSS9$ )NrZ   r3   r.  r  rQ   r  r3  rp   r+   r)   r@   r  z  s    		!Q	6TU Vr+   zKtorch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame).dilation(2)ConvTranspose3dz2torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2}))rB   rC   rD   r  rE   rG   rH   rI   )	rQ   rZ   r-  r5   r   r   r5   T)rQ   rQ   rQ   ztorch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	rB   rC   rD   r  rE   rN   rG   rH   rI   ReplicationPad3d))r5   rQ   rZ   rZ   rQ   r5   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rQ   rZ   rQ   rQ   rQ   )rB   rC   rD   rE   rI   )rZ   rQ   rQ   rQ   no_batch_dim)rB   rC   rD   rE   rF   rN   rI   c            
      R    [         R                  " SSSSS[         R                  SS9$ )NrQ   rZ   T)r   requires_grad)r7   r   
complex128rp   r+   r)   r@   r    s     UZZ1aAU=M=M]abr+   complex)rB   rC   rD   r   	skip_halfrN   	Embedding)r3   rZ   z!torch::nn::EmbeddingOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ NrQ   rZ   r   r3   r7   r  r|  random_rp   r+   r)   r@   r         U[[AUZZ@HHKr+   z0https://github.com/pytorch/pytorch/issues/117971)rB   rC   rD   r   rb   rI   	decoratorc                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ Nr5   i   r   r3   r  r7   r  r|  rJ  r;   rp   r+   r)   r@   r    /    U[[CuzzBJJ1MTTUVX[\r+   discontiguous)rB   rC   rD   r   rb   rN   rI   rL  EmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ rH  rI  rp   r+   r)   r@   r    rK  r+   mean)rB   rC   rD   r   rb   rN   rI   c                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ rN  rO  rp   r+   r)   r@   r    rP  r+   )r3   rZ   N       @Fr  ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum)c                  h    [         R                  " SS[         R                  S9R                  S5      $ rH  rI  rp   r+   r)   r@   r    rK  r+   r  )r3   rZ   NrV  Fmaxztorch::nn::EmbeddingBagOptions(4, 3)
                                    .max_norm(std::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax)c                  h    [         R                  " SS[         R                  S9R                  S5      $ rH  rI  rp   r+   r)   r@   r    rK  r+   rX  EmbeddingBag_mean_padding_idxc                  .    [         R                  " SSSS9$ )Nr3   rZ   r5   padding_idxr}   rR  rp   r+   r)   r@   r    s    1! Dr+   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                      [         R                  " [         R                  " S5      [         R                  " S5      /5      $ NrZ   r7   stackre   rp   r+   r)   r@   r    $    U[[%..*;U^^A=N)OPr+   )r   r   rD   r   rb   rI   EmbeddingBag_sum_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr3   rZ   rV  Fr  r5   r\  r^  rp   r+   r)   r@   r        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                      [         R                  " [         R                  " S5      [         R                  " S5      /5      $ r`  ra  rp   r+   r)   r@   r    rc  r+   EmbeddingBag_max_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr3   rZ   rV  FrX  r5   r\  r^  rp   r+   r)   r@   r    rf  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                      [         R                  " [         R                  " S5      [         R                  " S5      /5      $ r`  ra  rp   r+   r)   r@   r    rc  r+   EmbeddingBag_sparsec                  L    [         R                  " SSS[        R                  S9$ )Nr3   rZ   T)sparser   )r}   rR  r7   rf   rp   r+   r)   r@   r    s    1T Vr+   ztorch::nn::EmbeddingBagOptions(4, 3)
                                    .sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  N    [         R                  " S5      R                  SS5      $ NrQ   r5   r7   re   repeatrp   r+   r)   r@   r        U^^A.55a;r+   )r   r   rD   r   rb   has_sparse_gradientsc                  L    [         R                  " SS[        R                  SS9$ )Nr3   rZ   T)r   rm  )r}   rF  r7   rf   rp   r+   r)   r@   r    s    Qd Sr+   z_torch::nn::EmbeddingOptions(4, 3).sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  N    [         R                  " S5      R                  SS5      $ ro  rp  rp   r+   r)   r@   r    rr  r+   Embedding_sparse)r   rD   r   r   rb   rs  PixelShuffler   z!torch::nn::PixelShuffleOptions(3))r5   	   r3   r3   PixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r5   r5      rz  rz  nearest)rg   scale_factormodezF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r5   rQ   r3   interpolate_nearest_1d)r   cpp_options_argsrE   r   r   rI   )r   rQ   r3   interpolate_nearest_1d_zero_dim)r   r  rE   r   r   )rz  )r5   rQ   rZ   interpolate_nearest_tuple_1dg      @zF::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)interpolate_nearest_scale_1dlinear)rg   r|  r}  align_cornersa  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_1d)r3   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_tuple_1da  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_scale_1dinterpolate_linear_1d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(true)#interpolate_linear_1d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(true))interpolate_linear_scale_1d_align_cornersrQ   zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5      r5   r5   %interpolate_nearest_2d_launch_configszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rQ   r3   r3   interpolate_nearest_2d)rz     zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rQ   rZ   r3   interpolate_nearest_tuple_2dzF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)interpolate_nearest_scale_2d)r   rQ   r3   r3   interpolate_nearest_2d_zero_dimbilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false)interpolate_bilinear_2d interpolate_bilinear_2d_zero_dim)r3   ra   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r5   rQ   rQ   rZ   interpolate_bilinear_tuple_2da
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)interpolate_bilinear_scale_2d)rV  rV  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)rV        ?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))r5   rQ   r3   r3   r3   interpolate_nearest_3d)r   rQ   r3   r3   r3   interpolate_nearest_3d_zero_dim)rz  r  r  zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r5   rQ   rZ   r3   r3   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)r3   ra   ra   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r5   rQ   rQ   rZ   rZ   interpolate_trilinear_tuple_3dg      @a  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(false)interpolate_trilinear_scale_3dr   )r   r  rE   r   r   r   rI   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_tuple_3d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_scale_3d_align_cornersr6   r  zF::SoftmaxFuncOptions(-1))rQ   r  softmax_lastdimr5   )r  r   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)softmax_lastdim_dtype)r   r  rE   r   r   rO   rI   zF::SoftmaxFuncOptions(1))rQ   r  rQ   rQ   softmax_spatial_special)rQ   rQ   r3   r3   softmax_spatialsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rY   softmax_functional_dim0)r   r  rE   r   rO   r   rI   rZ   zF::SoftmaxFuncOptions(3)softmax_functional_dim3rp   softmax_functional_scalar)r   r  rE   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                  4    [         R                  " SSSS5      $ )Nr  r  r   r   r}   r  rp   r+   r)   r@   r  v	  s    		&&&& Ir+   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rQ   r3   rZ   rZ   )r   r   rD   rE   rb   rO   rI   Foldc                  6    [         R                  " SSSSS5      $ Nr  r  r  r  r}   r  rp   r+   r)   r@   r  	       Or+   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rQ   r  r3   Fold_no_batch_dim_inputc                  6    [         R                  " SSSSS5      $ r  r  rp   r+   r)   r@   r  	  r  r+   )r  r3   )r   r   rD   rE   rb   refrO   rI   Unfold_int_inputc                  4    [         R                  " SSSS5      $ )NrQ   r5   r   r  rp   r+   r)   r@   r  	  s    		!Q1 5r+   z<torch::nn::UnfoldOptions(2).dilation(1).padding(0).stride(1)Fold_int_inputc                  6    [         R                  " SSSSS5      $ NrZ   rQ   r5   r   r  rp   r+   r)   r@   r  	      1aA 6r+   z=torch::nn::FoldOptions(3, 2).dilation(1).padding(0).stride(1)Fold_no_batch_dim_int_inputc                  6    [         R                  " SSSSS5      $ r  r  rp   r+   r)   r@   r  	  r  r+   )r   r   rD   rE   r  rb   rO   rI   rP   rR   rT   with_up_down_scalarrW   PairwiseDistancec                  ^    [         R                  " SS5      [         R                  " SS5      4$ Nr1   r2   rE  rp   r+   r)   r@   r  	      ekk"a0%++b!2DEr+   )rB   r   rI   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr1   r5   r2   rE  rp   r+   r)   r@   r  	  r  r+   broadcast_lhs)rB   r   rN   rI   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr1   r2   r5   rE  rp   r+   r)   r@   r  	  s    ekk"a0%++a2CDr+   broadcast_rhs)g      ?r   TzDtorch::nn::PairwiseDistanceOptions().p(1.5).eps(1e-05).keepdim(true)c                  ^    [         R                  " SS5      [         R                  " SS5      4$ r  rE  rp   r+   r)   r@   r  	  r  r+   with_non_default_args)rB   rC   rD   r   rN   rI   c                  Z    [         R                  " S5      [         R                  " S5      4$ )Nr2   rE  rp   r+   r)   r@   r  	  s    ekk!nekk!n=r+   )rB   r   rF   rN   rI   TransformerEncoderLayer)r3   rQ   r          ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)r.  relu_activationrS   )
rB   rC   rD   rE   rN   rG   rH   rc   rb   rI   r3   r2   r  ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)gelu_activationg{Gz?)	rB   rC   rD   rE   rb   rN   rG   rH   rI   TransformerDecoderLayer)r3   rQ   r2   r  ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)c                  b    [         R                  " SSS5      [         R                  " SSS5      4$ NrZ   r3   rQ   r   rp   r+   r)   r@   r  	  #    ejjAq15::aA3FGr+   )	rB   rC   rD   r   rb   rN   rG   rH   rI   ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)c                  b    [         R                  " SSS5      [         R                  " SSS5      4$ r  r   rp   r+   r)   r@   r  
  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                      [         R                  " SSS5      [         R                  " SSS5      [         R                  " SS5      4$ r  r   rp   r+   r)   r@   r  
  s2    ejjAq15::aA3F

STVWHXYr+   multilayer_codergQ?r0   )rZ   rU   ztorch::nn::LinearOptions(3, 5)c                  .    [         R                  " S5      $ r`  r   rp   r+   r)   r@   r  %
  s    UZZ]r+   c                     [         R                  " U R                  SS5      US   R                  5       5      R                  S5      US   -   $ )Nr5   r6   r   )r7   r8   r:   r9   r<   s      r)   r@   r  &
  s;    !&&B-1)J)O)OPR)SVWXYVZ)Zr+   )	rB   rC   rD   r   rF   rN   rG   rH   rI   rX   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))r6   )rZ   r3   rU   )rB   rD   rC   rE   rF   rN   rI   	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})	LayerNorm)8   r  r  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r3   r  r  r  3d_no_affine_large_feature)	rB   rC   rD   rE   r  
check_evalgradcheck_fast_mode
check_halfrN   )reflectcircular	replicater?  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZerosstrictr  {z, }r  r  c              3   *   #    U  H	  oS -   v   M     g7fr5   Nrp   .0r>   s     r)   	<genexpr>'get_new_module_tests.<locals>.<genexpr>[
  s     (@1Qs   Convdztorch::nn::Convz~dOptions(2, 3, 3)
                                            .stride(2)
                                            .padding(z)
                                            .dilation(1)
                                            .groups(1)
                                            .bias(true)
                                            .padding_mode()_stride2_pad2)
rB   rC   rD   rE   output_sizer  rN   rG   rH   rI   )ELU
HardshrinkHardsigmoidHardtanh	Hardswish	LeakyReLU
LogSigmoidPReLUReLUReLU6rP   SELUCELUGELUGLUr   SiLUMishSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	Thresholdr  )rV  )rC   rI   r  rC   r	  )rb   	check_jitrI   r  )rO   rI   r  rI   r  r  r  r
  r  r  r  r  r  r  r  )r  r   r  r  r  r  r  )rB   rE   rF   rN   test_cpp_api_parity)Lr
   set_rng_seedr   r   r   r   r   r   r   r   r  r  r  r,  r3  r:  rL  rT  r\  ro  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r/  r@  rH  rU  r\  rj  rt  r}  r  r  r  r  r  r  r  r  r   r7   rf   r  r   r   r   interpolatesoftmaxfloat64log_softmaxgelur   reluSizezipr  rangejoinmapr  appendgetupdate)new_module_testspadding_modecpp_padding_moder  r  cpp_paddingrE   r  non_linear_activations_no_batch!non_linear_activations_extra_infonon_linear_activationactivation_test_info
extra_infos                r)   get_new_module_testsr7  <  s)#   K%'K K 	'(K 	+,	K
 	)*K 	&'K 	./K 	01K 	-.K 	!"K 	()K 	12K 	,-K 	34K 	K  	&'!K" 	%&#K$ 	 %K& 	&''K( 	 )K* 	,-+K, 	'(-K. 	45/K0 	891K2 	!"3K4 	)*5K6 	./7K8 	!"9K: 	)*;K< 	./=K> 	$%?K@ 	+,AKB 	 CKD 	$%EKF 	GKH 	/0IKJ 	/0KKL 	,-MKN 	,-OKP 	*+QKR 	12SKT 	&'UKV 	01WKX 	89YKZ 	'([K\ 	*+]K^ 	:;_K` 	)*aKb 	./cKd 	/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!P! ,,	
}KN 	$H!N  ,,		
OKb 	'C![! ,,		
cKv 	&B!Z! ,,		
wKJ 	'B!Z! ,,		
KK^ 	.N!f! ,,		
_Kr 	&t!t  ,,		
sKF 	)9"e  ,,	
GK^ 	);"p  ,,	
_Kv 	-r"Y  ,,
	
wKL 	 +!I##' ,,
	
MKb 	 3!X##' ,,	
cKz 	 ;!h##' ,,	
{KR 	 C!y##' ,,	
SKj 	 >"_##' ,,	
kKD	 	 +!I##'		
E	KX	 	$A!S##' ,,
	
Y	Kn	 	)A!S##' ,,		
o	KB
 	'H!`# ,,		
C
KV
 	&G!_#,,		
W
Kj
 	.S!k#,,		
k
K~
 	)9"Y##',,	

KV 	)K"9 $#',,!	
WKz 	)C"o##',,	
{KT 	-J!\##',,
	
UKj 	'A!S# ,,	
kK| 	7A!S# ,,	
}KN 	/P!b# ,,	
OK` 	.Q!c# ,,	
aKr 	/R!d# ,,	
sKD 	 .!L&#',,
	
EKZ 	 A"_&#',,	
[Kt 	 A"_& #(,,	
uKN 	 )!N&#',,	
OKf 	 ,!Y&!#',,	
gK~ 	 .!L&#'		
KR 	$H!N&#' ,,
	
SKh 	%J!P&,,	
iKz 	-T!Z&,,	
{KL 	'K!c&,,		
MK` 	&J!b&,,		
aKt 	.V!n&,,		
uKH 	).!U&,,		
IK\ 	)K"x&,,	
]Kt 	*2!Y&,,	
uKB 	*2!Y#2,,	
CKT 	*2!Yb	
UKd 	##!DK ,,'(Z[	
eKv 	##!D\  ,,'(Z[		
wKJ 	&#!GK ,,	
KK\ 	&#!G\  ,,	
]Kn 	&;"yK ,,		
oKB 	&;"yK ,,		
CKV 	4D!VP ,,	
WKf 	3\"HP ,,	
gKx 	3\"HP ,,	
yKJ 	*V"f; !%	
KK\ 	S "C;' !%	
]Kl 	&!!D#,,	
mKz 	(!!F%,,	
{KH 	'BTXabv -,,	
IKZ 	'BTXabv 6	
[Kj 	'FQU\efv 3,,	
kK| 	'DrXabu 3,,	
}KN 	'BTX`puv9
 !,,,	
OKf 	'EPT[csxy9
 !2,,	
gK~ 	'DrX`puv9
 !2,,	
KV 	'BTX`puv9
 !5
	
WKl 	'BTX`ptu8
 !:,,	
mKD 	'DrX`ptu8
 !@,,	
EK\ 	'ADW`a: &<,,
	
]Kr 	'BTXab: $-,,
	
sKH 	'HSW^gh: $3,,
	
IK^ 	'DrXab: $3,,
	
_Kt 	'BTXab: $6		
uKH 	'BTXbrwx9
 $.,,	
IK` 	'BTXbrwx9
 $7
	
aKv 	'FQU-7uN9
 $4,,	
wKP 	'Dr-7uN9
 $4,,	
QKj 	'Dx-7uN9
 $A,,	
kKD 	'Dx-7uN9
 $A,,	
EK^ 	'FQU\fvz{8
 $B,,	
_Kv 	'Dx-7tM8
 $O,,	
wKP 	'BTXaqvw9
 $-,,	
QKh 	'BTXaqvw9
 $6
	
iK~ 	'FQU-6eM9
 $3,,	
KX  	'DrXaqvw9
 $3,,	
Y Kp  	'Dx-6eM9
 $@,,	
q KJ! 	'Dx-6eM9
 $@,,	
K!Kd! 	'FQU\euyz8
 $A,,	
e!K|! 	'Dx-6dL8
 $N,,	
}!KV" 	'BTXab: '-,,
	
W"Kl" 	'BTXab: '6		
m"K@# 	'LW[bkl: '3,,
	
A#KV# 	'DrXab: '3,,
	
W#Kl# 	'BTXcsxy9
 '/,,	
m#KD$ 	'BTXcsxy9
 '8
	
E$KZ$ 	'I59[`b9
 '5,,	
[$Kt$ 	'DrXcsxy9
 '5,,	
u$KP% 	'ITX-8N8
 'C,,	
Q%Kj% 	'DrXcswx8
 'C,,	
k%KF& 	'		r:8&,,	
G&KV& 	'		qNN,,,	
W&Kh& 	'		q97%.,,	
i&Kx& 	'		q97#&,,	
y&KH' 	'		qNN#,,,	
I'KZ' 	'		q97#.,,	
['Kl' 	'		q97#.,,	
m'K~' 	'		r:80	
'KN( 	'2>;*,,	
O(K^( 	'1=:%2,,	
_(Kn( 	'1=:#*,,	
o(K~( 	'1=:#',,	
(KN) 	'1=:#',,	
O)K^) 	'1=:)	
_)Kl) 	I!s# ,,	
m)K~) 	O!y! ,,	
)KP* 	.O!y ),,		
Q*Kd* 	'5!_# ,,	
e*Kv* 	%6!`! ,,	
w*KH+ 	26!`) ,,		
I+K\+ 	'!R&,,	
]+Kn+ 	*E,,	
o+Kx+ 	*E ,,		
y+KD, 	*D ,,		
E,KP, 	*/!gE(,,	
Q,K`, 	*=2,,	
a,Kn, 	1,"5 !"  % ,,	
o,KP- 	1AsAFF3"A ! "#.;4D,,	
Q-Kl- 	1+"5 H ",,	
m-KF. 	1AsAFF3"A H ",,	
G.Kb. 	%Aq!S!&&9"A Z ##.;4D,,!	
c.KF/ 	 #!A*Z ,,
	
G/K\/ 	!!X% 2,,	
]/Kn/ 	#!J %**aV"45 2,,	
o/K@0 	#*D%8!p& $-
	
A0K\0 +.9Ybf+h& AAv,)3 E!QUO,G		#c7*; <<sBK$(*J 5(@(@#@@K##"&qc&'Aq'1a|%T-<QC @66A] C; <L:LA*Q  * +(>7"#'"',,! +hL'#:UU\\J:((3: 	%eV[VbVbc: 	ETYT`T`a	: 	uu||D: 	.: 	%,,/: 	.: 	5: 	_ell3: 	ou||4: 	5: 	%,,/:  	/5<<0!:" 	/5<<0#:$ 	%,,/%:& 	%,,/':( !%,,/#U\\2$ell3&5$ell3 %,,/&55:%8 "A#-2 % 
 7::;PRTU
##J/ 45 "A r+   c                 F   U(       a  [         R                  " U5      X-
  -  nOXR                  5       U -
  -  nUS:X  a  UR                  5       $ US:X  a  UR	                  5       $ US:X  a6  UR                  5       S:w  a"  UR	                  5       UR                  S5      -  $ U$ )NrT  r  	batchmeanr   )r7   r   r   rT  r  r  rg   )r  rc  r    r"  r(   s        r)   kldivloss_referencer:  
  s    6"fn5::<%/0F{{}	e	zz|	k	!fjjla&7zz|fkk!n,,Mr+   c                    U R                  5       S:  d   eU R                  S5      nU R                  S5      nU4U R                  5       SS  -   n[        R                  " U5      R	                  U 5      nUc%  [        R
                  " U5      R	                  U 5      nSn	[        U V
s/ s H  n
[        U
5      PM     sn
6  HU  nX   nX<:X  a  SOX,   R                  5       n[        U5      nUR                  SU5        U [        U5         * U-  X'   X-  n	MW     US:X  a  UR                  5       U	-  $ US:X  a  UR                  5       $ U$ s  sn
f )NrZ   r   r5   rQ   r  rT  r  )r  rg   r7   r?  r   onesr   r(  itemr  insertr  r  )r  rc  r-   r  r    NCout_sizeoutputtotal_weightrg   tupt_nxnorminput_indexs                  r)   nlllossNd_referencerH  
  s7   99;!

1A

1Atejjl12&&H[["**51F~A&&u-L:t:;{!)rv|/@/@/B3i1d#U;/0047 < Fzz|l**	e	zz|M ;s   (Ec                    U R                  5       S:  d   e[        R                  " U S5      n U R                  S5      nUc%  [        R                  " U5      R                  U 5      nUR                  " SU/S U R                  SS   5       Q76 nUS:  a  US::  d   eUSU-
  -  XE-  -   nX-  U-  R                  SS9* nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ U$ )	NrQ   r5   c              3   &   #    U  H  nS v   M	     g7fr  rp   r  r?   s     r)   r   ;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>
  s      <OqO   r  r  r  rT  r  )
r  r7   r#  rg   r<  r   r:   shaper  rT  )r  rc  r-   r    label_smoothingr@  rB  s          r)   (cross_entropy_loss_prob_target_referencerP  
  s    99;!eQ'E

1A~A&&u-[[A= <EKKO <=F#%%%A/0?3FF~&+++22FF{{}	e	zz|Mr+   c                 8   [         R                  " U S5      n[        R                  " UUUUUS9nUS:X  a  U$ SUs=:  a  S::  d   e   e[         R                  " U S5      n U R	                  S5      nUb*  XR
                  " SU/S U R                  SS   5       Q76 -  n [         R                  " U S5      * n	X:H  n
U	R                  U
S5        US:X  a  Ubc  [         R                  " U	5      UR                  SUR                  U
R                  5       5      R                  5       5      R                  5       -  nOS[         R                  " U	R                  U
R                  5       5      5      nOUS	:X  a  [         R                  " U	5      nOU	nSU-
  U-  XU-  -  -   $ )
Nr5   r  r  r  c              3   &   #    U  H  nS v   M	     g7fr  rp   rK  s     r)   r   >cross_entropy_loss_indices_target_reference.<locals>.<genexpr>
  s     +G!ArM  rQ   rT  r   r  )r7   r#  r   r{  rg   r:   rN  r  masked_fill_gathermasked_selectlogical_notr]   rT  )r  rc  r-   r  r    rO  log_softmax_inputnlllossr@  smooth_lossignore_maskrets               r)   +cross_entropy_loss_indices_target_referencer]  
  s   ))%3jj!G #'C'''''eQ'E

1AAqH+Gu{{12+GHH99UA&&K(K[#.F ))K(6==F<P<PQ\QhQhQj<k<s<s<u+v+z+z+||C**[66{7N7N7PQRC	e	ii$7*Sa4G-HHHr+   c           	      f    U R                   UR                   :X  a  [        U UUUUS9$ [        XX$X5S9$ )N)r-   r    rO  )r-   r    r  rO  )rN  rP  r]  )r  rc  r-   r  r    rO  s         r)   cross_entropy_loss_referencer_  
  sE    {{fll"7+- 	- ;&%
 	
r+   c           
          S n[        XSS9 VVs/ s H  u  pgU" XgX#5      PM     nnn[        USS06u  pU R                  U	5      nUS:X  a  [        U5      [        U
5      -  $ US:X  a  [        U5      $ U$ s  snnf )Nc                 6    X:X  a  gUc  SOX!   nX   * U-  nXT4$ )Nr  r5   rp   )r  rc  r-   r  rF  r(   s         r)   nll_loss_helper*nllloss_reference.<locals>.nll_loss_helper  s.    !Nq-$&~r+   Tr  r  rT  r  )r'  
new_tensorr  )r  rc  r-   r  r    rb  r=   r9   losses_and_weightslossesr.   losses_tensors               r)   nllloss_referencerh    s     '*%&EG&Eda *!E&E  G-;d;OF$$V,MF=!CL00	e	=!!Gs   A7c                    X-
  R                  5       nXC:  R                  U5      nXC:  R                  U5      nUS:X  a  UnOXTSU-  -
  -  US-  US-  -  U-  -   nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ U$ )Nr   r  rQ   rT  r  )rI  r   rT  r  )r  rc  r    r  abs_diffge_beta_masklt_beta_maskrB  s           r)   smoothl1loss_referencerm  0  s    ##%H$--h7LO,,X6LqyC$J!67,:LPX\]P]:^ae:eeF{{}	e	zz|Mr+   c                     X-
  R                  5       nXC:  nXC:  nXS-  USU-  -
  -  US-  US-  -  -   nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ U$ )Nr  rQ   rT  r  )rI  rT  r  )r  rc  r    r)  rj  ge_delta_masklt_delta_maskrB  s           r)   huberloss_referencerq  @  s|    ##%H&M%M"hu&<=PS@SW_cdWd@eeFF{{}	e	zz|Mr+   c           	          / nU H  nUS:  a    OUR                  U5        M     SnU H>  n[        [        U 5      5       H#  nXR;  d  M
  U[        SSX   -
  X   -   5      -  nM%     M@     U$ )Nr   r5   )r+  r(  lenrX  )r  rc  targetstarget_indexr  r=   s         r)   _multilabelmarginloss_referencerv  L  sy    G!|$ 
 Cs5z"As1a%"55@AA #  
 Jr+   c                    U R                  5       nU R                  5       S:  a  UR                  5       S:  d   eU R                  5       S:X  a  U R                  S5      OU R                  S5      R                  S5      n UR                  5       S:X  a  UR                  S5      OUR                  S5      R                  S5      nU R                  S5      nU R                  S5      nU R                  U5      R	                  5       n[        U5       H  n[        X   X   5      Xg'   M     US:X  a  UR                  5       U-  $ US:X  a  UR                  5       U-  $ US:  a  UR                  5       U-  $ Xe-  $ NrQ   r5   r   rT  r  )
r  r  rg   newzero_r(  rv  rT  r  r  )r  rc  r    	input_dimnr  rB  r=   s           r)   multilabelmarginloss_referencer}  \  s>   		Iyy{Qzz|a&+iikQ&6"EOOA<N<X<XYZ<[(.

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

1A
**Q-CYYq\!F1X3EHfiH	  F{{}s""	e	zz|c!!	Q ~~#%%|r+   c                     X -
  R                  SS9R                  U 5      n[        R                  " US:H  X5      nUS:X  a  UR	                  5       $ US:X  a  UR                  5       $ U$ )Nr   rK  r5   rT  r  )rT  r   r7   whererT  r  )r  rc  rp  r    margin_clamprB  s         r)   hingeembeddingloss_referencer  v  sc    N))a)088?L[[1e:FF{{}	e	zz|Mr+   c                     SU * U-  R                  5       -   R                  5       nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ U$ )Nr5   rT  r  )r   r   rT  r  )r  rc  r    rB  s       r)   softmarginloss_referencer    sQ    E6F?''))..0FF{{}	e	zz|Mr+   c           	          Uc)  U R                  [        U 5      5      R                  S5      nSn[        [        U 5      5       H+  nXa:w  d  M
  XTU   [	        SX0U   -
  X   -   5      U-  -  -  nM-     U$ )Nr5   r   )ry  rs  fill_r(  rX  )r  
target_idxr>   rp  r-   rB  r=   s          r)   _multimarginloss_referencer    sx    ~3u:&,,Q/F3u:?Z(CF:=N4NQVQY4Y,[_`,`aaF  Mr+   c                 p   U R                  5       S:  aE  U R                  5       S:X  a  U R                  S5      OU R                  S5      R                  S5      n UR                  5       nUR                  5       S:X  a  UR                  S5      nU R                  S5      nU R                  S5      nU R                  U5      n	[	        U5       H  n
[        X
   X   X#U5      X'   M     US:X  a  U	R                  5       U-  $ US:X  a  U	R                  5       U-  $ US:X  a  U	R                  S5      U-  $ X-  $ rx  )	r  r  rg   ry  r(  r  rT  r  r  )r  rc  r>   rp  r-   r    
target_dimr|  r  rB  xs              r)   multimarginloss_referencer    s   yy{Q&+iikQ&6"EOOA<N<X<XYZ<[Jzz|q!!!$

1A
**Q-CYYq\F1X.uxAvV	  F{{}s""	e	zz|c!!	q~~a 3&&<r+   c                     S n[         R                  " US:H  SU" X5      -
  U" X5      U-
  R                  SS95      nUS:X  a  UR                  5       $ US:X  a  UR	                  5       $ U$ )Nc                 ,   U R                  U R                  S5      5      n[        U R                  S5      5       HU  nX   X   -  R                  5       X   X   -  R                  5       S-   X   X   -  R                  5       S-   -  S-  -  X#'   MW     U$ )Nr   g-q=r  )ry  rg   r(  r  )abcosr=   s       r)   _cos+cosineembeddingloss_reference.<locals>._cos  s    eeAFF1Iqvvay!AdQTk&&(qtad{.?.?.AE.IqtVWVZ{N_N_NadiNi-jor,rsCF "
r+   r5   r   rK  rT  r  )r7   r  rT  rT  r  )input1input2rc  rp  r    r  rB  s          r)   cosineembeddingloss_referencer    sp     [[1a$v*>&>fAUX^A^@e@ejk@e@lmFF{{}	e	zz|Mr+   c                 V   [         R                  " XXE5      n[         R                  " XXE5      n	U(       a-  [         R                  " XXE5      n
[         R                  " X5      n	[         R                  " X8-   U	-
  SS9nUS:X  a  UR	                  5       $ US:X  a  UR                  5       $ U$ )Nr  rK  rT  r  )r7   pairwise_distancerL  rT  rT  r  )anchorpositivenegativerp  r>   epsswapr    d_pd_nd_srB  s               r)   tripletmarginloss_referencer    s    

!
!&A
;C

!
!&A
;C%%h!Aii![[+5FF{{}	e	zz|Mr+   c                     U* X-
  -  U-   R                  SS9nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ U$ )Nr   rK  rT  r  )rT  rT  r  )r  r  rc  rp  r    rB  s         r)   marginrankingloss_referencer    sP    g)F299a9@FF{{}	e	zz|Mr+   c                 :   [         R                  " U[         R                  S9n[         R                  " U[         R                  S9nU R                  nU R	                  5       n UR                  5       nUR                  S5      n/ n[        U R                  S5      5       GH|  n	X)   R                  5       n
X9   R                  5       nXy   R                  5       nUR                  SU-  S-   4U5      nUR                  5       S:X  a  XS U24   USS S2'   OXU-
  U USS S2'   U S U
2U	4   R                  5       nU R                  US-  S-   45      nUSU4   US'   USUS   4   US'   US S USS  :g  n[        SU
5       Hd  nUR                  5       nUSS === US S -  sss& USS === [         R                  " UUS S UR                  S5      5      -  sss& UUU4   U-  nMf     UR                  USS  R!                  5       R#                  5       S    * 5        GM     [         R$                  " US5      nUS:X  a6  UUR'                  UR                  UR(                  S9-  R+                  5       nOUS	:X  a  UR!                  5       nUR'                  U5      nU$ )
Nr   r   r5   rQ   r  r6   rT  r   devicer  )r7   	as_tensorr|  r   rf   cumsumr(  rg   r=  new_fullr  r   	new_zeroscloner  r+  r  r   catr   r  rT  )	log_probsrt  input_lengthstarget_lengthsblankr    dtcum_target_lengthsrf  r=   input_lengthtarget_lengthcum_target_lengthtargets_primeprobsalpha
mask_thirdr9   
alpha_nextrB  s                       r)   ctcloss_referencer    s   OOMDM__^5::FN	B  "IllnG'..q1F9>>!$%$',,.&)..0.1668((!m*;a*?)A5I;;=A")^m^*;"<M!$Q$")m*KL]"^M!$Q$-<-*+//1##]Q%6%:$<=E?aM!,,-a#CR(M!",==
q,'AJqrNeCRj(NqrNekk*eCRj%//RSBTUUN!]*+j8E	 (
 	uRSz~~'++-d334' &( YYvq!FF>,,6<<,VV\\^	e	YYr]FMr+   )r"  )r  r)  r  r  r
  r.  r;  re  r|  r  CosineEmbeddingLossTripletMarginLossMarginRankingLossCTCLossCrossEntropyLossr  r  c                     ^ U S   nS nU4S jmT" U SS  Vs/ s H
  o2" U5      PM     sn5      nU" U6 n[        U5      nUS:X  a  UR                  S5      $ U$ s  snf )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.
r6   c                     [        U [        [        45      (       a!  U  Vs/ s H  oR                  S5      PM     sn$ U R                  S5      $ s  snf rL   r  r  s     r)   r  :single_batch_reference_criterion_fn.<locals>.unsqueeze_inp  r  r  c                    > / n[        U [        [        45      (       a"  U  H  nUR                  T" U5      5        M     U$ UR	                  U 5        U$ ro   )r  r  r  extendr+  )xsr(   r  r]   s      r)   r]   4single_batch_reference_criterion_fn.<locals>.flatten  sM    b4-((gaj)   MM"r+   Nr   r   )r*   r  )rr   	criterionr  r  single_batch_input_argsrB  r    r]   s          @r)   #single_batch_reference_criterion_fnr    sv     RI 
 &cr&S}U';&ST/0Fi(IF~~a  M 'Ts   A)L1LossMSELossPoissonNLLLossr.  r
  )r   rT  r  _no_batch_dim_)namec                 2    [        [        U 5      " [        S9$ Nr   r#   r}   r    r  rr   s     r)   r@   r@   ;      WR->-Sr+   r   )r   r   rE   target_sizerF   r  rI   KLDivLoss_no_batch_dim_c                  2    [         R                  " [        S9$ r  )r}   r  r    rp   r+   r)   r@   r@   H  s    BLL9=r+   c                  J    [         R                  " S5      R                  5       $ Nr   r  rp   r+   r)   r@   r@   I  s    D)--/r+   c                  .    [         R                  " S5      $ r  r   rp   r+   r)   r@   r@   J  s    %**T*r+   )r   r   r   	target_fnrF   r  rI   BCELossc                  p    [         R                  " [         R                  " S[         R                  S95      $ Nrx  r   )r7   r   r   rf   rp   r+   r)   r@   r@   W  s    ekk!5<<@Ar+   c                      [         R                  " S[         R                  S9R                  S5      R	                  [         R                  5      $ )Nrx  r   r   )r7   r   rf   r   r   rp   r+   r)   r@   r@   X  s-    AU\\255a8;;ELLIr+   BCEWithLogitsLossc                  H    [         R                  " S[         R                  S9$ r  r7   r   rf   rp   r+   r)   r@   r@   Z  s    %++au||"Dr+   c                  H    [         R                  " S[         R                  S9$ r  r  rp   r+   r)   r@   r@   Z  s    ekkZ[chcocoNpr+   re  c                  H    [         R                  " S[         R                  S9$ r  r  rp   r+   r)   r@   r@   [  s    5;;q#Er+   c                  8    [         R                  " / SQS-  5      $ N)r6   r5   r5   rZ   r7   tensorrp   r+   r)   r@   r@   [  s    u||\fij\jOkr+   r;  c                  H    [         R                  " S[         R                  S9$ )Nr3   r   r  rp   r+   r)   r@   r@   \  s    U[[%,,%Gr+   c                  2    [         R                  " / SQ5      $ )N)rZ   r   r6   r5   r  rp   r+   r)   r@   r@   \  s    QVQ]Q]^kQlr+   r|  c                  H    [         R                  " S[         R                  S9$ r  r  rp   r+   r)   r@   r@   ]  s    u{{1ELLAr+   c                  8    [         R                  " / SQS-  5      $ r  r  rp   r+   r)   r@   r@   ]  s    5<<XbefXfKgr+   r  c                  n    [         R                  " [        R                  " S[        R                  S9SS9$ )NrZ   r   r   r  )r   r#  r7   r   rf   rp   r+   r)   r@   r@   ^  s    ekk!5<<&HaPr+   c                  .    [         R                  " S5      $ r\   r  rp   r+   r)   r@   r@   ^  s    Z_ZfZfghZir+   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  rp   r+   r)   r@   r@   a  '    Qell3U[[%,,5WXr+   c                  H    [         R                  " S[         R                  S9$ )Nr5   r   )r7   r  rf   rp   r+   r)   r@   r@   b  s    Qell3r+   r  c                  Z    [         R                  " S5      [         R                  " S5      4$ r  rE  rp   r+   r)   r@   r@   e  s    5;;r?EKKO"Dr+   c                  J    [         R                  " S5      R                  5       $ r  )r7   r   signrp   r+   r)   r@   r@   e  s    ekkZ\oNbNbNdr+   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  rp   r+   r)   r@   r@   i  r  r+   c                  H    [         R                  " S[         R                  S9$ r  r  rp   r+   r)   r@   r@   j  s    AU\\2r+   MultiLabelSoftMarginLossc                  H    [         R                  " S[         R                  S9$ r  r  rp   r+   r)   r@   r@   l  s    Qell)Kr+   c                  .    [         R                  " S5      $ )Nrx  rE  rp   r+   r)   r@   r@   l  s    UZU`U`abUcr+   rb   ,classification_criterion_no_batch_extra_info)r  r  re  r  r|  c                 2    [        [        U 5      " [        S9$ r  r  r  s     r)   r@   r@   ~  r  r+   c                     U " 5       $ ro   rp   fs    r)   r@   r@     s    ACr+   c                     U " 5       $ ro   rp   r  s    r)   r@   r@     s    acr+   )r   r   r   r  rF   r  
has_parityc                      \ rS rSr\S 5       r\S\R                  S\\	\R                     \	\R                     4   4S j5       r\S\R                  SS4S j5       r\ SS\R                  S\S	\R                  S
\\R                  \\R                     4   S\4
S jj5       rS rS rS rSS\4S jjrSS\4S jjrSS\4S jjrSrg)
NNTestCasei  c                     [         ero   NotImplementedError)rq   rr   rt   s      r)   _forwardNNTestCase._forward      !!r+   r  returnc                     [         ero   r  rq   r  s     r)   _get_parametersNNTestCase._get_parameters  r  r+   Nc                     [         ero   r  r
  s     r)   _zero_grad_parameters NNTestCase._zero_grad_parameters  r  r+   r  rB  grad_outputcreate_graphc                     [         ero   r  )rq   r  r  rB  r  r  s         r)   	_backwardNNTestCase._backward  s
    
 "!r+   c                    ^ ^ [        U[        5      (       a  [        UU 4S jU 5       5      $ [        U[        5      (       a#  U Vs/ s H  nT R                  UT5      PM     sn$ [        R
                  " UR                  5       T5      $ s  snf )Nc              3   H   >#    U  H  nTR                  UT5      v   M     g 7fro   )	_jacobian)r  elemnum_outrq   s     r)   r   'NNTestCase._jacobian.<locals>.<genexpr>  s     I54g665s   ")r  r  r  r  r7   r?  nelement)rq   r  r  r  s   ` ` r)   r  NNTestCase._jacobian  sl    eU##I5IIIt$$>CDedDNN41eDD;;u~~/99 Es   Bc                    ^  [        U[        R                  5      (       aA  UR                  (       a  UR	                  5       R                  S5      $ UR                  S5      $ [        U 4S jU 5       5      $ )Nr6   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fro   )_flatten_tensors)r  r  rq   s     r)   r   .NNTestCase._flatten_tensors.<locals>.<genexpr>  s     =1a..q111   !)r  r7   r  	is_sparseto_denser:   r  )rq   r  s   ` r)   r  NNTestCase._flatten_tensors  sQ    a&&{{zz|((,,vvbz!=1===r+   c                     [        U[        R                  5      (       aU  UR                  (       aC  UR                  b5  UR                  R                  5         UR                  R                  5         g g g U H  nU R                  U5        M     g ro   )r  r7   r  rB  gradrz  detach__zero_grad_input)rq   r  r=   s      r)   r(  NNTestCase._zero_grad_input  sg    eU\\**""uzz'=

  "

""$ (>" %%a( r+   c                    U R                  X5      nUR                  5       nU(       a%  U R                  X&5      n[        [	        U5      5      nU(       a:  [        S U R                  U5      S    5       5      n	[        R                  " X5      n
[        U5       GH?  nU R                  U5      u  p[        XSS9 VVs/ s H   u  pUc  [        R                  " U5      OUPM"     nnn[        R                  " U5      nUR                  S5      nSUU'   U(       a  U R                  U5        U(       a  U R                  U5        U R                  XUU5      nU(       aD  [        W[	        U5      SS9 H,  u  nnUR!                  5       R                  S5      US S 2U4'   M.     U(       d  GM  [        R"                  " U R%                  U5      S5      W
S S 2U4'   GMB     SnU(       a  UW4-  nU(       a  UW
4-  nU$ s  snnf )Nc              3   @   #    U  H  oR                  5       v   M     g 7fro   )numelr  s     r)   r   2NNTestCase._analytical_jacobian.<locals>.<genexpr>  s     O/N!GGII/N   r   Tr  r6   r5   rp   )r  r  r  r  r   r  r  r7   r?  r(  r'  
zeros_liker:   r  r(  r  
contiguousr  r  )rq   r  r  jacobian_inputjacobian_parametersrB  r  jacobian_inpflat_jacobian_input	num_paramjacobian_paramr=   paramd_paramr>   r  d_out
flat_d_outd_input
jacobian_xd_xress                         r)   _analytical_jacobianNNTestCase._analytical_jacobian  s   v-oo'>>%=L"&}\'B"COt/C/CF/KA/NOOI"[[@N{#A!11&9NEMPQVhlMmnMm6Aaiu''*Q>MmGn$$V,EBJJqM"**62%%e,nnVFEBG'*+>g@V_c'dOJ'*~~'7'<'<R'@Jq!t$ (e""',yy1F1Fw1OQR'Sq!t$) $, )+<= C>?"C
3 os   >'G<c                 
  ^ ^ UU 4S jnSnU(       a  U[        XRSS94-  nU(       a[  T R                  T5      u  px/ n	U H%  n
[        XRU
SS9nU	R                  US   S   5        M'     U[        R                  " U	S5      4-  nU$ )Nc                  D   > TR                  TU 5      R                  5       $ ro   )r  detach)r  r  rq   s    r)   fw*NNTestCase._numerical_jacobian.<locals>.fw  s    ==/6688r+   rp   ư>)r  )rc  r  r   )r   r  r+  r7   r  )rq   r  r  r1  r2  rD  r>  r7  r?   to_catr>   jacobians   ``          r)   _numerical_jacobianNNTestCase._numerical_jacobian  s    	9 )+*2$?@@C++F3HEF22QDQhqk!n-  EIIfa(**C
r+   c                     [        U R                  U5      S   5      nU R                  XX45      nU R                  XX45      n[	        [        U5      5      n[	        [        U5      5      n/ n	[        XxSS9 HV  u  pU
R                  5       S:w  d  M  U	R                  U
R                  USS9R                  5       R                  5       5        MX     [        U	5      S:  a   U R                  [        U	5      [        5        g g )Nr   Tr  r6   )r  )boolr  r?  rI  r  r   r'  r,  r+  r  rI  rX  rs  assertLessEqual	PRECISION)rq   r  r  r1  r2  
analytical	numericalanalytical_tnumerical_tdifferencesr  r|  s               r)   check_jacobianNNTestCase.check_jacobian  s    "4#7#7#?#BC..vnb
,,VN`	M*56=34$?DAwwyA~""155"5#5#9#9#;#?#?#AB @ {a  [!19=  r+   rp   F)TTT)rw   rx   ry   rz   r   r  r}   r~   r  r  	Parameterr  r  r   r7   r  r   r   rL  r  r  r  r(  r?  rI  rT  r{   rp   r+   r)   r  r    s    " " "bii "E$r||:LdSUS_S_N`:`4a " " "BII "$ " "  (-"		 ")"38<<"$U\\8ELL3I%IJ" !%" ":>)(2B (T1A ">,< > >r+   r  c                   h    \ rS rSr1 SkrSS jrS rS r\S 5       r	\S 5       r
S	 rSS
 jrS rSrg)TestBasei  >   r  
extra_argsrC   Nc                     X l         X@l        Xl        X0l        U R                   HI  nXe;  d  M
  US-   U;  d  M  US-   U;  d  M   US;   a  SXV'   M,  [        U R                  5        SU S35      e   XPl        0 U l        g )N_fn_size>   r[  rC   rp   z
: Specify z5 by a value, a function to generate it, or it's size!)	rN   r   r   rF   _required_arg_names
ValueErrorget_name_extra_kwargs
_arg_cache)rq   r   rN   rF   r   rt   r  s          r)   __init__TestBase.__init__	  s    	 &(,,D!dUl&&@TG^[aEa==#%FL$'8
4&H}%~ - $r+   c                     U R                   b  SU R                   -   $ SU R                  R                  -   nU R                  (       a  USU R                  -   -  nU$ )Ntest_r?   )r   r   rw   rN   )rq   	test_names     r)   ra  TestBase.get_name  sP    ==$T]]**d..777	99tyy(Ir+   c                    ^  [        U[        R                  5      (       a  U$ [        U5      (       a  [	        U5      " U 4S jU 5       5      $ U$ )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7fro   )_unpack)r  vrq   s     r)   r   #TestBase._unpack.<locals>.<genexpr>$  s     >1t||Ar!  )r  r7   r  r   type)rq   values   ` r)   rl  TestBase._unpack   s>    eU\\**L;>>>>Lr+   c                 &    U R                  SS5      $ )NrC   T_get_argrq   s    r)   rC   TestBase.constructor_args(  s    }}/66r+   c                 &    U R                  SS5      $ )Nr[  Trs  ru  s    r)   r[  TestBase.extra_args,  s    }}\400r+   c           
      *  ^ XR                   ;   d   eXR                  ;  a  US-   nUS-   nXR                  ;   a  U R                  U   U R                  U'   OX0R                  ;   a"  U R                  U   " 5       U R                  U'   OXX@R                  ;   d!   SU SU SU SU R                  5        35       eU4S jmT" U R                  U   5      U R                  U'   U(       a  U R	                  U R                  U   5      $ U R                  U   $ )Nr]  r^  z	Missing `z`, `z` or `z` for c                    > [        U [        5      (       a  U  Vs/ s H  nT" U5      PM     sn$ [        U [        R                  5      (       a  U R	                  5       $ [        R
                  " U 5      $ s  snf ro   )r  r  r7   r  rf   r   )sizessmap_tensor_sizess     r)   r}  +TestBase._get_arg.<locals>.map_tensor_sizes?  s]    !%..=BCU 0 3UCC#E5<<88$||~-${{511	  Ds   A5)r_  rc  rb  ra  rl  )rq   r  unpackfn_name	size_namer}  s        @r)   rt  TestBase._get_arg0  s
   /////&UlGwI)))(,(:(:4(@%...(,(:(:7(C(E% $6$66 \vT)F7)6$--/IZ[\62 )99K9KI9V(W%6<t||DOOD12W$//RVBWWr+   c                 &    U R                  SU5      $ )Nr  rs  )rq   r  s     r)   
_get_inputTestBase._get_inputK  s    }}Wf--r+   c                     [         ero   r  )rq   	test_cases     r)   __call__TestBase.__call__N  s    !!r+   )rc  rb  r   rN   r   rF   ) NNrW  )rw   rx   ry   rz   r_  rd  ra  rl  propertyrC   r[  rt  r  r  r{   rp   r+   r)   rZ  rZ    sO    E 7 7 1 1X6."r+   rZ  c            	       x   ^  \ rS rSr\S\S\R                  S\S\4S j5       rU 4S jr	S r
S	 rS
 rS rSrU =r$ )
ModuleTestiR  r  r  r  r  c                     [         ero   r  )rq   r  r  r  s       r)   _do_testModuleTest._do_testT  r  r+   c                   > [         TU ]  " U0 UD6  UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS	5      U l        UR                  S
S5      U l	        UR                  S5      U l
        U R                  c  [        R                  " 5       U l
        g g )Nr1  TrO   r   rb   !FIXME_no_cuda_gradgrad_comparisonFr   g-C6*?check_forward_onlyrI   )superrd  r,  r1  should_test_cudashould_test_picklerb   r  r   r  rI   r7   get_default_dtyperq   rr   rt   	__class__s      r)   rd  ModuleTest.__init__X  s    $)&)$jj)94@ &

; ="(**Xt"<$jj)94@JJ:EB 	.K6"(**-A5"I#ZZ8%!&!8!8!:D &r+   c           	      |   [        U R                  5         U R                  " U R                  6 nU R	                  5       nU R
                  b[  UR                  X#5      n[        U5      n[        U5      nU R                  XQR                  U5      S   U5      nUR                  XGSS9  U R                  (       a
   S S S 5        g U R                  XU5        U R                  (       a  [        R                  " 5        nUR                  X#5        [        R                   " X(5        UR#                  S5        [        R$                  " USS9n	UR                  UR                  X#5      UR                  X5      5        S S S 5        U R'                  XU5        S S S 5        g ! , (       d  f       N)= f! , (       d  f       g = f)Nr   F)exact_dtype)weights_only)r   rI   r   rC   r  rF   r  r   r  assertEqualr  test_noncontigr  tempfileTemporaryFiler7   saveseekloadr  )
rq   r  r  r  out	ref_input
ref_moduleexpected_outr  module_copys
             r)   r  ModuleTest.__call__f  sa   t112%%t'<'<=FOO%E  ,((7$UO	%f-
#00<U<UV\<]^_<`blm%%cU%K&& 32 	59&&++-&&v5JJv)FF1I"'**QU"CK)))*<*<V*KYM_M_`kMst . MM)U31 32  .-! 32s+   B$F-8F-;A>F9F-
F*	&F--
F;c                   ^  [        U[        5      (       a"  U Vs/ s H  nT R                  U5      PM     sn$ [        U[        5      (       a  [        U 4S jU 5       5      $ UnUR	                  5       nUn[        U5       H  nUR                  U5      S:  d  M  US-   n  O   [        R                  " [        R                  " U5      U/U5      R                  US5      R                  5       nUR                  5       S:X  d+  UR                  5       S:X  d  UR                  5       (       a   eUR                  Ul        U$ s  snf )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7fro   )noncontiguize)r  orq   s     r)   r   +ModuleTest.noncontiguize.<locals>.<genexpr>  s     <1++A..r!  r5   r   )r  r  r  r  r  r(  rg   r7   rb  
empty_likeselectrC  r,  is_contiguousrB  )rq   objr  r  ndimr  r  	noncontigs   `       r)   r  ModuleTest.noncontiguize  s   c4  3673aD&&q)377U##<<<<zz|
 tA{{1~!!e  KK!1!1&!96 BCHOOPSUVW^^`	 A%):a)?yG^G^G`G```"("6"6	# 8s   Ec           	         [        U[        R                  5      (       a  UR                  5       S:X  a  g [	        S U 5       5      (       a  g UR                  U5        UR                  U5        [        5          UR                  X#5      n[        USS5      (       a  US   nUR                  UR                  5      R                  5       nUR                  5       n[        UR                  X#XE5      5      n[        UR!                  U5      S   5      nS S S 5        U R#                  U5      nU R#                  W5      n	[%        SSS9 H  u  pU
(       a  UOUn[        U(       a  UOU	5      nUR                  U5        UR                  U5        [        5          UR                  X,5      n[        USS5      (       a  US   nUR                  X,X5      nUR'                  UW5        UR'                  UWS	SS
9  UR'                  UR!                  U5      S   W5        S S S 5        M     g ! , (       d  f       GN= f! , (       d  f       GM  = f)Nr   c              3      #    U  H9  n[        U[        R                  5      (       d  M$  UR                  5       S :H  v   M;     g7f)r   N)r  r7   r  r  )r  r=   s     r)   r   ,ModuleTest.test_noncontig.<locals>.<genexpr>  s)     JUjELL.I|quuw!|Us
   #AAreturn_indicesFr5   TFrQ   )rq  g-C6?atolrtol)r  r7   r  r  anyr  r(  r   r  r#   ry  rN  normal_r  r   r  r  r  r   r  )rq   r  r  r  rB  r  r;  r8  nc_inputnc_grad_outputcontig_icontig_gr=   gor  r&  s                   r)   r  ModuleTest.test_noncontig  s   eU\\**uyy{a/?JUJJJ''/""5)''6Fv/77 **V\\2::<K\\^Fy226&VWGy88@CDG   %%e,++K8")-"BH!xA +~FB++F3&&q)!#((36#3U;;a&C **6c>%%c62%%dG$Q%G%%i&?&?&G&JGT $# #C  $ $#s   9BH'BH9'
H69
I		c           
      
   [         (       a  U R                  (       d  [        R                  " S5      e[	        U R
                  5         U R                  5       n[        R                  [        R                  0n[        U[        5      (       a  UOU4n[        S U 5       5      n[        XCS9nU R                  " U R                  6 nU R                  " U R                  6 R                  5       R!                  5       nUR#                  U5      n	UR#                  U5      n
[%        U	S   U
S   SS9 H   u  pUR&                  R)                  U5        M"     UR+                  U5        UR+                  U5        UR-                  U5        UR-                  U5        UR/                  Xt5      nUR/                  X5      n[1        USS5      (       a
  US   nUS   nUR3                  XU R4                  SSS	9  [7        S
5       H  nUR9                  5       R;                  5       nUR=                  U5      nUR?                  XtUU5      nUR?                  XUU5      nUR3                  UUU R4                  SSS	9  [%        U	S   U
S   SS9 H"  u  nnUR3                  UUU R4                  SS9  M$     M     U R@                  (       Ga  U RB                  (       Gd  U" U6 nU" U6 n[1        USS5      (       a
  US   nUS   n[        RD                  " USS9nUR=                  U5      RG                  5       nSUl$        [        RJ                  RM                  UU[        URO                  5       5      -   USS9n[        RJ                  RM                  UU[        URO                  5       5      -   USS9n[%        UUSS9 H#  u  nnUR3                  UUU R4                  SSS	9  M%     U(       ac  URQ                  5       RS                  5       [Q        S U 5       5      -   nURQ                  5       RS                  5       [Q        S U 5       5      -   nOFURQ                  5       [Q        S U 5       5      -   nURQ                  5       [Q        S U 5       5      -   n[        RJ                  RM                  UUU4-   [        URO                  5       5      -   SS9n[        RJ                  RM                  UUU4-   [        URO                  5       5      -   SS9nUR3                  WWU R4                  SSS	9  [%        UUSS9 H#  u  nnUR3                  UUU R4                  SSS	9  M%     U RU                  XU5        S S S 5        g ! , (       d  f       g = f)NExcluded from CUDA testsc              3      #    U  H<  n[        U[        R                  5      =(       a    UR                  R                  v   M>     g 7fro   )r  r7   r  r   
is_complexr  r9   s     r)   r   'ModuleTest.test_cuda.<locals>.<genexpr>  s0     &scr^_z!U\\'B'YqwwGYGY'Ycrs   AA)type_mapr   Tr  r  Fr  r  r  rU   r5   r  )rB  )r  c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7fro   r  rI  r  r  s     r)   r   r         >eVdQRuuw{{}}Vd   *,c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7fro   r  r  s     r)   r   r    r  r  c              3   @   #    U  H  oR                  5       v   M     g 7fro   r  r  s     r)   r   r         8Y.Q.r.  c              3   @   #    U  H  oR                  5       v   M     g 7fro   r  r  s     r)   r   r    r  r.  )retain_graph)+r   r  unittestSkipTestr   rI   r  r7   rf   floatr  r  r  r   r   rC   cudar  r'  r  copy_r(  r  r  r#   r  r   r(  r  r  r   r  rb   r  
randn_likerC  rB  autogradr&  r  r  rI  r  )rq   r  	cpu_inputr  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   ModuleTest.test_cuda  s   y 5 5##$>??t112)Iekk2H+5i+G+Gii\O#&&scr&s#s $_HO))4+@+@AJ))4+@+@AGGINNPJ!11*=I!11*=I #IaL)A,t L

  ' !M &&7&&7++J7++J7"++JHJ"++JHJz#3U;;']
']
!!*t~~TUch!i 1X!+!1!1!3!;!;!=!/!7!7
!C ) 3 3JQ[]k l ) 3 3JQ[]k l%%m]^_mr%s(+IaL)A,t(T$GW))'7VW)X )U  """4+Q+Q+Q'9
'9
:'7??!+AJ!+AJ!&!1!1*D!Q!/!7!7
!C!J!J!L/3,!&!4!4#eJ,A,A,C&DD"!%	 "5 "'
 "'!4!4#eJ,A,A,C&DD"!%	 "5 "' ),NNSW(X$GW))'7VWej)k )Y (",.."2"6"6"83>eVd>e;e"eK",.."2"6"6"83>eVd>e;e"eK",.."2S8Y.8Y5Y"YK",.."2S8Y.8Y5Y"YK,,#~&77%
@U@U@W:XX!% - ' ,,#~&77%
@U@U@W:XX!% - ' %%m]^_mr%s(+FF4(H$GW))'7VWej)k )I 	Go 322s   TU++
U9)r  r  rb   rI   r1  r   r  r  )rw   rx   ry   rz   r   r   r}   r~   r  rd  r  r  r  rO   r{   __classcell__r  s   @r)   r  r  R  sY    "# "ryy " " " ";46*#UJ[H [Hr+   r  c                       \ rS rSrS rSrg)InputVariableMixini  c                 L   ^ [         R                  U S5      nU4S jmT" U5      $ )NFc                    > [        U [        R                  5      (       a3  U R                  5       (       d  U R	                  5       (       a  SU l        U $ [        U 5      " U4S jU  5       5      $ )NTc              3   4   >#    U  H  nT" U5      v   M     g 7fro   rp   )r  r  map_variabless     r)   r   GInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>#  s     Aqt}T22q   )r  r7   r  is_floating_pointr  rB  ro  )r=   r  s    r)   r  4InputVariableMixin._get_input.<locals>.map_variables  sN    !U\\**&&((ALLNN&*AOAwAqAAAr+   )rZ  r  )rq   r  r  s     @r)   r  InputVariableMixin._get_input  s(    ##D%0	B U##r+   rp   N)rw   rx   ry   rz   r  r{   rp   r+   r)   r  r    s    $r+   r  c                   J   ^  \ rS rSrU 4S jrS rS rS r\S 5       r	Sr
U =r$ )NewModuleTesti(  c                 z  > [         TU ]  " U0 UD6  UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S	S
5      U l	        UR                  SS5      U l
        UR                  SS5      U l        UR                  SS5      U l        UR                  S5      U l        UR                  SS5      U l        UR                  SS5      U l        g )Nr  Fcheck_inplacerb   Tskip_doublerE  rG   rH   r_   test_cpurs  rc   r  r  supports_fwgrad_bwgrad)r  rd  r,  r  r  rb   r  rE  rG   rH   r  rs  rc   r  r  r  r  s      r)   rd  NewModuleTest.__init__)  s   $)&)ZZ/
#ZZ?$jj)94@!::mU;K7K7$jj)95A

:t4$*JJ/Eu$M!"(**-A4"H#)::.C#D #)::.CU#K &,jj1I5&Q#r+   c           
        ^^^ [        S TR                  5        5       5      n[        U5      mUUU4S jnU R                  (       a8  TS:X  d   e[        R
                  " US   5      nTR                  TUS   U5        O<TR                  [        XSU-   U R                  U R                  U R                  S95        U R                  (       a=  TR                  [        XSU-   U R                  U R                  U R                  S95        g g )Nc              3   $   #    U  H  ov   M     g 7fro   rp   r  s     r)   r   1NewModuleTest._check_gradients.<locals>.<genexpr>:  s     6"5Qq"5   c                  @   > U(       a   eTR                  TU S T 5      $ ro   )r  )inputs_and_paramsrt   r  
num_inputsr  s     r)   fn_to_gradcheck7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck=  s&    :%%f.?.LMMr+   r5   r   )rc   	fast_modecheck_forward_ad)rc   r  check_fwd_over_rev)r  r  rs  rs  r7   r  rT  
assertTruer   rc   r  r  rb   r   r  )rq   r  r  input_tupleparamsr  test_input_jacobianr  s    ``    @r)   _check_gradientsNewModuleTest._check_gradients9  s    6&"3"3"566%
	N $$?"?"'"9"9+a."I$$V[^=PQ  ?&<P>B>U>U595M5M<@<T<T"V W
   f@TBFBYBY9=9Q9QBFB]B]"_ ` r+   c                   ^^^^^^ [         R                  " 5       n[         R                  " S5        [        U[        5      (       a  UOU4nU R                  TTU5        TR                  5         U R                  (       Ga  [        U5      S:X  d   eUS   nU R                  " U R                  SS06nUR                  n[        5          T" U5      nS S S 5        TR                  UR                  U5        [        U5      n	U	R                  5       n
[        5          U" U
5      nS S S 5        TR!                  U
R                  U5        TR                  WW5        UR"                  R                  5       R%                  5       nUR&                  b8  [         R(                  " 5          UR&                  R+                  5         S S S 5        U	R&                  b8  [         R(                  " 5          U	R&                  R+                  5         S S S 5        UR-                  U5        UR-                  U5        TR                  UR&                  U	R&                  5        SUU4S jjn[/        S U 5       5      (       a  [0        (       a  [	        S U 5       5      nTR3                  5       R5                  5         T" U6   U" [         R4                  R6                  S5        [         R4                  R9                  5       S:  aq  [	        S U 5       5      nTR5                  S5        [         R4                  R;                  S5         T" U6   S S S 5        U" [         R4                  R6                  S5        GO_S	 mU4S
 jmU4S jmU4S jm[	        U4S jU 5       5      nTR3                  5         T" U6   U" [         R6                  5        [	        U4S jU 5       5      nTR=                  5         T" U6   U" [         R>                  5        [0        (       Ga  U R@                  (       Ga  [	        U4S jU 5       5      nTR3                  5       R5                  5         T" U6   U" [         R4                  R6                  S5        [	        S U 5       5      nTRC                  5         T" U6   U" [         R6                  5        [	        S U 5       5      nTR5                  5         T" U6   U" [         R4                  R6                  S5        U RD                  (       aV  [         RF                  RD                  RI                  SS9   T" U6   U" [         R4                  R6                  S5        S S S 5        [         R4                  R9                  5       S:  aq  [	        S U 5       5      nTR5                  S5        [         R4                  R;                  S5         T" U6   S S S 5        U" [         R4                  R6                  S5        U RJ                  (       dY  [	        U4S jU 5       5      nTR=                  5       R5                  5         T" U6   U" [         R4                  R>                  S5        U RL                  (       dY  [	        U4S jU 5       5      nTRO                  5       R5                  5         T" U6   U" [         R4                  RP                  S5        [         R                  " U5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNL= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)Nr5   r   inplaceTc                    > TR                  5        H9  nTR                  X 5        Uc  M  TR                  UR                  5       U5        M;     g ro   )r  assertIsInstancer  
get_device)tensor_type	device_idr>   r  r  s      r)   assert_module_parameters_are<NewModuleTest._do_test.<locals>.assert_module_parameters_are  s@    &&(**1:())!,,.)D )r+   c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fro   )r  r7   
LongTensorr  s     r)   r   )NewModuleTest._do_test.<locals>.<genexpr>  s      D1z!U--..s   ')c              3   @   #    U  H  oR                  5       v   M     g 7fro   r  r  s     r)   r   r.    s     >+Q+r.  c              3   B   #    U  H  oR                  S 5      v   M     g7fr  r0  r  s     r)   r   r.    s     #C{!FF1II{   c                     U R                  5       (       a  U R                  U5      $ U R                  5       (       a  U R                  U5      $ U $ ro   )r  r   r  )r  realrD  s      r)   to_type'NewModuleTest._do_test.<locals>.to_type  sB    $$&&!99W----//!99T?*!Mr+   c                 4   > T" U [         R                  S 5      $ ro   )r7   float16r  r5  s    r)   to_half'NewModuleTest._do_test.<locals>.to_half  s    q%--66r+   c                 P   > T" U [         R                  [         R                  5      $ ro   )r7   float32	complex64r9  s    r)   	to_single)NewModuleTest._do_test.<locals>.to_single  s    q%--AAr+   c                 P   > T" U [         R                  [         R                  5      $ ro   )r7   r"  rC  r9  s    r)   	to_double)NewModuleTest._do_test.<locals>.to_double  s    q%--1A1ABBr+   c              3   4   >#    U  H  nT" U5      v   M     g 7fro   rp   r  r9   r?  s     r)   r   r.         Bk	!kr  c              3   4   >#    U  H  nT" U5      v   M     g 7fro   rp   r  r9   rB  s     r)   r   r.    rF  r  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7fro   r0  rE  s     r)   r   r.    s!     #MAIaL$5$5$7$7   #&c              3   @   #    U  H  oR                  5       v   M     g 7fro   )cpur  s     r)   r   r.    s     #A[EEGG[r.  c              3   @   #    U  H  oR                  5       v   M     g 7fro   r0  r  s     r)   r   r.    s     #BkFFHHkr.  F)enabledrQ   c              3   B   #    U  H  oR                  S 5      v   M     g7fr  r0  r  s     r)   r   r.    s     'G;aq		;r2  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7fro   r0  rH  s     r)   r   r.    s!     'Q[	!(9(9(;(;[rJ  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7fro   r0  )r  r9   r:  s     r)   r   r.    s     'O;a
(9(9;rJ  ro   ))r7   get_num_threadsset_num_threadsr  r  r!  __repr__r  rs  r   rC   _versionr   r  r   r  assertNotEqualr  r  r&  no_gradrz  backwardallr   r  r  FloatTensordevice_countr  rf   DoubleTensorr  rL  r  backendsflagsr  rE  half
HalfTensor)rq   r  r  r  num_threadsr  	module_ipinput_versionrB  input_ipinput_ip_clone	output_ipr&  r*  rB  r:  r?  r5  s    ``           @@@@r)   r  NewModuleTest._do_testU  s5   ++-a )%77eeXi= 	 {#q(((NE(($*?*?NNI!NNM!# $!!%..-@H%^^-N!#%n5	 $$$^%<%<mL!!&)4;;$$&..0Dzz%]]_JJ$$& %}}(]]_MM'') %OOD!t$!!%**hmm<	E 	E DDDD  >+>>KLLN!K ()?)?Czz&&(1,##C{#CCAZZ&&q)K( *,UZZ-C-CQG"7BC  BkBBKLLNK ():):;  BkBBKMMOK (););<yT222
 $#M#MM##%$,UZZ-C-CQG $#A[#AA

$,U->->? $#Bk#BB$,UZZ-C-CQG ::--33E3B,4UZZ5K5KQO C ::**,1 #('G;'G"GKKKN**1-, .01G1GK''"''Q['Q"QKMMO((*K(01H1H!L ~~"''O;'O"OKKKM&&(K(01F1FJk*w $# $# %_ %_. *)v CB .-sT   		[ 	[2$\)\9\(3'\:] 
[/2
\
\
\%(
\7:
]	
]c                 &    U R                  SS5      $ Nrc  Frs  ru  s    r)   _get_targetNewModuleTest._get_target      }}Xu--r+   c                 &    U R                  SS5      $ NrC   Frs  ru  s    r)   rC   NewModuleTest.constructor_args      }}/77r+   )rc   rb   r  r  r  rs  r  rE  r  r  r  rH   rG   )rw   rx   ry   rz   rd  r!  r  rj  r  rC   r{   r  r  s   @r)   r
  r
  (  s/    R `8Q+f. 8 8r+   r
  c                      ^  \ rS rSr\R
                  R                  S15      rU 4S jrS rS
S jr	S r
\S 5       r\S 5       rS	rU =r$ )CriterionTesti  rc  c                 n  > [         TU ]  " U0 UD6  UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        UR                  S	S5      U l	        UR                  S
S5      U l
        UR                  SS5      U l        UR                  SS5      U l        UR                  S5      U l        U R                  c  [        R                  " 5       U l        g g )NrO   Tr  Frb   r  check_bfloat16check_complexr  rG   rH   r_   rc   rI   )r  rd  r,  r  r  rb   r  rt  ru  r  rG   rH   rc   rI   r7   r  r  s      r)   rd  CriterionTest.__init__  s   $)&) &

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

:t4K6$jj)95A"(**-A4"H#ZZ8%!&!8!8!:D &r+   c                 :  ^
 [        U R                  5         U R                  " U R                  6 m
U R	                  5       nT
R                  5         [        T
5        U R                  5       nU R                  bb  UR                  T
X#U R                  S9n[        U5      [        U5      4U R                  -   T
4-   nU R                  " U6 nUR                  XF5        U R                  (       a
   S S S 5        g [        S T
R                  5        5       5      n[!        U[        5      (       d  U4U-   U4-   nU
4S jn	OX'-   U4-   nU
4S jn	[#        XU R$                  S9  U R&                  (       a  [)        XU R$                  S9  S S S 5        g ! , (       d  f       g = f)Nr[  c              3   $   #    U  H  ov   M     g 7fro   rp   r  s     r)   r   )CriterionTest.__call__.<locals>.<genexpr>  s     :&91&9r  c                    > T" X5      $ ro   rp   )r  rc  r  r  s      r)   apply_fn(CriterionTest.__call__.<locals>.apply_fn  s    !%00r+   c                    > T" XU5      $ ro   rp   )r  r  rc  r  r  s       r)   r|  r}  "  s    !&&99r+   )rc   )r   rI   r   rC   r  rT  r  rj  rF   _forward_criterionr[  r   r  r  r  r  r  r   rc   rb   r   )rq   r  r  rc  r  ref_argsr  r  inputsr|  r  s             @r)   r  CriterionTest.__call__  sb   t112%%t'<'<=FOO%E OOK%%'F  ,2265UYUdUd2e$UOXf-=>PTZS\\#00(;%%c8&&# 32& :f&7&7&9::FeU++F*fY61 6)3: h4;R;RS""h4CZCZ[E 322s   CF6BF
Fc           	        ^ S
U4S jjm[         (       a  U R                  (       d  [        R                  " S5      e[	        U R
                  5         U R                  5       nU R                  5       nU R                  " U R                  6 nU R                  " U R                  6 nT" XBS5      nUR                  5       (       d  UR                  5       (       a  T" XR5      nUR                  U5        UR                  U5        [        U5      n[        U5      n	UR                  5         U[        R                   [        R"                  1;   a9  U R                  5       nU R                  5       nU R                  " U R                  6 nUR%                  XdXSS9n
UR%                  XxXS9nUR'                  XU[        R                   [        R"                  1;   a  SOSSSS	9  UR)                  XdXUS9nUR)                  XxXUS9nUR'                  XU[        R                   [        R"                  1;   a  SOSSSS	9  S S S 5        g ! , (       d  f       g = f)NFc                    >^^ [        U [        R                  5      (       a,  U R                  5       R	                  TS9R                  T5      $ [        U [        5      (       a  [        UUU4S jU  5       5      $ U $ )Nr   c              3   8   >#    U  H  nT" UTT5      v   M     g 7fro   rp   )r  r  convert_dtyper   rB  s     r)   r   ACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>/  s     QS]1e]CCSs   )r  r7   r  rC  r   requires_grad_r  )r  r   rB  r  s    ``r)   r  .CriterionTest.test_cuda.<locals>.convert_dtype+  sY    #u||,,zz|U3BB=QQC''QSQQQ
r+   r  Trx  rS   g-C6:?r   r  rV  )r   r  r  r  r   rI   r  rj  r   rC   r  r  ro  r   r  r7   r_  bfloat16r  r  _backward_criterion)rq   r  r   r[  r  
cpu_targetr  r  	gpu_input
gpu_targetr  r  r  r  r  s                 @r)   rO   CriterionTest.test_cuda*  s   	 y 5 5##$>??t112)I))+J))4+@+@AJ))4+@+@AJ &i=I++--1F1F1H1H*:=
OOE"OOE" y)I
+JOO U^^44 OO-	!--/
!--t/D/DE
"55jZ5oJ"55jZ5oJ!!*/4U^^8T/TtZ^efty " { &99z* : VM%99z* : VM !!-/4U^^8T/TtZ^efty " {I 322s   G%H??
Ic                 &    U R                  SS5      $ ri  rs  ru  s    r)   rj  CriterionTest._get_target]  rl  r+   c                 &    U R                  SS5      $ rn  rs  ru  s    r)   rC   CriterionTest.constructor_args`  rp  r+   c                 &    U R                  SS5      $ )Nr[  Frs  ru  s    r)   r[  CriterionTest.extra_argsd  s    }}\511r+   )rc   rt  ru  r  rb   r  rI   r  r  rH   rG   ro   )rw   rx   ry   rz   rZ  r_  unionrd  r  rO   rj  r  rC   r[  r{   r  r  s   @r)   rr  rr    s^     #66<<hZH; #\J1{f. 8 8 2 2r+   rr  c                    [         R                  " U[         R                  USS9nUbC  [         R                  " U[         R                  US9U-  R                  5       R                  5       nU" U5      n[         R                  " XrS9nUR                  U5        UR	                  5       n	UR                  5       R	                  5       R                  5       n
UR	                  5       nU	" U
5      nUR                  U5        U R                  X|XDSS9  U R                  UR                  R                  U
R                  R                  XDSS9  g )NT)r   r  rB  r  )r  Fr  )r7   r   r=  r   r  r  r  r  rX  rC  r  r&  r  )r  opr  inp_dimsprecr|  r  out1grad_input1op_bfp16r  grad_input2out2s                r)   _test_bfloat16_opsr  i  s   [[vUYZF**XU^^FKlZaacrrtf:D""47KMM+ {{}H]]_%%'668F&&(KFDMM+$4N&++**FKK,<,<4`efr+   c                 B   U(       d  UR                  S5        U" U5      nU(       d'  [        R                  " U5      nUR                  U5        U(       a.  U R	                  UR                  5       UR                  5       5        U(       d  UR                  5        HP  nUR                  (       d  M  U R	                  UR                  [        R                  " UR                  5      5        MR     U R	                  UR                  [        R                  " U5      5        g g )NT)
r  r7   	rand_likerX  r  rg   r  rB  r&  r/  )r  r  r  
check_size	inferencer  gOr>   s           r)   _test_module_empty_inputr  |  s    4 
+C__S!Rchhj#((*5""$A%%affe.>.>qvv.FG % 	chh(8(8(=>	 r+   c                     ^  " S S[         R                  5      m " U4S jS[         R                  5      n T" 5       nU " 5       n[         R                  " X"5      nXU4$ )Nc                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ ) _create_basic_net.<locals>.Layeri  c                    > [         TU ]  5         [        R                  " [        R
                  " SS5      5      U l        [        R                  " [        R                  " SSSS5      5      U l	        g )NrZ   rU   r5   r  )
r  rd  r}   rX  r7   r  layer_dummy_paramBufferr?  layer_dummy_buf)rq   r  s    r)   rd  )_create_basic_net.<locals>.Layer.__init__  sJ    G%'\\%++a2C%DD"#%99U[[Aq!-D#ED r+   )r  r  r  Nrw   rx   ry   rz   rd  r{   r  r  s   @r)   Layerr    s    	F 	Fr+   r  c                   0   >^  \ rS rSrSUU 4S jjrSrU =r$ )_create_basic_net.<locals>.Neti  c                    > [         TU ]  5         T" 5       U l        [        R                  " [
        R                  " SS5      5      U l        [        R                  " [
        R                  " SSSS5      5      U l
        g )NrZ   rU   r  r5   )r  rd  l1r}   rX  r7   r  dummy_paramr  r?  	dummy_buf)rq   r  r  s    r)   rd  '_create_basic_net.<locals>.Net.__init__  sR    GgDG!||EKK1,=>DYYu{{1aA'>?DNr+   )r  r  r  r  r  )r  r  s   @r)   Netr    s    	@ 	@r+   r  )r}   r~   
Sequential)r  lr|  r|  r  s       @r)   _create_basic_netr    sN    F		 F@bii @ 	AA
aA7Nr+   )rT  F)NrT  )NrT  r  )Nr  rT  r  )rT  r  )rT  )r  rT  )r5   r5   NrT  )r   rT  )r  rQ   rF  FrT  )rp   r  Nr  )abcr   r  r  copyr   	functoolsr   r   	itertoolsr   operatorr   r7   
torch.cudatorch.nnr}   torch.nn.functional
functionalr   r	   r$   torch.testing._internalr
   $torch.testing._internal.common_utilsr   r   r   r   r   r   r   r   r   #torch.testing._internal.common_cudar   r   torch.autograd.gradcheckr   r   torch.autogradr   torch.typesr   torch.backends.cudnntypingr   r   collections.abcr   r   r  rN  r*   r/   r   rf   r  get_device_propertiesgcnArchNamemodule_testsri   r   r   r   r   r   r   r   r   r   r  r  r  r,  r3  r:  rL  rT  r\  ro  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r/  r@  rH  rU  r\  rj  rt  r}  r  r  r  r  r  r  r  r  r  r7  r:  rH  rP  r]  r_  rh  rm  rq  rv  r}  r  r  r  r  r  r  r  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_infor6  r-  r  rZ  r  r  r
  rr  r  r  r  rp   r+   r)   <module>r     s       %        - 0S S S F K # (   $ $&&	'| 	 >Zll	 	'J:%d'UZZ5U5UVW5X5d5d*dell 	ll	 	#Nll 	6ll	 	#+] ll	]8|6
$$ $(&$$$$ "$ $ "$ $$$ $ $"$$$,$.$.$"$$$,$"$$$,$"$"$"$"$""$$$$$$$"$"$"$"$*$$$$$$$$$($,6"eP3 BF"(4 TZ=@, Z^RU%IP [a14
  @D &, 	 4.  ]b*0 "L %#$7DI $*$:6.0844 4- D) & D!  %
<jIOD)6	{3'+S8!ll /0 J I*9+6=/*8!ll /0 " 	AI
 DFpqEGklGIlmACghPRijX3 DFde 	X2
  !KMcd1% !6 -u5A ,d39o 
   %
.56W6@/B*T8Y#6	{3'+S"'$)8 ,00t<  >AA$KJ##J/34/B x> x>vJ" J"ZDH DHN$ $E8&
 E8Pv2& v2rg&? r+   