
    sh                       % 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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,J-r-  S SK.J/r/  \R`                  r0Sr1S r2S r3\4" SSSSS SS\Rj                  S9\4" SSSSSS SS\Rj                  S9	\4" SS S!\Rj                  S"9\4" SS#S$S%S&S!\Rj                  S'9\4" S(S)S* \Rj                  S+9\4" S,S-S.S/S!S!\Rj                  S09/r6S1 r7S2 r8S3 r9S4 r:S5 r;S6 r<S7 r=S8 r>S9 r?S: r@S; rAS< rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSE rKSF rLSG rMSH rNSI rOSJ rPSK rQSL rRSM rSSN rTSO rUSP rVSQ rWSR rXSS rYST rZSU r[SV r\SW r]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdS_ reS` rfSa rgSb rhSc riSd rjSe rkSf rlSSg jrm  SSh jrn  SSi jro  SSj jrp  SSk jrq  SSl jrrSSm jrsSSn jrtSo ruSSp jrvSSq jrwSSr jrxSs rySSt jrzSSu jr{  SSv jr|SSw jr}SSx jr~\m\" \mSSy9\r\n\s\t\v\w\x\z\{\|\}\~\qSz.r\4S{\+4   \S|'   / rS} r/ S~Qr/ SQr\
" \\5       H8  u  rr\4" \ S\ 3\S.S jSS\S!\Rj                  S9r\GR                  \5        M:     \ H1  r\4" S\ 3S S S \S!\Rj                  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\4\\44   \S'   S!S!S!S!S!S.r/ SQr\
" \\5       Hp  u  u  rrrr\4" \ S\ 3\S.S j\4S j\4S j\S\GR                  \S5      S9r\GR                  \0 5      r\GR%                  \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)TestCaseto_gpufreeze_rng_stateis_iterable	gradcheckgradgradcheckset_default_dtypeskipIfTorchDynamo)	TEST_CUDASM90OrLater)_get_numerical_jacobian_iter_tensors)Variable)_TensorOrTensors)CallableUnionAny)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     u/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/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))   r/   c                     [         R                  " XS   R                  5       5      US   R                  SS5      R	                  SS5      -   $ )Nr      r1   r0   )torchmmtviewexpandip_s      r'   <lambda>r>   l   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)r/   r0   Fz+torch::nn::LinearOptions(10, 8).bias(false)no_biasc                 P    [         R                  " XS   R                  5       5      $ Nr   )r5   r6   r7   r:   s      r'   r>   r>   w   s    UXXa1%:r)   )	r@   rA   rB   rC   descrD   rE   rF   rG   RReLU)r3      rM   F)r@   rC   	test_cudarG   皙?g?/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r1   r1      with_up_downr@   rA   rB   rC   rK   rN   rG   FlattenrM      r1   rR   c                 0    [         R                  " U S5      $ Nr3   )r5   flatten)r;   r=   s     r'   r>   r>      s    5==A#6r)   )r@   rC   rD   rG   CrossMapLRN2d)rR   r?   MbP?rM   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)rM   rW      r^   )r@   rA   rB   rC   check_gradgradcheck_batched_gradrG   c                      [        [        U S5      n[        R                  " U5      R                  " U 6 R                  5       $ rY   )r   r   r5   randpermr8   double)sizetotals     r'   _rand_tensor_non_equalrf      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)   rm   N)__name__
__module____qualname____firstlineno__rr   __static_attributes__)rp   rq   s   r'   FunctionalModuleri      s    	' 	'r)   ry   )nnModule)rp   rq   ry   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$ )Nr/   PoissonNLLLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ Nnoner   )Fpoisson_nll_losstype_asr;   r7   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      $ Nr/   r5   randrm   r)   r'   r>   r      s    B+r)   _get_input()r   c                 H   > U R                  5       TR                  U 5      -
  $ rl   )expr   r;   r=   r7   s     r'   r>   r      s    1557QUU1X#5r)   Ffullnameconstructorcpp_function_callinput_fncpp_var_maprD   picklerG   r5   randndictr|   rc   r7   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   r/   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   r/   y&1?v?r5   r   clamp_rm   r)   r'   r>   r          B+226:Fr)   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ rY   logr   s     r'   r>   r      *    Q[AEa!e[[]3J%J#Kr)   FgǺF?	r   r   r   r   r   rD   r   	precisionrG   )r   r5   r   gttorc   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$ )Nrm   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      $ Nrm   r   r   r   rm   r)   r'   r>   r          B..vzBr)   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ rY   r   r   s     r'   r>   r      r   r)   Fr   )r5   r   r   r   rc   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   r/   dtyper   BCELoss_weights_no_reducec                 n   > [         R                  " U TR                  U 5      TR                  U 5      SS9$ Nr   r+   r   r   r;   r7   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   rm   r)   r'   r>   r      r   r)   r   r   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ rY   r   )r;   r<   r%   r7   r,   s      r'   r>   r      s0    q1557{a!eA{{}5L'L%MPW%Wr)   Fa2U0*3?r   )	r   r5   r   rc   r   r   r   r   r|   r7   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$ )Nrm   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   rm   r)   r'   r>   r      r   r)   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ rY   r   r;   r=   r7   r,   s     r'   r>   r      s/    Q[AEa!e[[]3J%J#Kg#Ur)   F)r   r   r   r   r   rD   r   rG   )r5   r   r   r   rc   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   r/   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   rm   r)   r'   r>   r     r   r)   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ rY   r   r;   r=   sigmoidr7   s     r'   r>   r     8    Q)9%9QUq7ST:~FZFZF\<\%\#]r)   F	r   r   r   r   r   rD   r_   r   rG   
r   r5   r   r   r   rc   rz   Sigmoidr   r|   r   r7   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   r/   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   rm   r)   r'   r>   r     r   r)   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ rY   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	$ )Nrm   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>-  r   r)   r   c                  N    [         R                  " S5      R                  SS5      $ r   r   rm   r)   r'   r>   r   0  r   r)   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ rY   r   r   s     r'   r>   r   2  r   r)   Fr   )	r5   r   r   r   rc   rz   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	$ )Nr/   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>>      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   r5   r   r   rm   r)   r'   r>   r   @      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   B      {+Aqyy|vNr)   TF	r   r   r   r   r   rD   supports_forward_adr   rG   r5   r   rc   r   r|   r   s   @r'   $kldivloss_with_target_no_reduce_testr
  9  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	$ )Nr/   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>N  r   r)   r   c                  L    [         R                  " SS5      R                  5       $ r   r   rm   r)   r'   r>   r  P  r   r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r'   r>   r  R  r  r)   TFr  r	  r   s   @r'   kldivloss_no_reduce_testr  I  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	$ )Nrm   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>_  r   r)   r   c                  J    [         R                  " S5      R                  5       $ Nrm   r   rm   r)   r'   r>   r  a      B++-r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r'   r>   r  c  r  r)   TFr  r	  r   s   @r'   kldivloss_no_reduce_scalar_testr  Z  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	$ )Nr/   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>o      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   rm   r)   r'   r>   r   q  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   s      56q!))A,RXYr)   TFr  r5   r   rc   r   r   r|   r   s   @r'   (kldivloss_with_log_target_no_reduce_testr)  j  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	$ )Nr/   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   rm   r)   r'   r>   r-    r   r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r%  r  r   s     r'   r>   r-    r'  r)   TFr  r(  r   s   @r'   #kldivloss_no_reduce_log_target_testr0  z  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	$ )Nrm   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   rm   r)   r'   r>   r4    r  r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r%  r  r   s     r'   r>   r4    r'  r)   TFr  r(  r   s   @r'   *kldivloss_no_reduce_scalar_log_target_testr7    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	$ )NrM   rW   r1   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      $ NrM   rW   r1   r5   r   rm   r)   r'   r>   r=        Q1-r)   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rl   r   absr   s     r'   r>   r=        A		!$4#9#9#;r)   TFr  r5   r   rc   r   r|   r   s   @r'   l1loss_no_reduce_testrI    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$ )NrM   rW   r1   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>  r>  r)   r?  c                  L    [         R                  " SSS[         R                  S9$ )NrM   rW   r1   r   )r5   r   cdoublerm   r)   r'   r>   rM    s    Q1EMMBr)   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rl   rE  r   s     r'   r>   rM    rG  r)   TF)r   r   r   r   r   rD   r  r   )r5   r   rO  r   r|   r   s   @r'   l1loss_no_reduce_complex_testrQ    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	$ )Nrm   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>  r>  r)   r?  c                  .    [         R                  " S5      $ r  rB  rm   r)   r'   r>   rU        Rr)   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rl   rE  r   s     r'   r>   rU    rG  r)   TFr  rH  r   s   @r'   l1loss_no_reduce_scalar_testrY    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	$ )NrV   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   r_  c                 ,   > U T-
  R                  S5      $ NrM   powr;   r=   r`  s     r'   r>   ra        AJ#3#3A#6r)   TF	r   r   r   rC   r   rD   r  r   rG   rH  rC   r`  s    @r'   mseloss_no_reduce_testrl    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	$ )Nrm   r   MSELoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r]  r_  s    r'   r>   /mseloss_no_reduce_scalar_test.<locals>.<lambda>  rb  r)   rc  r   r_  c                 ,   > U T-
  R                  S5      $ re  rf  rh  s     r'   r>   rp    ri  r)   TFrj  rH  rk  s    @r'   mseloss_no_reduce_scalar_testrr    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   r/   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;   rq   r7   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   r/   r   rm   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   ry  r;   r=   rq   r7   s     r'   r>   r{    (    y)!QYYq\->->-@KFKr)   Fr   
r   r5   emptyuniform_r   floorry  r   r|   rc   rq   r7   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   r/   rM   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   rx  r   ry  intstrrz  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   rm   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   r/   c                 ,   > TR                  U 5      SS.$ r   r   r;   r+   s    r'   rq   .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$ rl   rw  rz  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   r/   {Gz?r5   r   addr   rm   r)   r'   r>   r    #    B+//599;r)   r   r;   r7   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   r5   r  r  r   r  ry  r   r   r|   rc   rq   r7   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   r/   c                 .   > TR                  U 5      SSS.$ )Nr   rM   r+   r   r  r  r  s    r'   rq   ;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$ rl   )r   rx  r   ry  datarz  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  rm   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  1  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   r/   c                 .   > TR                  U 5      SSS.$ )Nr   r4   r  r  r  s    r'   rq   ?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$ rl   rw  rz  s    r'   r>   Anllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>B  r  r)   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone).ignore_index(-1))r   r  r   r  c                 l   > [         S   " U TR                  U 5      R                  5       40 T" U 5      D6$ r  r  r  s     r'   r>   r  H  r  r)   F)r   r   r   inputr   rD   r   rG   )r   r5   r  r  r   r  ry  r   r   r|   rc   r  r   r  s   @@@r'   /nllloss_no_reduce_weights_ignore_index_neg_testr  7  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$ )NrM   rR   rW   r   r   NLLLoss2d_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ rv  rw  rz  s    r'   r>   *nllloss2d_no_reduce_test.<locals>.<lambda>T  r|  r)   r}  c                  P    [         R                  " SSSS5      R                  5       $ NrM   rW   rR   r   rm   r)   r'   r>   r  W      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  Y  (    {+Aqyy|/@/@/BMfMr)   Fr   	r   r5   r   r   r  ry  r   r|   rc   r  s   @@r'   nllloss2d_no_reduce_testr  N  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$ )NrM   rR   rW   r3   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  rz  s    r'   r>   7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>e  r  r)   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(1).reduction(torch::kNone))c                  P    [         R                  " SSSS5      R                  5       $ r  r   rm   r)   r'   r>   r  i  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  k  r  r)   Fr   r  r  s   @@r'   %nllloss2d_no_reduce_ignore_index_testr  _  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$ )NrM   rR   rW   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r'   rq   0nllloss2d_no_reduce_weights_test.<locals>.kwargsu  r  r)   NLLLoss2d_no_reduce_weightsc                 z   > [         R                  " U TR                  U 5      R                  5       40 T" U 5      D6$ rl   rw  rz  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   rm   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  q  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$ )NrM   rR   rW   r   r   NLLLossNd_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ rv  rw  rz  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   rm   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$ )NrM   rR   rW   r3   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  rz  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   rm   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$ )NrM   rR   rW   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r'   rq   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$ rl   rw  rz  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   rm   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	$ )NrM   rW   r1   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      $ rA  rB  rm   r)   r'   r>   r    rC  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  rH  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	$ )Nrm   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  rB  rm   r)   r'   r>   r    rW  r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r'   r>   r    r  r)   TFr  rH  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	$ )NrM   rW   r1   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      $ rA  rB  rm   r)   r'   r>   r    rC  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  rH  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	$ )NrM   rW   r1   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      $ rA  rB  rm   r)   r'   r>   r    rC  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  rH  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	$ )NrM   rW   r1   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      $ rA  rB  rm   r)   r'   r>   r(    rC  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	$ )Nrm   !MultiLabelMarginLoss_0d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multilabel_margin_lossr   ry  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  rB  rm   r)   r'   r>   r2    rW  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiLabelMarginLossr   r   r  r  r   ry  r   s     r'   r>   r2    ,    56q!&&..:K:P:P:R^der)   TF)	r   r   r   r   r   rD   check_sum_reductionr_   r   )r5   zerosry  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
$ )Nr/   !MultiLabelMarginLoss_1d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r0  r   s    r'   r>   8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>+  r3  r)   r4  c                  .    [         R                  " S5      $ r   rB  rm   r)   r'   r>   rA  .  rW  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r7  r9  r   s     r'   r>   rA  0  r:  r)   TF
r   r   r   r   r   rD   r;  r_   r   rG   r  r   s   @r'   &multilabelmarginloss_1d_no_reduce_testrE  &  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
$ )NrR   r/   g         r4   minMultiLabelMarginLoss_index_negc                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r0  r   s    r'   r>   5multilabelmarginloss_index_neg_test.<locals>.<lambda>=  r3  r)   r4  c                  0    [         R                  " SS5      $ NrR   r/   rB  rm   r)   r'   r>   rL  @      Q+r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r7  r9  r   s     r'   r>   rL  B  r:  r)   TFrD  )r   r5   clampr   r  r   r  ry  r   r|   rc   r   s   @r'   #multilabelmarginloss_index_neg_testrR  8  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
$ )NrR   r/   MultiLabelMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r0  r   s    r'   r>   5multilabelmarginloss_no_reduce_test.<locals>.<lambda>O  r3  r)   r4  c                  0    [         R                  " SS5      $ rN  rB  rm   r)   r'   r>   rV  R  rO  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r7  r9  r   s     r'   r>   rV  T  r:  r)   TFrD  r  r   s   @r'   #multilabelmarginloss_no_reduce_testrY  J  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	$ )Nr/   r   rM   r3   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>a  r   r)   zvF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().reduction(torch::kNone))c                  .    [         R                  " S5      $ r   rB  rm   r)   r'   r>   r_  d  rW  r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NHingeEmbeddingLossr   r   r  r   s     r'   r>   r_  f  s    34Q		!PVWr)   TF	r   r   r   r   r   rD   r;  r   rG   
r   r5   r   r   r   rc   mul_subr   r|   r   s   @r'   !hingeembeddingloss_no_reduce_testrg  \  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	$ )Nr/   r   rM   r3   #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>r  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   rB  rm   r)   r'   r>   rn  u  rW  r)   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )Nrb  r  r   rl  r  r   s     r'   r>   rn  w  s     34Q		!S\bcr)   TFrc  rd  r   s   @r'   (hingeembeddingloss_margin_no_reduce_testrq  m  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	$ )NrR   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      $ )NrR   rB  rm   r)   r'   r>   rv    s    Q*r)   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NSoftMarginLossr   r   r  r   s     r'   r>   rv    s    /0AIIaLFSr)   TFr  rH  r   s   @r'   softmarginloss_no_reduce_testrz  ~  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	$ )NrR   r/   rM   "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      $ rN  rB  rm   r)   r'   r>   r    rO  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      -  $ Nr3   dimr   r   sumrd   r   s     r'   r>   r    s[    199;??$$A1"1C1C1E'EEFKKPQKRUVU[U[\]U^^r)   Fr   r5   r   r   r  r   r|   rc   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
$ )NrR   r/   rM   *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      $ rN  rB  rm   r)   r'   r>   r    rO  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)   TFrD  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
$ )NrR   r0   MultiMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multi_margin_lossr   ry  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      $ rN  rB  rm   r)   r'   r>   r    rO  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiMarginLossr   r   r9  r   s     r'   r>   r    ,    01!QVV^^A5F5K5K5MY_`r)   TFrD  r5   r   r   r  ry  r   r|   rc   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
$ )Nr3   r0   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   rB  rm   r)   r'   r>   r    rW  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r9  r   s     r'   r>   r    r  r)   TFrD  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
$ )Nrm   r0   ,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   rB  rm   r)   r'   r>   r    rW  r)   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r9  r   s     r'   r>   r    r  r)   TFrD  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
$ )NrR   r0   MultiMarginLoss_p_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ )NrM   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      $ )NrR   r/   r  gGz?)r5   r   r   rm   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  rM   r   r  r9  r   s     r'   r>   r    s/    01!QVV^^A5F5K5K5MQR^der)   TFrD  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
$ )NrR   r0    MultiMarginLoss_margin_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ rk  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      $ rN  rB  rm   r)   r'   r>   r    rO  r)   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       SSS9$ )Nr  r  r   rl  r9  r   s     r'   r>   r    s1    01!QVV^^A5F5K5K5M9<Pr)   TFrD  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
$ )NrR   r0   r/   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      $ rN  rB  rm   r)   r'   r>   r    rO  r)   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       TSS9$ )Nr  r   r   r9  r   s     r'   r>   r    s1    01!QVV^^A5F5K5K5M9@FTr)   TFrD  )r5   r   r   r  ry  rc   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 rJ   
isinstancelisttuple	unsqueezeinpr7   s     r'   unsqueeze_inp0single_batch_reference_fn.<locals>.unsqueeze_inp-  B    cD%=)),/0CqKKNC00}}Q 1   Ar   N)r  r5   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   / [        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[-        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        SSSSSSS[f        Rh                  S9P[e        SSS	SSS
SS[f        Rh                  S9	P[e        SSSSSSSS[f        Rh                  S9	P[e        SSSSSSSS[f        Rh                  S9	P[e        SSSSSSSS[f        Rh                  S9	P[e        SSSSSSSS[f        Rh                  S9	P[e        SSSSSSSSS9P[e        SS SSSS[f        Rh                  S 9P[e        S!S" S#S$SSS[f        Rh                  S%9P[e        S&S' S(SSSS[f        Rh                  S%9P[e        S)S* S+SSSS[f        Rh                  S%9P[e        S,S- S.SSSS[f        Rh                  S%9P[e        S/S0 S1SSSS[f        Rh                  S%9P[e        S2S3 S4SS5SS[f        Rh                  S69P[e        S2S7S8S9SS:SS[f        Rh                  S9	P[e        S2S;S<S9SS=SS[f        Rh                  S9	P[e        S>S? S@SSASS[f        Rh                  S69P[e        SBSCSDSESSSS[f        Rh                  SF9	P[e        SBSGSHSISSJSSS[f        Rh                  SK9
P[e        SBSLSMSISSNSSS[f        Rh                  SK9
P[e        SBSOSPSQSS=SSS[f        Rh                  SK9
P[e        SBSRSSSTSS:SSSU[f        Rh                  SK9
P[e        SBSCSDSVSSSSSW9P[e        SXSY SZS[SSSSU[f        Rh                  S\9	P[e        S]S^ SZS[SSSU[f        Rh                  S_9P[e        S`Sa SbScSSS[f        Rh                  S%9P[e        SdSe SfScSSS[f        Rh                  S%9P[e        SgSh SiScSSS[f        Rh                  S%9P[e        SjSkSlSSmSSS[f        Rh                  Sn9	P[e        SjSoSpSqSS=SSS[f        Rh                  SK9
P[e        SjSrSsSqSS:SSS[f        Rh                  SK9
P[e        StSu SvSwSSSS[f        Rh                  S\9	P[e        SxSy SzS{SS[f        Rh                  S 9P[e        S|S} S~S{SS[f        Rh                  S 9P[e        SS SS{SS[f        Rh                  S 9P[e        SS SS{SS[f        Rh                  S 9P[e        SS SSSS[f        Rh                  S 9P[e        SSSSSSSS[f        Rh                  SF9	P[e        SSSSSS:SSS[f        Rh                  SK9
P[e        SSSSSSSSS[f        Rh                  SK9
P[e        SSSSSS
SSS[f        Rh                  SK9
P[e        SSSSSSSSS[f        Rh                  SK9
P[e        SSSSSSSSS9P[e        SS SSSSSS[f        Rh                  S\9	P[e        SS SSSS[f        Rh                  S 9P[e        SS SSSS[f        Rh                  S 9P[e        SS SSSSS[f        Rh                  S%9P[e        SS SSSSS[f        Rh                  S%9P[e        SS SSSSS[f        Rh                  S%9P[e        SSSSSSS[f        Rh                  S9P[e        SSSSSS=SS[f        Rh                  S9	P[e        SSSS[f        Rh                  S9P[e        SSSS[j        S[f        Rh                  S9P[e        SSSS SSS9P[e        SSSS S[f        Rh                  [m        S5      S9P[e        SSSS SS[f        Rh                  [m        S5      S9P[e        SSSS SS[f        Rh                  S9P[e        SSSS SS[f        Rh                  S9P[e        SSSS SS[f        Rh                  S9P[e        SSSS SS[f        Rh                  S9P[e        SS SS S[f        Rh                  S9P[e        SS SS S[f        Rh                  S9P[e        SS SS S[f        Rh                  S9P[e        SS SS SSS9P[e        S SS SSSS9P[e        SSSS[f        Rh                  S9P[e        SSSS[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9SSSS[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9SSSSGS 9P[e        [o        [p        Rr                  GSS SS9SGSGSS[f        Rh                  S9P[e        [o        [p        Rr                  S GSSS9GSSGSS[f        Rh                  S9P[e        [o        [p        Rr                  SS GSSGS9GS	SGS
S[f        Rh                  S9P[e        [o        [p        Rr                  GSS GSSGS9GSGSGSS[f        Rh                  S9P[e        [o        [p        Rr                  S GSGSSGS9GSSGSS[f        Rh                  S9P[e        [o        [p        Rr                  SS GSSGS9GS	SGSSGS 9P[e        [o        [p        Rr                  SS GSSGS9GSSGSS[f        Rh                  S9P[e        [o        [p        Rr                  S GSGSSGS9GSSGSS[f        Rh                  S9P[e        [o        [p        Rr                  GSS SS9GSGSGSS[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9GSGSGSS[f        Rh                  S9P[e        [o        [p        Rr                  GSS SS9GSGSGSS[f        Rh                  S9P[e        [o        [p        Rr                  S GSSS9GS GSGS!S[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9GSGS"GS#SGS 9P[e        [o        [p        Rr                  SS GS$SGS9GS%GSGS&S[f        Rh                  S9P[e        [o        [p        Rr                  SS GS$SGS9GS%GS"GS'SGS 9P[e        [o        [p        Rr                  GS(S GS$SGS9GS)GS*GS+S[f        Rh                  S9P[e        [o        [p        Rr                  S GSGS$SGS9GS,GSGS-S[f        Rh                  S9P[e        [o        [p        Rr                  S GS.GS$SGS9GS/GSGS0S[f        Rh                  S9P[e        [o        [p        Rr                  S GS1GS$SGS9GS2GSGS3S[f        Rh                  S9P[e        [o        [p        Rr                  GS(S GS$SGS9GS4GSGS5S[f        Rh                  S9P[e        [o        [p        Rr                  S GS1GS$SGS9GS6GSGS7S[f        Rh                  S9P[e        [o        [p        Rr                  SS GS8SGS9GS9GSGS:S[f        Rh                  S9P[e        [o        [p        Rr                  SS GS8SGS9GS9GS"GS;SGS 9P[e        [o        [p        Rr                  GS(S GS8SGS9GS<GS*GS=S[f        Rh                  S9P[e        [o        [p        Rr                  S GSGS8SGS9GS>GSGS?S[f        Rh                  S9P[e        [o        [p        Rr                  S GS.GS8SGS9GS@GSGSAS[f        Rh                  S9P[e        [o        [p        Rr                  S GS1GS8SGS9GSBGSGSCS[f        Rh                  S9P[e        [o        [p        Rr                  GS(S GS8SGS9GSDGSGSES[f        Rh                  S9P[e        [o        [p        Rr                  S GS1GS8SGS9GSFGSGSGS[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9GSHGSIGSJS[f        Rh                  S9P[e        [o        [p        Rr                  SS SS9GSHGSKGSLSGS 9P[e        [o        [p        Rr                  GSMS SS9GSNGSOGSPS[f        Rh                  S9P[e        [o        [p        Rr                  S GSSS9GSQGSIGSRS[f        Rh                  S9P[e        [o        [p        Rr                  SS GSSSGS9GSTGSIGSUS[f        Rh                  S9P[e        [o        [p        Rr                  SS GSSSGS9GSTGSKGSVSGS 9P[e        [o        [p        Rr                  GSWS GSSSGS9GSXGSYGSZS[f        Rh                  S9P[e        [o        [p        Rr                  S GS[GSSSGS9GS\SGS]GS^S[f        Rh                  GS_9P[e        [o        [p        Rr                  GSWS GSSSGS9GS`GSYGSaS[f        Rh                  S9P[e        [o        [p        Rr                  S GS[GSSSGS9GSbGSOGScGS^S[f        Rh                  GS_9P[e        [o        [p        Rt                  GSdGSe9GSfGSgGShS[f        Rh                  S9P[e        [o        [p        Rt                  GSi[f        Rv                  GSj9GSkGSgGSlSS[f        Rh                  GSm9P[e        [o        [p        Rt                  GSiGSe9GSnGSoGSpS[f        Rh                  S9P[e        [o        [p        Rt                  GSiGSe9GSnGSqGSrS[f        Rh                  S9P[e        [o        [p        Rt                  GSi[f        Rv                  GSj9GSkGSqGSsSS[f        Rh                  GSm9P[e        [o        [p        Rt                  GStGSe9GSuGSvGSwSS[f        Rh                  GSx9P[e        [o        [p        Rt                  GSyGSe9GSzGSvGS{SS[f        Rh                  GSx9P[e        [o        [p        Rt                  GSdGSe9GSfGS|GS}SSGS~9P[e        [o        [p        Rx                  GSdGSe9GSGSgGSS[f        Rh                  S9P[e        [o        [p        Rx                  GSiGSe9GSGSoGSS[f        Rh                  S9P[e        [o        [p        Rx                  GSiGSe9GSGSqGSS[f        Rh                  S9P[e        [o        [p        Rx                  GStGSe9GSGSvGSS[f        Rh                  S9P[e        [o        [p        Rx                  GSyGSe9GSGSvGSS[f        Rh                  S9P[e        [o        [p        Rx                  GStGSe9GSGS|GSSGS 9P[e        GSGS GSGSSS[f        Rh                  GS9P[e        GSGS GSGSSS[f        Rh                  GS9P[e        GSGS GSGSS[j        S[f        Rh                  GS9P[e        GSGS GSGSSS[f        Rh                  GS9P[e        GSGS GSGSSS[f        Rh                  GS9P[e        GSGS GSGS[j        SS[f        Rh                  GS9P[e        GSGSGSGS|GSS[f        Rh                  GS9P[e        GSGS [f        Rh                  GS9P[e        GSGS GS[f        Rh                  GS9P[e        GSGS GS[f        Rh                  GS9P[e        GSGSGSGS GS[f        Rh                  GS9P[e        GSGS [j        S[f        Rh                  GS9P[e        GSGSGSGSGSSGSSS[f        Rh                  GS9
P[e        GSGSGSGSGS[p        Rz                  4GSGSSGSS[|        (       a  GSOS[f        Rh                  GS9	P[e        GSGSGSGS SGSSS[f        Rh                  GS9	P[e        GSGSGSGSGS[p        Rz                  4GSGS SGSSS[f        Rh                  GS9	P[e        GSGSGSGSGSGSGS[p        R~                  4GSGS SGSS[|        (       a  SOGS[f        Rh                  GS9	P[e        GSGSGSGS GS SSS[f        Rh                  GS9	P[e        GSGSGSGS[j        S[f        Rh                  GS9P[e        GSGSGS[f        R                  " GSGS/5      4GS[j        S[f        Rh                  GS9P[e        GS/ GSQGSS4GSGSSSSSGSGS9	Pn [        / GSQ/ GSQ5       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                  [e        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[f        Rh                  GS9
5        M     M     / GSQn0 GSGS[f        Rh                  GS._GSGSGS10_GSSS[f        Rh                  GS._GSSS[f        Rh                  GS._GSS[f        Rh                  GS._GSGS[f        Rh                  0_GSGS[f        Rh                  0_GS GS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GSGS[f        Rh                  0_GS	GS[f        Rh                  0_GS[f        Rh                  0GS[f        Rh                  0GS[f        Rh                  0GS[f        Rh                  0GS[f        Rh                  0GS[f        Rh                  0GS[f        Rh                  0GS
.En	U HJ  n
[e        U
GS[j        SSGS9nU	R                  U
0 5      nUR                  U5        U R                  U5        ML     U $ (  NConv1d)r1   rR   rW   z!torch::nn::Conv1dOptions(4, 5, 3))rM   r1   r/   Tr?   )r@   rA   rB   rC   cudnnrE   rF   rG   )r1   rR   rW   rM   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)stride)	r@   rA   rB   rC   r  rK   rE   rF   rG   )r1   rR   rW   r3   r3   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)pad1r  )r1   rR   rR   r3   rM   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)pad2)r1   r1   rW   r3   r3   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r3   r1   r3   	pad1size1)r1   r1   rR   r3   rM   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)	pad2size1)r   r1   r/   
zero_batch)r@   rA   rB   rC   r  rK   rE   rF   Conv1d_dilatedc                  0    [         R                  " SSSSS9$ )Nr1   rR   rW   rM   kernel_sizedilationrz   r  rm   r)   r'   r>   &get_new_module_tests.<locals>.<lambda>      		!QA Jr)   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r   r   rB   rC   rE   rF   rG   Conv1d_groupsc                  0    [         R                  " SSSSS9$ )Nr1   r^   rW   rM   r  groupsr  rm   r)   r'   r>   r        		!QAa Hr)   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rM   r1   r^   )r   r   rB   rC   r  rE   rF   rG   Conv1d_pad_validc                  0    [         R                  " SSSSS9$ )Nr1   rR   rW   validpaddingr  rm   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$ )Nr1   rR   rW   samer  r  rm   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$ )Nr1   rR   r  r  r  rm   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$ )Nr1   rR   r  rM   r  r  r  rm   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$ )NrW   r1   rW   r3   r3   )r  r  r  output_paddingrz   r  rm   r)   r'   r>   r    s     2 21aQt]^os tr)   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r3   rW      )r   r   rB   r  rC   rE   rF   rG   )rW   r1   rW   rM   r3   r3   r3   Fztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r3   rW   r^   rH   )	rW   r1   rW   rM   r3   r3   r3   TrM   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$ )	Nr1   r^   rW   r  r3   r  rM   )r  r  r  r  r   rm   r)   r'   r>   r    s     2 21a4QRcgpq rr)   ztorch::nn::ConvTranspose1dOptions(4, 6, 3)
                                    .stride(3).padding(1).output_padding(1).groups(2))rM   r1   r  Conv2d)rW   r1   rW   rM   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rM   rW   r  rR   )	r@   rA   rB   rC   r  check_with_long_tensorrE   rF   rG   )rW   r1   rW   rW   rM   rM   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r]   strided)
r@   rA   rB   rC   r  rK   r  rE   rF   rG   )rW   r1   r  r	  r3   r3   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r  )rW   rM   r  r	  r  r	  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rM   rW   r0   r0   )rW   r1   r  r3   r   r3   r3   Fztorch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rM   rW   r^   rR   gQ?)r   rW   r  rR   )r@   rA   rB   rC   r  rK   r  rE   Conv2d_groupsc                  0    [         R                  " SSSSS9$ Nr1   r^   r  rM   r  rz   r  rm   r)   r'   r>   r  g      		!Qq Ar)   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rM   r1   r^   rR   )	r   r   rB   rC   r  r  rE   rF   rG   Conv2d_groups_thnnc                  0    [         R                  " SSSSS9$ r  r  rm   r)   r'   r>   r  r  r  r)   )r   r   rB   rC   r  rE   rF   rG   Conv2d_pad_validc                  0    [         R                  " SSSSS9$ )NrM   r1   rW   r1   r  r  r  rm   r)   r'   r>   r  |  s    		!Q Hr)   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rM   rM   r^   rR   Conv2d_pad_samec                  0    [         R                  " SSSSS9$ )NrM   r1   r  r  r  r  rm   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$ )NrM   r1   r  r  r  r  rm   r)   r'   r>   r    s    		!QQR Sr)   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ConvTranspose2d)rW   r1   rW   r  r3   r  ztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r3   rW   r  r^   )	r@   rA   rB   r  rC   r  rE   rF   rG   )	rW   r1   rW   rM   rW   r3   r  r3   Fr	  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r3   rW   r^   r  )rW   r1   rW   r  r3   r  r3   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$ )NrM   r1   r  r  )rz   r  rm   r)   r'   r>   r    s     2 21a Jr)   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r3   rM   r1   rR   Conv2d_depthwisec                  0    [         R                  " SSSSS9$ )Nr1   r  r  r  rm   r)   r'   r>   r    r  r)   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rM   r1   r^   r^    Conv2d_depthwise_with_multiplierc                  0    [         R                  " SSSSS9$ )Nr1   r0   r  r  r  rm   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$ )Nr1   r  r	  )r  r  r  rm   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$ )Nr1   r  r  )r  r  r  rm   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$ )Nr1   r	  )r  r  r  rm   r)   r'   r>   r    s    		!QPQ Rr)   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rM   r1   rR   rR   Conv3d)rM   rW   rM   rW   rM   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r3   rM   r1   rR   r1   g?)rM   rW   rM   rW   r1   r3   r   r3   r3   Fztorch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r3   rM   rW   r1   rR   )rM   rW   )r3   r3   r3   r3   r   r3   r3   F1x1x1_no_biasF)rW   r1   rM   rM   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rM   rW   rR   rR   rR   )rW   r1   rM   rM   r3   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)stride_padding)rW   r1   r+  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rW   rW   r1   rR   )r@   rA   rB   rC   r  r  rK   rE   Conv3d_groupsc                  0    [         R                  " SSSSS9$ )NrM   r1   rW   r  rz   r)  rm   r)   r'   r>   r  D  r  r)   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)Conv3d_dilatedc                  0    [         R                  " SSSSS9$ )NrW   r1   rM   r  r0  rm   r)   r'   r>   r  O  r  r)   z-torch::nn::Conv3dOptions(3, 4, 2).dilation(2)Conv3d_dilated_stridedc                  2    [         R                  " SSSSSS9$ )NrW   r1   rM   )r  r  r  r0  rm   r)   r'   r>   r  X  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$ )NrW   r1   r+  r  r  r0  rm   r)   r'   r>   r  a  s    		!Q	7 Kr)   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rM   rW   r^   rR   r1   Conv3d_pad_samec                  0    [         R                  " SSSSS9$ )NrW   r1   r+  r  r  r0  rm   r)   r'   r>   r  k  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$ )NrW   r1   r+  r  rM   r  r0  rm   r)   r'   r>   r  u  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}))r@   rA   rB   r  rC   rE   rF   rG   )	rM   rW   r*  r3   r   r   r3   T)rM   rM   rM   ztorch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	r@   rA   rB   r  rC   rK   rE   rF   rG   ReplicationPad3d))r3   rM   rW   rW   rM   r3   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rM   rW   rM   rM   rM   )r@   rA   rB   rC   rG   )rW   rM   rM   rM   no_batch_dim)r@   rA   rB   rC   rD   rK   rG   c            
      R    [         R                  " SSSSS[         R                  SS9$ )NrM   rW   T)r   requires_grad)r5   r   
complex128rm   r)   r'   r>   r    s     UZZ1aAU=M=M]abr)   complex)r@   rA   rB   r   	skip_halfrK   	Embedding)r1   rW   z!torch::nn::EmbeddingOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ NrM   rW   r   r1   r5   r  ry  random_rm   r)   r'   r>   r         U[[AUZZ@HHKr)   z0https://github.com/pytorch/pytorch/issues/117971)r@   rA   rB   r   r_   rG   	decoratorc                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ Nr3   i   r   r1   r  r5   r  ry  rG  r9   rm   r)   r'   r>   r    /    U[[CuzzBJJ1MTTUVX[\r)   discontiguous)r@   rA   rB   r   r_   rK   rG   rI  EmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ rE  rF  rm   r)   r'   r>   r    rH  r)   mean)r@   rA   rB   r   r_   rK   rG   c                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ rK  rL  rm   r)   r'   r>   r    rM  r)   )r1   rW   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      $ rE  rF  rm   r)   r'   r>   r    rH  r)   r  )r1   rW   NrS  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      $ rE  rF  rm   r)   r'   r>   r    rH  r)   rU  EmbeddingBag_mean_padding_idxc                  .    [         R                  " SSSS9$ )Nr1   rW   r3   padding_idxrz   rO  rm   r)   r'   r>   r    s    1! Dr)   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                      [         R                  " [         R                  " S5      [         R                  " S5      /5      $ NrW   r5   stackrb   rm   r)   r'   r>   r    $    U[[%..*;U^^A=N)OPr)   )r   r   rB   r   r_   rG   EmbeddingBag_sum_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr1   rW   rS  Fr  r3   rY  r[  rm   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]  r^  rm   r)   r'   r>   r    r`  r)   EmbeddingBag_max_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr1   rW   rS  FrU  r3   rY  r[  rm   r)   r'   r>   r    rc  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]  r^  rm   r)   r'   r>   r    r`  r)   EmbeddingBag_sparsec                  L    [         R                  " SSS[        R                  S9$ )Nr1   rW   T)sparser   )rz   rO  r5   rc   rm   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      $ NrM   r3   r5   rb   repeatrm   r)   r'   r>   r        U^^A.55a;r)   )r   r   rB   r   r_   has_sparse_gradientsc                  L    [         R                  " SS[        R                  SS9$ )Nr1   rW   T)r   rj  )rz   rC  r5   rc   rm   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      $ rl  rm  rm   r)   r'   r>   r  
  ro  r)   Embedding_sparse)r   rB   r   r   r_   rp  PixelShuffler  z!torch::nn::PixelShuffleOptions(3))r3   	   r1   r1   PixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r3   r3      rw  rw  nearest)rd   scale_factormodezF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r3   rM   r1   interpolate_nearest_1d)r   cpp_options_argsrC   r   r   rG   )r   rM   r1   interpolate_nearest_1d_zero_dim)r   r|  rC   r   r   )rw  )r3   rM   rW   interpolate_nearest_tuple_1dg      @zF::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)interpolate_nearest_scale_1dlinear)rd   ry  rz  align_cornersa  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_1d)r1   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_tuple_1da  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_scale_1dinterpolate_linear_1d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(true)#interpolate_linear_1d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(true))interpolate_linear_scale_1d_align_cornersrM   zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3      r3   r3   %interpolate_nearest_2d_launch_configszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   r1   r1   interpolate_nearest_2d)rw     zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   rW   r1   interpolate_nearest_tuple_2dzF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)interpolate_nearest_scale_2d)r   rM   r1   r1   interpolate_nearest_2d_zero_dimbilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false)interpolate_bilinear_2d interpolate_bilinear_2d_zero_dim)r1   r^   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r3   rM   rM   rW   interpolate_bilinear_tuple_2da
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)interpolate_bilinear_scale_2d)rS  rS  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)rS        ?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))r3   rM   r1   r1   r1   interpolate_nearest_3d)r   rM   r1   r1   r1   interpolate_nearest_3d_zero_dim)rw  r  r  zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r3   rM   rW   r1   r1   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)r1   r^   r^   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r3   rM   rM   rW   rW   interpolate_trilinear_tuple_3dg      @a  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(false)interpolate_trilinear_scale_3dr   )r   r|  rC   r   r   r   rG   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_tuple_3d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_scale_3d_align_cornersr4   r  zF::SoftmaxFuncOptions(-1))rM   r  softmax_lastdimr3   )r  r   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)softmax_lastdim_dtype)r   r|  rC   r   r   rN   rG   zF::SoftmaxFuncOptions(1))rM   r  rM   rM   softmax_spatial_special)rM   rM   r1   r1   softmax_spatialsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rV   softmax_functional_dim0)r   r|  rC   r   rN   r   rG   rW   zF::SoftmaxFuncOptions(3)softmax_functional_dim3rm   softmax_functional_scalar)r   r|  rC   r   rN   r   zF::LogSoftmaxFuncOptions(-1)log_softmax_lastdimzF::LogSoftmaxFuncOptions(1)log_softmax_spatial_speciallog_softmax_spatialzF::LogSoftmaxFuncOptions(0)log_softmax_dim0zF::LogSoftmaxFuncOptions(3)log_softmax_dim3log_softmax_scalarUnfoldc                  4    [         R                  " SSSS5      $ )Nr	  r  r   r   rz   r  rm   r)   r'   r>   r  q	  s    		&&&& Ir)   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rM   r1   rW   rW   )r   r   rB   rC   r_   rN   rG   Foldc                  6    [         R                  " SSSSS5      $ Nr  r	  r  r  rz   r  rm   r)   r'   r>   r  z	       Or)   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rM   r  r1   Fold_no_batch_dim_inputc                  6    [         R                  " SSSSS5      $ r  r  rm   r)   r'   r>   r  	  r  r)   )r  r1   )r   r   rB   rC   r_   refrN   rG   Unfold_int_inputc                  4    [         R                  " SSSS5      $ )NrM   r3   r   r  rm   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      $ NrW   rM   r3   r   r  rm   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  rm   r)   r'   r>   r  	  r  r)   )r   r   rB   rC   r  r_   rN   rG   rL   rO   rQ   with_up_down_scalarrT   PairwiseDistancec                  ^    [         R                  " SS5      [         R                  " SS5      4$ Nr/   r0   rB  rm   r)   r'   r>   r  	      ekk"a0%++b!2DEr)   )r@   r   rG   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr/   r3   r0   rB  rm   r)   r'   r>   r  	  r  r)   broadcast_lhs)r@   r   rK   rG   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr/   r0   r3   rB  rm   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  rB  rm   r)   r'   r>   r  	  r  r)   with_non_default_args)r@   rA   rB   r   rK   rG   c                  Z    [         R                  " S5      [         R                  " S5      4$ )Nr0   rB  rm   r)   r'   r>   r  	  s    ekk!nekk!n=r)   )r@   r   rD   rK   rG   TransformerEncoderLayer)r1   rM   r          ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)r+  relu_activationrP   )
r@   rA   rB   rC   rK   rE   rF   r`   r_   rG   r1   r0   r  ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)gelu_activationg{Gz?)	r@   rA   rB   rC   r_   rK   rE   rF   rG   TransformerDecoderLayer)r1   rM   r0   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$ NrW   r1   rM   r   rm   r)   r'   r>   r  	  #    ejjAq15::aA3FGr)   )	r@   rA   rB   r   r_   rK   rE   rF   rG   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   rm   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   rm   r)   r'   r>   r  
  s2    ejjAq15::aA3F

STVWHXYr)   multilayer_codergQ?r.   )rW   rR   ztorch::nn::LinearOptions(3, 5)c                  .    [         R                  " S5      $ r]  r   rm   r)   r'   r>   r   
  s    UZZ]r)   c                     [         R                  " U R                  SS5      US   R                  5       5      R                  S5      US   -   $ )Nr3   r4   r   )r5   r6   r8   r7   r:   s      r'   r>   r  !
  s;    !&&B-1)J)O)OPR)SVWXYVZ)Zr)   )	r@   rA   rB   r   rD   rK   rE   rF   rG   rU   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))r4   )rW   r1   rR   )r@   rB   rA   rC   rD   rK   rG   	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})	LayerNorm)8   r  r  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r1   r  r  r  3d_no_affine_large_feature)	r@   rA   rB   rC   r  
check_evalgradcheck_fast_mode
check_halfrK   )reflectcircular	replicater<  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZerosr  {z, }r	  r  c              3   *   #    U  H	  oS -   v   M     g7fr3   Nrm   .0r<   s     r'   	<genexpr>'get_new_module_tests.<locals>.<genexpr>V
  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)
r@   rA   rB   rC   output_sizer  rK   rE   rF   rG   )ELU
HardshrinkHardsigmoidHardtanh	Hardswish	LeakyReLU
LogSigmoidPReLUReLUReLU6rL   SELUCELUGELUGLUr   SiLUMishSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	Thresholdr  )rS  )rA   rG   r  rA   r  )r_   	check_jitrG   r  )rN   rG   r  rG   r  r  r  r  r  r  r  r	  r  r
  r  )r  r   r  r  r  r  r  )r@   rC   rD   rK   test_cpp_api_parity)Jr   r   r   r   r   r   r   r   r
  r  r  r)  r0  r7  rI  rQ  rY  rl  rr  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r,  r=  rE  rR  rY  rg  rq  rz  r  r  r  r  r  r  r  r  r   r5   rc   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_paddingrC   r  non_linear_activations_no_batch!non_linear_activations_extra_infonon_linear_activationactivation_test_info
extra_infos                r'   get_new_module_testsr1  8  s#   K%'K K 	'(K 	+,	K
 	)*K 	&'K 	./K 	01K 	-.K 	!"K 	()K 	12K 	,-K 	34K 	K  	&'!K" 	%&#K$ 	 %K& 	&''K( 	 )K* 	,-+K, 	'(-K. 	45/K0 	8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Y+[& AAv,)3 E!QUO,G		#c7*; <<sBK$(*J 5(@(@#@@K##"&qc&'Aq'1a|%T-<QC @66A] C; <L:LA*Q  * +(>7"#'"',,! +[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$ )NrQ  r  	batchmeanr   )r5   r   r   rQ  r  r  rd   )r  r`  r   r  r&   s        r'   kldivloss_referencer4  
  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 )NrW   r   r3   rM   r  rQ  r  )r  rd   r5   r<  r   onesr   r"  itemr  insertr  r  )r  r`  r+   r  r   NCout_sizeoutputtotal_weightrd   tupt_nxnorminput_indexs                  r'   nlllossNd_referencerB  
  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$ )	NrM   r3   c              3   &   #    U  H  nS v   M	     g7fr  rm   r  r=   s     r'   r  ;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>
  s      <OqO   r  r  r  rQ  r  )
r  r5   r  rd   r6  r   r8   shaper  rQ  )r  r`  r+   r   label_smoothingr:  r<  s          r'   (cross_entropy_loss_prob_target_referencerJ  
  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-  -  -   $ )
Nr3   r  r  r  c              3   &   #    U  H  nS v   M	     g7fr  rm   rE  s     r'   r  >cross_entropy_loss_indices_target_reference.<locals>.<genexpr>
  s     +G!ArG  rM   rQ  r   r  )r5   r  r   rx  rd   r8   rH  r  masked_fill_gathermasked_selectlogical_notrZ   rQ  )r  r`  r+   r  r   rI  log_softmax_inputnlllossr:  smooth_lossignore_maskrets               r'   +cross_entropy_loss_indices_target_referencerW  
  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   rI  )r+   r   r  rI  )rH  rJ  rW  )r  r`  r+   r  r   rI  s         r'   cross_entropy_loss_referencerY    sE    {{fll"7+- 	- ;&%
 	
r)   c           
          S n[        X5       VVs/ s H  u  pgU" XgX#5      PM     nnn[        U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  r3   rm   )r  r`  r+   r  r@  r&   s         r'   nll_loss_helper*nllloss_reference.<locals>.nll_loss_helper  s.    !Nq-$&~r)   rQ  r  )r!  
new_tensorr  )r  r`  r+   r  r   r\  r;   r7   losses_and_weightslossesr,   losses_tensors               r'   nllloss_referencerb    s     '*%&8:&8da *!E&8  :-.OF$$V,MF=!CL00	e	=!!:s   A5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  rM   rQ  r  )rF  r   rQ  r  )r  r`  r   r  abs_diffge_beta_masklt_beta_maskr<  s           r'   smoothl1loss_referencerg  +  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  rM   rQ  r  )rF  rQ  r  )r  r`  r   r&  rd  ge_delta_masklt_delta_maskr<  s           r'   huberloss_referencerk  ;  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[        S[        U 5      5       H#  nXR;  d  M
  U[        SSX   -
  X   -   5      -  nM%     MA     U$ )Nr   r3   )r%  r"  lenrU  )r  r`  targetstarget_indexr  r;   s         r'   _multilabelmarginloss_referencerp  G  s{    G!|$ 
 Cq#e*%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[        S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-  $ NrM   r3   r   rQ  r  )
r  r  rd   newzero_r"  rp  rQ  r  r  )r  r`  r   	input_dimnr  r<  r;   s           r'   multilabelmarginloss_referencerw  W  s@   		Iyy{Qzz|a&+iikQ&6"EOOA<N<X<XYZ<[(.

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

1A
**Q-CYYq\!F1a[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   rH  r3   rQ  r  )rQ  r   r5   whererQ  r  )r  r`  rm  r   margin_clampr<  s         r'   hingeembeddingloss_referencer{  q  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$ )Nr3   rQ  r  )r   r   rQ  r  )r  r`  r   r<  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[        S[        U 5      5       H+  nXa:w  d  M
  XTU   [	        SX0U   -
  X   -   5      U-  -  -  nM-     U$ )Nr3   r   )rs  rm  fill_r"  rU  )r  
target_idxr<   rm  r+   r<  r;   s          r'   _multimarginloss_referencer    sz    ~3u:&,,Q/F1c%j!?Z(CF:=N4NQVQY4Y,[_`,`aaF " Mr)   c                 r   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	[	        S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-  $ rr  )	r  r  rd   rs  r"  r  rQ  r  r  )r  r`  r<   rm  r+   r   
target_dimrv  r  r<  xs              r'   multimarginloss_referencer    s   yy{Q&+iikQ&6"EOOA<N<X<XYZ<[Jzz|q!!!$

1A
**Q-CYYq\F1a[.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[        S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  )rs  rd   r"  r  )abcosr;   s       r'   _cos+cosineembeddingloss_reference.<locals>._cos  s    eeAFF1Iq!&&)$AdQTk&&(qtad{.?.?.AE.IqtVWVZ{N_N_NadiNi-jor,rsCF %
r)   r3   r   rH  rQ  r  )r5   ry  rQ  rQ  r  )input1input2r`  rm  r   r  r<  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  rH  rQ  r  )r5   pairwise_distancerI  rQ  rQ  r  )anchorpositivenegativerm  r<   epsswapr   d_pd_nd_sr<  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   rH  rQ  r  )rQ  rQ  r  )r  r  r`  rm  r   r<  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   r3   rM   r  r4   rQ  r   devicer  )r5   	as_tensorry  r   rc   cumsumr"  rd   r7  new_fullr  r   	new_zerosclonery  r%  r  r   catr   r  rQ  )	log_probsrn  input_lengthstarget_lengthsblankr   dtcum_target_lengthsr`  r;   input_lengthtarget_lengthcum_target_lengthtargets_primeprobsalpha
mask_thirdr7   
alpha_nextr<  s                       r'   ctcloss_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+  r8  rb  ry  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.
r4   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 rJ   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$ rl   )r  r  r  extendr%  )xsr&   r  rZ   s      r'   rZ   4single_batch_reference_criterion_fn.<locals>.flatten  sM    b4-((gaj)   MM"r)   Nr   r   )r(   r  )ro   	criterionr  r  single_batch_input_argsr<  r   rZ   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   rQ  r  _no_batch_dim_)namec                 2    [        [        U 5      " [        S9$ Nr   r!   rz   r   r  ro   s     r'   r>   r>   6      WR->-Sr)   r  )r   r   rC   target_sizerD   r  rG   KLDivLoss_no_batch_dim_c                  2    [         R                  " [        S9$ r  )rz   r  r   rm   r)   r'   r>   r>   C  s    BLL9=r)   c                  J    [         R                  " S5      R                  5       $ Nr  r   rm   r)   r'   r>   r>   D  s    D)--/r)   c                  .    [         R                  " S5      $ r  r   rm   r)   r'   r>   r>   E  s    %**T*r)   )r   r   r   	target_fnrD   r  rG   BCELossc                  p    [         R                  " [         R                  " S[         R                  S95      $ Nru  r   )r5   r   r   rc   rm   r)   r'   r>   r>   R  s    ekk!5<<@Ar)   c                      [         R                  " S[         R                  S9R                  S5      R	                  [         R                  5      $ )Nru  r   r   )r5   r   rc   r   r   rm   r)   r'   r>   r>   S  s-    AU\\255a8;;ELLIr)   BCEWithLogitsLossc                  H    [         R                  " S[         R                  S9$ r  r5   r   rc   rm   r)   r'   r>   r>   U  s    %++au||"Dr)   c                  H    [         R                  " S[         R                  S9$ r  r  rm   r)   r'   r>   r>   U  s    ekkZ[chcocoNpr)   rb  c                  H    [         R                  " S[         R                  S9$ r  r  rm   r)   r'   r>   r>   V  s    5;;q#Er)   c                  8    [         R                  " / SQS-  5      $ N)r4   r3   r3   rW   r5   tensorrm   r)   r'   r>   r>   V  s    u||\fij\jOkr)   r8  c                  H    [         R                  " S[         R                  S9$ )Nr1   r   r  rm   r)   r'   r>   r>   W  s    U[[%,,%Gr)   c                  2    [         R                  " / SQ5      $ )N)rW   r   r4   r3   r  rm   r)   r'   r>   r>   W  s    QVQ]Q]^kQlr)   ry  c                  H    [         R                  " S[         R                  S9$ r  r  rm   r)   r'   r>   r>   X  s    u{{1ELLAr)   c                  8    [         R                  " / SQS-  5      $ r  r  rm   r)   r'   r>   r>   X  s    5<<XbefXfKgr)   r  c                  n    [         R                  " [        R                  " S[        R                  S9SS9$ )NrW   r   r   r  )r   r  r5   r   rc   rm   r)   r'   r>   r>   Y  s    ekk!5<<&HaPr)   c                  .    [         R                  " S5      $ rY   r  rm   r)   r'   r>   r>   Y  s    Z_ZfZfghZir)   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  rm   r)   r'   r>   r>   \  '    Qell3U[[%,,5WXr)   c                  H    [         R                  " S[         R                  S9$ )Nr3   r   )r5   r  rc   rm   r)   r'   r>   r>   ]  s    Qell3r)   r  c                  Z    [         R                  " S5      [         R                  " S5      4$ r  rB  rm   r)   r'   r>   r>   `  s    5;;r?EKKO"Dr)   c                  J    [         R                  " S5      R                  5       $ r  )r5   r   signrm   r)   r'   r>   r>   `  s    ekkZ\oNbNbNdr)   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  rm   r)   r'   r>   r>   d  r  r)   c                  H    [         R                  " S[         R                  S9$ r  r  rm   r)   r'   r>   r>   e  s    AU\\2r)   MultiLabelSoftMarginLossc                  H    [         R                  " S[         R                  S9$ r  r  rm   r)   r'   r>   r>   g  s    Qell)Kr)   c                  .    [         R                  " S5      $ )Nru  rB  rm   r)   r'   r>   r>   g  s    UZU`U`abUcr)   r_   ,classification_criterion_no_batch_extra_info)r  r  rb  r  ry  c                 2    [        [        U 5      " [        S9$ r  r  r  s     r'   r>   r>   y  r  r)   c                     U " 5       $ rl   rm   fs    r'   r>   r>   z  s    ACr)   c                     U " 5       $ rl   rm   r  s    r'   r>   r>   {  s    acr)   )r   r   r   r  rD   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rl   NotImplementedError)rn   ro   rq   s      r'   _forwardNNTestCase._forward      !!r)   r  returnc                     [         erl   r  rn   r  s     r'   _get_parametersNNTestCase._get_parameters  r  r)   Nc                     [         erl   r  r  s     r'   _zero_grad_parameters NNTestCase._zero_grad_parameters  r  r)   r  r<  grad_outputcreate_graphc                     [         erl   r  )rn   r  r  r<  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rl   )	_jacobian)r  elemnum_outrn   s     r'   r  'NNTestCase._jacobian.<locals>.<genexpr>  s     I54g665s   ")r  r  r  r  r5   r<  nelement)rn   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      $ )Nr4   c              3   F   >#    U  H  nTR                  U5      v   M     g 7frl   )_flatten_tensors)r  r  rn   s     r'   r  .NNTestCase._flatten_tensors.<locals>.<genexpr>  s     =1a..q111   !)r  r5   r  	is_sparseto_denser8   r  )rn   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 rl   )r  r5   r  r?  gradrt  detach__zero_grad_input)rn   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HA  nU R                  U5      u  p[        X5       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(       aE  [        W[	        U5      5       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MD     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rl   )numelr  s     r'   r  2NNTestCase._analytical_jacobian.<locals>.<genexpr>  s     O/N!GGII/N   r   r4   r3   rm   )r  r  r  r  r   r  r  r5   r<  r"  r!  
zeros_liker8   r  r"  r  
contiguousr  r  )rn   r  r  jacobian_inputjacobian_parametersr<  r  jacobian_inpflat_jacobian_input	num_paramjacobian_paramr;   paramd_paramr<   r  d_out
flat_d_outd_input
jacobian_xd_xress                         r'   _analytical_jacobianNNTestCase._analytical_jacobian  s   v-oo'>>%=L"&}\'B"COt/C/CF/KA/NOOI"[[@N{#A!11&9NEMPQVM`aM`6Aaiu''*Q>M`Ga$$V,EBJJqM"**62%%e,nnVFEBG'*+>g@V'WOJ'*~~'7'<'<R'@Jq!t$ (X""',yy1F1Fw1OQR'Sq!t$) $, )+<= C>?"C
3 b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       $ rl   )r  detach)r  r  rn   s    r'   fw*NNTestCase._numerical_jacobian.<locals>.fw  s    ==/6688r)   rm   ư>)r  )r`  r  r   )r   r  r%  r5   r  )rn   r  r  r+  r,  r>  r8  r1  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	[        Xx5       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   r4   )r  )boolr  r9  rC  r  r   r!  r&  r%  r  rF  rU  rm  assertLessEqual	PRECISION)rn   r  r  r+  r,  
analytical	numericalanalytical_tnumerical_tdifferencesr  rv  s               r'   check_jacobianNNTestCase.check_jacobian  s    "4#7#7#?#BC..vnb
,,VN`	M*56=342DAwwyA~""155"5#5#9#9#;#?#?#AB 3 {a  [!19=  r)   rm   F)TTT)rt   ru   rv   rw   r   r  rz   r{   r  r  	Parameterr  r  r   r5   r  r   r   rF  r  r  r  r"  r9  rC  rN  rx   rm   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_argsrA   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>   rU  rA   rm   z
: Specify z5 by a value, a function to generate it, or it's size!)	rK   r   r   rD   _required_arg_names
ValueErrorget_name_extra_kwargs
_arg_cache)rn   r   rK   rD   r   rq   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   rt   rK   )rn   	test_names     r'   r[  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rl   )_unpack)r  vrn   s     r'   r  #TestBase._unpack.<locals>.<genexpr>  s     >1t||Ar  )r  r5   r  r   type)rn   values   ` r'   rf  TestBase._unpack  s>    eU\\**L;>>>>Lr)   c                 &    U R                  SS5      $ )NrA   T_get_argrn   s    r'   rA   TestBase.constructor_args#  s    }}/66r)   c                 &    U R                  SS5      $ )NrU  Trm  ro  s    r'   rU  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   $ )NrW  rX  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 rl   )r  r  r5   r  rc   r   )sizessmap_tensor_sizess     r'   rw  +TestBase._get_arg.<locals>.map_tensor_sizes:  s]    !%..=BCU 0 3UCC#E5<<88$||~-${{511	  Ds   A5)rY  r]  r\  r[  rf  )rn   r  unpackfn_name	size_namerw  s        @r'   rn  TestBase._get_arg+  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  rm  )rn   ry  s     r'   
_get_inputTestBase._get_inputF  s    }}Wf--r)   c                     [         erl   r  )rn   	test_cases     r'   __call__TestBase.__call__I  s    !!r)   )r]  r\  r   rK   r   rD   ) NNrQ  )rt   ru   rv   rw   rY  r^  r[  rf  propertyrA   rU  rn  r~  r  rx   rm   r)   r'   rT  rT     sO    E 7 7 1 1X6."r)   rT  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$ )
ModuleTestiM  r  r  r  r  c                     [         erl   r  )rn   r  r  r  s       r'   _do_testModuleTest._do_testO  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S 5      U l
        U R                  c  [        R                  " 5       U l
        g g )Nr+  TrN   r   r_   !FIXME_no_cuda_gradgrad_comparisonFr   g-C6*?check_forward_onlyrG   )superr^  r&  r+  should_test_cudashould_test_pickler_   r  r   r  rG   r5   get_default_dtypern   ro   rq   	__class__s      r'   r^  ModuleTest.__init__S  s    $)&)$jj)94@ &

; ="(**Xt"<$jj)94@JJ:EB 	.K6"(**-A5"I#ZZ>%!&!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   rG   r   rA   r~  rD   r  r   r  assertEqualr  test_noncontigr  tempfileTemporaryFiler5   saveseekloadr  )
rn   r  r  r  out	ref_input
ref_moduleexpected_outr  module_copys
             r'   r  ModuleTest.__call__a  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rl   )noncontiguize)r  orn   s     r'   r  +ModuleTest.noncontiguize.<locals>.<genexpr>  s     <1++A..r  r3   r   )r  r  r  r  r  r"  rd   r5   r_  
empty_likeselectr=  r&  is_contiguousr?  )rn   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  r5   r  r  )r  r;   s     r'   r  ,ModuleTest.test_noncontig.<locals>.<genexpr>  s)     JUjELL.I|quuw!|Us
   #AAreturn_indicesFr3   TFrM   )rn  g-C6?atolrtol)r  r5   r  r  anyr  r"  r   r  r!   rs  rH  normal_r  r   r  r  r  r   r  )rn   r  r  r  r<  r
  r5  r2  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   5       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	   5       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5       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5       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rl   )r  r5   r  r   
is_complexr  r7   s     r'   r  'ModuleTest.test_cuda.<locals>.<genexpr>  s0     &scr^_z!U\\'B'YqwwGYGY'Ycrs   AA)type_mapr   r  Fr  r  r  rR   r3   r  T)r?  )r  c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7frl   r  rF  r  r  s     r'   r  r         >eVdQRuuw{{}}Vd   *,c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7frl   r  r  s     r'   r  r     r  r  c              3   @   #    U  H  oR                  5       v   M     g 7frl   r  r  s     r'   r  r         8Y.Q.r(  c              3   @   #    U  H  oR                  5       v   M     g 7frl   r  r  s     r'   r  r    r  r(  )retain_graph)+r   r  unittestSkipTestr   rG   r~  r5   rc   floatr  r  r  r   r   rA   cudar  r!  r  copy_r"  r  r  r!   r  r   r"  r  r  r   r  r_   r  
randn_liker=  r?  autogradr   r  r  rF  r  )rn   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'   rN   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, ?

  ' !@ &&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,(G$GW))'7VW)X )H  """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 "' ),NN(K$GW))'7VWej)k )L (",.."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(+FF(;$GW))'7VWej)k )< 	Go 322s   TU//
U=)r  r  r_   rG   r+  r   r  r  )rt   ru   rv   rw   r   r   rz   r{   r  r^  r  r  r  rN   rx   __classcell__r  s   @r'   r  r  M  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rl   rm   )r  r  map_variabless     r'   r  GInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>  s     Aqt}T22q   )r  r5   r  is_floating_pointr  r?  ri  )r;   r  s    r'   r  4InputVariableMixin._get_input.<locals>.map_variables  sN    !U\\**&&((ALLNN&*AOAwAqAAAr)   )rT  r~  )rn   r  r  s     @r'   r~  InputVariableMixin._get_input  s(    ##D%0	B U##r)   rm   N)rt   ru   rv   rw   r~  rx   rm   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                 |  > [         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S 5      U l        UR                  SS5      U l        UR                  SS5      U l        g )Nr  Fcheck_inplacer_   Tskip_doublerB  rE   rF   r\   test_cpurp  r`   r  r  supports_fwgrad_bwgrad)r  r^  r&  r  r  r_   r  rB  rE   rF   r  rp  r`   r  r  r	  r  s      r'   r^  NewModuleTest.__init__$  s   $)&)ZZ/
#ZZ?$jj)94@!::mU;K7K7$jj)95A

:t4$*JJ/Eu$M!"(**-A4"H#)::.CT#J #)::.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rl   rm   r  s     r'   r  1NewModuleTest._check_gradients.<locals>.<genexpr>5  s     6"5Qq"5   c                  @   > U(       a   eTR                  TU S T 5      $ rl   )r  )inputs_and_paramsrq   r  
num_inputsr  s     r'   fn_to_gradcheck7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck8  s&    :%%f.?.LMMr)   r3   r   )r`   	fast_modecheck_forward_ad)r`   r  check_fwd_over_rev)r  r  rm  rp  r5   r   rN  
assertTruer   r`   r  r  r_   r   r	  )rn   r  r  input_tupleparamsr  test_input_jacobianr  s    ``    @r'   _check_gradientsNewModuleTest._check_gradients4  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)Nr3   r   inplaceTc                    > TR                  5        H9  nTR                  X 5        Uc  M  TR                  UR                  5       U5        M;     g rl   )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rl   )r  r5   
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rl   r  r  s     r'   r  r(    s     >+Q+r(  c              3   B   #    U  H  oR                  S 5      v   M     g7fr  r*  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 $ rl   )r  r   r   )r  realrA  s      r'   to_type'NewModuleTest._do_test.<locals>.to_type  sB    $$&&!99W----//!99T?*!Mr)   c                 4   > T" U [         R                  S 5      $ rl   )r5   float16r  r/  s    r'   to_half'NewModuleTest._do_test.<locals>.to_half  s    q%--66r)   c                 P   > T" U [         R                  [         R                  5      $ rl   )r5   float32	complex64r3  s    r'   	to_single)NewModuleTest._do_test.<locals>.to_single  s    q%--AAr)   c                 P   > T" U [         R                  [         R                  5      $ rl   )r5   r  r@  r3  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rl   rm   r  r7   r9  s     r'   r  r(         Bk	!kr  c              3   4   >#    U  H  nT" U5      v   M     g 7frl   rm   r  r7   r<  s     r'   r  r(    r@  r  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7frl   r*  r?  s     r'   r  r(    s!     #MAIaL$5$5$7$7   #&c              3   @   #    U  H  oR                  5       v   M     g 7frl   )cpur  s     r'   r  r(    s     #A[EEGG[r(  c              3   @   #    U  H  oR                  5       v   M     g 7frl   r*  r  s     r'   r  r(    s     #BkFFHHkr(  F)enabledrM   c              3   B   #    U  H  oR                  S 5      v   M     g7fr  r*  r  s     r'   r  r(    s     'G;aq		;r,  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7frl   r*  rB  s     r'   r  r(    s!     'Q[	!(9(9(;(;[rD  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7frl   r*  )r  r7   r4  s     r'   r  r(    s     'O;a
(9(9;rD  rl   ))r5   get_num_threadsset_num_threadsr  r  r  __repr__r  rm  r   rA   _versionr   r  r   r  assertNotEqualr  r  r   no_gradrt  backwardallr   r  r  FloatTensordevice_countr  rc   DoubleTensorr  rF  r  backendsflagsr  rB  half
HalfTensor)rn   r  r  r  num_threadsr  	module_ipinput_versionr<  input_ipinput_ip_clone	output_ipr   r$  r<  r4  r9  r/  s    ``           @@@@r'   r  NewModuleTest._do_testP  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      $ Nr`  Frm  ro  s    r'   _get_targetNewModuleTest._get_target      }}Xu--r)   c                 &    U R                  SS5      $ NrA   Frm  ro  s    r'   rA   NewModuleTest.constructor_args      }}/77r)   )r`   r_   r  r  r  rp  r  rB  r  r	  r  rF   rE   )rt   ru   rv   rw   r^  r  r  rd  r  rA   rx   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  r`  c                 p  > [         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S 5      U l        U R                  c  [        R                  " 5       U l        g g )NrN   Tr  Fr_   r  check_bfloat16check_complexr  rE   rF   r\   r`   rG   )r  r^  r&  r  r  r_   r  rn  ro  r  rE   rF   r`   rG   r5   r  r  s      r'   r^  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!: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rU  c              3   $   #    U  H  ov   M     g 7frl   rm   r  s     r'   r  )CriterionTest.__call__.<locals>.<genexpr>  s     :&91&9r  c                    > T" X5      $ rl   rm   )r  r`  r  r  s      r'   apply_fn(CriterionTest.__call__.<locals>.apply_fn  s    !%00r)   c                    > T" XU5      $ rl   rm   )r  r  r`  r  r  s       r'   rv  rw    s    !&&99r)   )r`   )r   rG   r   rA   r~  rN  r  rd  rD   _forward_criterionrU  r   r  r  r  r  r  r   r`   r_   r   )rn   r  r  r`  r  ref_argsr  r  inputsrv  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rl   rm   )r  r  convert_dtyper   r?  s     r'   r  ACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>*  s     QS]1e]CCSs   )r  r5   r  r=  r   requires_grad_r  )r  r   r?  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  Trr  rP   g-C6:?r   r  rP  )r   r  r  r  r   rG   r~  rd  r   rA   r   r  ri  r   r  r5   rY  bfloat16ry  r  _backward_criterion)rn   r  r   rU  r  
cpu_targetr  r  	gpu_input
gpu_targetr  r  r  r  r  s                 @r'   rN   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      $ rc  rm  ro  s    r'   rd  CriterionTest._get_targetX  rf  r)   c                 &    U R                  SS5      $ rh  rm  ro  s    r'   rA   CriterionTest.constructor_args[  rj  r)   c                 &    U R                  SS5      $ )NrU  Frm  ro  s    r'   rU  CriterionTest.extra_args_  s    }}\511r)   )r`   rn  ro  r  r_   r  rG   r  r  rF   rE   rl   )rt   ru   rv   rw   rT  rY  unionr^  r  rN   rd  r  rA   rU  rx   r  r  s   @r'   rl  rl    s^     #66<<hZH; #\J1{f. 8 8 2 2r)   rl  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  r?  r  )r  Fr  )r5   r   r7  r   r  r  r  r  rR  r=  r  r   r  )r  opr  inp_dimsprecry  r  out1grad_input1op_bfp16r  grad_input2out2s                r'   _test_bfloat16_opsr  d  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  r5   	rand_likerR  r  rd   r  r?  r   r)  )r  r  r  
check_size	inferencer  gOr<   s           r'   _test_module_empty_inputr  w  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 )NrW   rR   r3   r  )
r  r^  rz   rR  r5   r  layer_dummy_paramBufferr<  layer_dummy_buf)rn   r  s    r'   r^  )_create_basic_net.<locals>.Layer.__init__  sJ    G%'\\%++a2C%DD"#%99U[[Aq!-D#ED r)   )r  r  r  Nrt   ru   rv   rw   r^  rx   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 )NrW   rR   r  r3   )r  r^  l1rz   rR  r5   r  dummy_paramr  r<  	dummy_buf)rn   r  r  s    r'   r^  '_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  )rz   r{   
Sequential)r  lrv  rv  r  s       @r'   _create_basic_netr    sN    F		 F@bii @ 	AA
aA7Nr)   )rQ  F)NrQ  )NrQ  r  )Nr  rQ  r  )rQ  r  )rQ  )r  rQ  )r3   r3   NrQ  )r   rQ  )r  rM   r@  FrQ  )rm   r  Nr  )abcr   r  r  copyr   	functoolsr   r   	itertoolsr   operatorr   r5   
torch.cudatorch.nnrz   torch.nn.functional
functionalr   r	   r"   $torch.testing._internal.common_utilsr
   r   r   r   r   r   r   r   #torch.testing._internal.common_cudar   r   torch.autograd.gradcheckr   r   torch.autogradr   torch.typesr   torch.backends.cudnntypingr   r   r   collections.abcr   r  rH  r(   r-   r   rc   module_testsrf   r|   r   r   r   r   r   r   r   r   r
  r  r  r)  r0  r7  rI  rQ  rY  rl  rr  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r,  r=  rE  rR  rY  rg  rq  rz  r  r  r  r  r  r  r  r  r  r1  r4  rB  rJ  rW  rY  rb  rg  rk  rp  rw  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_infor0  r'  r  rT  r  r  r  rl  r  r  r  rm   r)   r'   <module>r     s       %        -C C C F K # (  ' ' $&&	'| 	 >Zll	 	'J:ll
 	ll	 	#Nll 	6ll	 	#+] ll	Y6x6
$$ $(&$$$$ "$ $ "$ $$$ $ $"$$$,$.$.$"$$$,$"$$$,$"$"$"$"$""$$$$$$$"$"$"$"$*$$$$$$$$$($,6"dN3 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)   