
    Thߡ                       % 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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/J0r0  \Rb                  r1Sr2S r3S r4\5" SSSSS SS\Rl                  S9\5" SSSSSS S\(       a  SOS\Rl                  S9	\5" S S!S"\Rl                  S#9\5" S S$S%S&S'S"\Rl                  S(9\5" S)S*S+ \Rl                  S,9\5" S-S.S/S0S"S"\Rl                  S19/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 rlSg rmSSh jrn  SSi jro  SSj jrp  SSk jrq  SSl jrr  SSm jrsSSn jrtSSo jruSp rvSSq jrwSSr jrxSSs jrySt rzSSu jr{SSv jr|  SSw jr}SSx jr~SSy jr\n\" \nSSz9\s\o\t\u\w\x\y\{\|\}\~\\rS{.r\5S|\,4   \S}'   / rS~ r/ SQr/ SQr\
" \\5       H8  u  rr\5" \ S\ 3\S.S jSS\S"\Rl                  S9r\GR                  \5        M:     \ H1  r\5" S\ 3S S S \S"\Rl                  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\5\\54   \S'   S"S"S"S"S"S.r/ SQr\
" \\5       Hp  u  u  rrrr\5" \ 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_WITH_ROCM)	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     [/var/www/fran/franai/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))   r0   c                     [         R                  " XS   R                  5       5      US   R                  SS5      R	                  SS5      -   $ )Nr      r2   r1   )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)r0   r1   Fz+torch::nn::LinearOptions(10, 8).bias(false)no_biasc                 P    [         R                  " XS   R                  5       5      $ Nr   )r6   r7   r8   r;   s      r(   r?   r?   w   s    UXXa1%:r*   皙?)	rA   rB   rC   rD   descrE   rF   rG   rH   RReLU)r4      rO   F)rA   rD   	test_cudarH   皙?g?/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r2   r2      with_up_downrA   rB   rC   rD   rM   rP   rH   FlattenrO      r2   rT   c                 0    [         R                  " U S5      $ Nr4   )r6   flatten)r<   r>   s     r(   r?   r?      s    5==A#6r*   )rA   rD   rE   rH   CrossMapLRN2d)rT   r@   MbP?rO   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2)rO   rY      r`   )rA   rB   rC   rD   check_gradgradcheck_batched_gradrH   c                      [        [        U S5      n[        R                  " U5      R                  " U 6 R                  5       $ r[   )r   r   r6   randpermr9   double)sizetotals     r(   _rand_tensor_non_equalrh      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*   ro   N)__name__
__module____qualname____firstlineno__rt   __static_attributes__)rr   rs   s   r(   FunctionalModulerk      s    	' 	'r*   r{   )nnModule)rr   rs   r{   s   `` r(   wrap_functionalr~      s     ' '299 ' r*   c                     ^  [         R                  " SS5      m [        S[        U 4S j5      SS ST S.U 4S jS	[         R                  S
9$ )Nr0   PoissonNLLLoss_no_reducec                 N   > [         R                  " U TR                  U 5      SS9$ Nnoner   )Fpoisson_nll_losstype_asr<   r8   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      $ Nr0   r6   randro   r*   r(   r?   r      s    B+r*   _get_input()r   c                 H   > U R                  5       TR                  U 5      -
  $ rn   )expr   r<   r>   r8   s     r(   r?   r      s    1557QUU1X#5r*   Ffullnameconstructorcpp_function_callinput_fncpp_var_maprE   picklerH   r6   randndictr~   re   r8   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   r0   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   r0   y&1?v?r6   r   clamp_ro   r*   r(   r?   r          B+226:Fr*   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ r[   logr   s     r(   r?   r      *    Q[AEa!e[[]3J%J#Kr*   FgǺF?	r   r   r   r   r   rE   r   	precisionrH   )r   r6   r   gttore   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$ )Nro   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      $ Nro   r   r   r   ro   r*   r(   r?   r          B..vzBr*   r   r   c                 `   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * $ r[   r   r   s     r(   r?   r      r   r*   Fr   )r6   r   r   r   re   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   r0   dtyper   BCELoss_weights_no_reducec                 n   > [         R                  " U TR                  U 5      TR                  U 5      SS9$ Nr   r,   r   r   r<   r8   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   ro   r*   r(   r?   r      r   r*   r   r   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ r[   r   )r<   r=   r&   r8   r-   s      r(   r?   r      s0    q1557{a!eA{{}5L'L%MPW%Wr*   Fa2U0*3?r   )	r   r6   r   re   r   r   r   r   r~   r8   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$ )Nro   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   ro   r*   r(   r?   r      r   r*   c                 f   > TU R                  5       -  ST-
  SU -
  R                  5       -  -   * T-  $ r[   r   r<   r>   r8   r-   s     r(   r?   r      s/    Q[AEa!e[[]3J%J#Kg#Ur*   F)r   r   r   r   r   rE   r   rH   )r6   r   r   r   re   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   r0   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   ro   r*   r(   r?   r     r   r*   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ r[   r   r<   r>   sigmoidr8   s     r(   r?   r     8    Q)9%9QUq7ST:~FZFZF\<\%\#]r*   F	r   r   r   r   r   rE   ra   r   rH   
r   r6   r   r   r   re   r|   Sigmoidr   r~   r   r8   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   r0   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   ro   r*   r(   r?   r     r   r*   r   r   c                 x   > TT" U 5      R                  5       -  ST-
  ST" U 5      -
  R                  5       -  -   * $ r[   r   r   s     r(   r?   r      r   r*   Fr   r   r   s   @@r(    bce_with_logistic_no_reduce_testr     sz    R$''*--ell;<AjjlG.#[]kF(q1]ll r*   c                    ^ ^ [         R                  " S5      R                  S5      R                  [         R                  5      m[
        R                  " 5       m [        S[        U4S j5      SS STS.U U4S	 jS
S
[         R                  S9	$ )Nro   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   ro   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       -  -   * $ r[   r   r   s     r(   r?   r   2  r   r*   Fr   )	r6   r   r   r   re   r|   r   r   r~   r   s   @@r(   'bce_with_logistic_no_reduce_scalar_testr   '  sr    B1  .AjjlG5#[]kB(q1]ll r*   c                     ^  [         R                  " SS[         R                  S9m [        S[	        U 4S j5      SS ST S.U 4S	 jS
S[         R                  S9	$ )Nr0   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   r6   r   r   ro   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   rE   supports_forward_adr   rH   r6   r   re   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	$ )Nr0   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  ro   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	$ )Nro   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       $ Nro   r  ro   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	$ )Nr0   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  ro   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	  r6   r   re   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	$ )Nr0   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  ro   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_testr2  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	$ )Nro   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  ro   r*   r(   r?   r6    r  r*   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r'  r  r   s     r(   r?   r6    r)  r*   TFr	  r*  r   s   @r(   *kldivloss_no_reduce_scalar_log_target_testr9    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	$ )NrO   rY   r2   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      $ NrO   rY   r2   r6   r   ro   r*   r(   r?   r?        Q1-r*   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rn   r   absr   s     r(   r?   r?        A		!$4#9#9#;r*   TFr	  r6   r   re   r   r~   r   s   @r(   l1loss_no_reduce_testrK    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$ )NrO   rY   r2   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*   rA  c                  L    [         R                  " SSS[         R                  S9$ )NrO   rY   r2   r   )r6   r   cdoublero   r*   r(   r?   rO    s    Q1EMMBr*   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rn   rG  r   s     r(   r?   rO    rI  r*   TF)r   r   r   r   r   rE   r
  r   )r6   r   rQ  r   r~   r   s   @r(   l1loss_no_reduce_complex_testrS    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	$ )Nro   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*   rA  c                  .    [         R                  " S5      $ r  rD  ro   r*   r(   r?   rW        Rr*   r   r   c                 H   > U TR                  U 5      -
  R                  5       $ rn   rG  r   s     r(   r?   rW    rI  r*   TFr	  rJ  r   s   @r(   l1loss_no_reduce_scalar_testr[    sQ    Bell+A*#BDl((q1; ll
$ 
$r*   c                     ^ Sn [         R                  " U S[         R                  06m[        S[	        U4S j5      SU STS.U4S jS	S
[         R                  S9	$ )NrX   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   ra  c                 ,   > U T-
  R                  S5      $ NrO   powr<   r>   rb  s     r(   r?   rc        AJ#3#3A#6r*   TF	r   r   r   rD   r   rE   r
  r   rH   rJ  rD   rb  s    @r(   mseloss_no_reduce_testrn    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	$ )Nro   r   MSELoss_no_reduce_scalarc                 N   > [         R                  " U TR                  U 5      SS9$ r   r_  ra  s    r(   r?   /mseloss_no_reduce_scalar_test.<locals>.<lambda>  rd  r*   re  r   ra  c                 ,   > U T-
  R                  S5      $ rg  rh  rj  s     r(   r?   rr    rk  r*   TFrl  rJ  rm  s    @r(   mseloss_no_reduce_scalar_testrt    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   r0   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<   rs   r8   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   r0   r  ro   r*   r(   r?   r}    r  r*   r   r   c                 `   > [         S   " U TR                  U 5      R                  5       40 TD6$ NNLLLossr  r   r{  r<   r>   rs   r8   s     r(   r?   r}    (    y)!QYYq\->->-@KFKr*   Fr   
r   r6   emptyuniform_r   floorr{  r   r~   re   rs   r8   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   r0   rO   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   rz  r   r{  intstrr|  s    r(   r?   5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  >    ajjAIIaL$5$5$7c&Q_J`Fa+.vk/B+CEr*   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(2).reduction(torch::kNone))c                  L    [         R                  " SS5      R                  5       $ r  r  ro   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   r0   c                 ,   > TR                  U 5      SS.$ r   r   r<   r,   s    r(   rs   .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$ rn   ry  r|  s    r(   r?   0nllloss_no_reduce_weights_test.<locals>.<lambda>  *    ajjAIIaL$5$5$7E6!9Er*   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone))c                  j    [         R                  " SS5      R                  S5      R                  5       $ Nr   r0   {Gz?r6   r   addr   ro   r*   r(   r?   r    #    B+//599;r*   r   r<   r8   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   r6   r  r  r   r  r{  r   r   r~   re   rs   r8   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   r0   c                 .   > TR                  U 5      SSS.$ )Nr   rO   r,   r   r  r  r  s    r(   rs   ;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$ rn   )r   rz  r   r{  datar|  s    r(   r?   =nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>+  s.    ajjAIIaL$5$5$7J6!&&>Jr*   zF::nll_loss(
            i, t.to(i.options()).to(torch::kLong),
            F::NLLLossFuncOptions().weight(weight.to(i.options())).reduction(torch::kNone).ignore_index(2))c                  j    [         R                  " SS5      R                  S5      R                  5       $ r  r  ro   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   r0   c                 .   > TR                  U 5      SSS.$ )Nr   r5   r  r  r  s    r(   rs   ?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$ rn   ry  r|  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   rE   r   rH   )r   r6   r  r  r   r  r{  r   r   r~   re   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$ )NrO   rT   rY   r   r   NLLLoss2d_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ rx  ry  r|  s    r(   r?   *nllloss2d_no_reduce_test.<locals>.<lambda>T  r~  r*   r  c                  P    [         R                  " SSSS5      R                  5       $ NrO   rY   rT   r  ro   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   r6   r   r   r  r{  r   r~   re   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$ )NrO   rT   rY   r4   r   r   NLLLoss2d_no_reduce_ignore_indexc           	         > [         R                  " U TR                  U 5      R                  5       [	        TS   5      [        TS   5      S9$ r  r  r|  s    r(   r?   7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>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  ro   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$ )NrO   rT   rY   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r(   rs   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$ rn   ry  r|  s    r(   r?   2nllloss2d_no_reduce_weights_test.<locals>.<lambda>{  r  r*   r  c                  P    [         R                  " SSSS5      R                  5       $ r  r  ro   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$ )NrO   rT   rY   r   r   NLLLossNd_no_reducec                 p   > [         R                  " U TR                  U 5      R                  5       TS   S9$ rx  ry  r|  s    r(   r?   *nlllossNd_no_reduce_test.<locals>.<lambda>  r~  r*   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  ro   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$ )NrO   rT   rY   r4   r   r   NLLLossNd_no_reduce_ignore_indexc           	         > [         R                  " U TR                  U 5      R                  5       [	        TS   5      [        TS   5      S9$ r  r  r|  s    r(   r?   7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r*   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  ro   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$ )NrO   rT   rY   c                 ,   > TR                  U 5      SS.$ r   r  r  s    r(   rs   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$ rn   ry  r|  s    r(   r?   2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r*   r  c                  T    [         R                  " SSSSSS5      R                  5       $ r  r  ro   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	$ )NrO   rY   r2   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      $ rC  rD  ro   r*   r(   r?   r    rE  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	  rJ  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	$ )Nro   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  rD  ro   r*   r(   r?   r    rY  r*   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ r  r  r   s     r(   r?   r    r
  r*   TFr	  rJ  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	$ )NrO   rY   r2   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      $ rC  rD  ro   r*   r(   r?   r    rE  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	  rJ  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	$ )NrO   rY   r2   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      $ rC  rD  ro   r*   r(   r?   r     rE  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	  rJ  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	$ )NrO   rY   r2   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      $ rC  rD  ro   r*   r(   r?   r*    rE  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	$ )Nro   !MultiLabelMarginLoss_0d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multilabel_margin_lossr   r{  r   s    r(   r?   8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  &    a..q!))A,2C2C2EQWXr*   F::multilabel_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultilabelMarginLossFuncOptions().reduction(torch::kNone))c                  .    [         R                  " S5      $ r  rD  ro   r*   r(   r?   r4    rY  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiLabelMarginLossr   r   r  r  r   r{  r   s     r(   r?   r4    ,    56q!&&..:K:P:P:R^der*   TF)	r   r   r   r   r   rE   check_sum_reductionra   r   )r6   zerosr{  r   r~   r   s   @r(   &multilabelmarginloss_0d_no_reduce_testr?    sU    BA4#XZt((q1f  r*   c                    ^  [        [        R                  " S5      R                  S5      R	                  5       R                  5       5      m [        S[        U 4S j5      SS ST S.U 4S jS	S
S
[        R                  S9
$ )Nr0   !MultiLabelMarginLoss_1d_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r2  r   s    r(   r?   8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>+  r5  r*   r6  c                  .    [         R                  " S5      $ r   rD  ro   r*   r(   r?   rC  .  rY  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r9  r;  r   s     r(   r?   rC  0  r<  r*   TF
r   r   r   r   r   rE   r=  ra   r   rH   r  r   s   @r(   &multilabelmarginloss_1d_no_reduce_testrG  &  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
$ )NrT   r0   g         r5   minMultiLabelMarginLoss_index_negc                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r2  r   s    r(   r?   5multilabelmarginloss_index_neg_test.<locals>.<lambda>=  r5  r*   r6  c                  0    [         R                  " SS5      $ NrT   r0   rD  ro   r*   r(   r?   rN  @      Q+r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r9  r;  r   s     r(   r?   rN  B  r<  r*   TFrF  )r   r6   clampr   r  r   r  r{  r   r~   re   r   s   @r(   #multilabelmarginloss_index_neg_testrT  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
$ )NrT   r0   MultiLabelMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r2  r   s    r(   r?   5multilabelmarginloss_no_reduce_test.<locals>.<lambda>O  r5  r*   r6  c                  0    [         R                  " SS5      $ rP  rD  ro   r*   r(   r?   rX  R  rQ  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r9  r;  r   s     r(   r?   rX  T  r<  r*   TFrF  r  r   s   @r(   #multilabelmarginloss_no_reduce_testr[  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	$ )Nr0   r   rO   r4   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   rD  ro   r*   r(   r?   ra  d  rY  r*   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NHingeEmbeddingLossr   r   r  r   s     r(   r?   ra  f  s    34Q		!PVWr*   TF	r   r   r   r   r   rE   r=  r   rH   
r   r6   r   r   r   re   mul_subr   r~   r   s   @r(   !hingeembeddingloss_no_reduce_testri  \  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	$ )Nr0   r   rO   r4   #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   rD  ro   r*   r(   r?   rp  u  rY  r*   r   r   c                 B   > [         S   " U TR                  U 5      SSS9$ )Nrd  r  r   rn  r  r   s     r(   r?   rp  w  s     34Q		!S\bcr*   TFre  rf  r   s   @r(   (hingeembeddingloss_margin_no_reduce_testrs  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	$ )NrT   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      $ )NrT   rD  ro   r*   r(   r?   rx    s    Q*r*   r   r   c                 @   > [         S   " U TR                  U 5      SS9$ )NSoftMarginLossr   r   r  r   s     r(   r?   rx    s    /0AIIaLFSr*   TFr	  rJ  r   s   @r(   softmarginloss_no_reduce_testr|  ~  sY    Aq-A+#KM]*(q1T ll$ $r*   c                     ^  [         R                  " SS5      R                  S5      R                  5       m [	        S[        U 4S j5      SS ST S	.U 4S
 jSS[         R                  S9	$ )NrT   r0   rO   "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      $ rP  rD  ro   r*   r(   r?   r    rQ  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      -  $ Nr4   dimr   r   sumrf   r   s     r(   r?   r    s[    199;??$$A1"1C1C1E'EEFKKPQKRUVU[U[\]U^^r*   Fr   r6   r   r   r  r   r~   re   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
$ )NrT   r0   rO   *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      $ rP  rD  ro   r*   r(   r?   r    rQ  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*   TFrF  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
$ )NrT   r1   MultiMarginLoss_no_reducec                 j   > [         R                  " U TR                  U 5      R                  5       SS9$ r   r   multi_margin_lossr   r{  r   s    r(   r?   0multimarginloss_no_reduce_test.<locals>.<lambda>  %    a))!QYYq\->->-@FSr*   F::multi_margin_loss(
            i, t.to(i.options()).to(torch::kLong), F::MultiMarginLossFuncOptions().reduction(torch::kNone))c                  0    [         R                  " SS5      $ rP  rD  ro   r*   r(   r?   r    rQ  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ NMultiMarginLossr   r   r;  r   s     r(   r?   r    ,    01!QVV^^A5F5K5K5MY_`r*   TFrF  r6   r   r   r  r{  r   r~   re   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
$ )Nr4   r1   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   rD  ro   r*   r(   r?   r    rY  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r;  r   s     r(   r?   r    r  r*   TFrF  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
$ )Nro   r1   ,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   rD  ro   r*   r(   r?   r    rY  r*   r   r   c                 p   > [         S   " U TR                  R                  U 5      R                  5       SS9$ r  r;  r   s     r(   r?   r    r  r*   TFrF  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
$ )NrT   r1   MultiMarginLoss_p_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ )NrO   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      $ )NrT   r0   r  gGz?)r6   r   r   ro   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  rO   r   r  r;  r   s     r(   r?   r    s/    01!QVV^^A5F5K5K5MQR^der*   TFrF  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
$ )NrT   r1    MultiMarginLoss_margin_no_reducec                 l   > [         R                  " U TR                  U 5      R                  5       SSS9$ rm  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      $ rP  rD  ro   r*   r(   r?   r    rQ  r*   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       SSS9$ )Nr  r  r   rn  r;  r   s     r(   r?   r    s1    01!QVV^^A5F5K5K5M9<Pr*   TFrF  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
$ )NrT   r1   r0   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      $ rP  rD  ro   r*   r(   r?   r    rQ  r*   r   r   c                 r   > [         S   " U TR                  R                  U 5      R                  5       TSS9$ )Nr  r   r   r;  r   s     r(   r?   r    s1    01!QVV^^A5F5K5K5M9@FTr*   TFrF  )r6   r   r   r  r{  re   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 rK   
isinstancelisttuple	unsqueezeinpr8   s     r(   unsqueeze_inp0single_batch_reference_fn.<locals>.unsqueeze_inp-  B    cD%=)),/0CqKKNC00}}Q 1   Ar   N)r  r6   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)r2   rT   rY   z!torch::nn::Conv1dOptions(4, 5, 3))rO   r2   r0   Tr@   )rA   rB   rC   rD   cudnnrF   rG   rH   )r2   rT   rY   rO   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)stride)	rA   rB   rC   rD   r  rM   rF   rG   rH   )r2   rT   rY   r4   r4   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)pad1r  )r2   rT   rT   r4   rO   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)pad2)r2   r2   rY   r4   r4   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r4   r2   r4   	pad1size1)r2   r2   rT   r4   rO   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)	pad2size1)r   r2   r0   
zero_batch)rA   rB   rC   rD   r  rM   rF   rG   Conv1d_dilatedc                  0    [         R                  " SSSSS9$ )Nr2   rT   rY   rO   kernel_sizedilationr|   r  ro   r*   r(   r?   &get_new_module_tests.<locals>.<lambda>      		!QA Jr*   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r   r   rC   rD   rF   rG   rH   Conv1d_groupsc                  0    [         R                  " SSSSS9$ )Nr2   r`   rY   rO   r  groupsr  ro   r*   r(   r?   r        		!QAa Hr*   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rO   r2   r`   )r   r   rC   rD   r  rF   rG   rH   Conv1d_pad_validc                  0    [         R                  " SSSSS9$ )Nr2   rT   rY   validpaddingr  ro   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$ )Nr2   rT   rY   samer  r  ro   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$ )Nr2   rT   r  r  r  ro   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$ )Nr2   rT   r  rO   r  r  r  ro   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$ )NrY   r2   rY   r4   r4   )r  r  r  output_paddingr|   r  ro   r*   r(   r?   r    s     2 21aQt]^os tr*   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r4   rY      )r   r   rC   r  rD   rF   rG   rH   )rY   r2   rY   rO   r4   r4   r4   Fztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                    .stride(2).padding(1).output_padding(1).groups(1).bias(false))r4   rY   r`   rI   )	rY   r2   rY   rO   r4   r4   r4   TrO   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$ )	Nr2   r`   rY   r  r4   r   rO   )r  r  r  r  r  ro   r*   r(   r?   r    s     2 21a4QRcgpq rr*   ztorch::nn::ConvTranspose1dOptions(4, 6, 3)
                                    .stride(3).padding(1).output_padding(1).groups(2))rO   r2   r  Conv2d)rY   r2   rY   rO   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rO   rY   r  rT   )	rA   rB   rC   rD   r  check_with_long_tensorrF   rG   rH   )rY   r2   rY   rY   rO   rO   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})r_   strided)
rA   rB   rC   rD   r  rM   r	  rF   rG   rH   )rY   r2   r
  r  r4   r4   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r  )rY   rO   r
  r  r  r  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rO   rY   r1   r1   )rY   r2   r  r4   r   r4   r4   Fztorch::nn::Conv2dOptions(3, 4, {3, 2})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))rO   rY   r`   rT   gQ?)r   rY   r  rT   )rA   rB   rC   rD   r  rM   r	  rF   Conv2d_groupsc                  0    [         R                  " SSSSS9$ Nr2   r`   r  rO   r  r|   r  ro   r*   r(   r?   r  g      		!Qq Ar*   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rO   r2   r`   rT   )	r   r   rC   rD   r  r	  rF   rG   rH   Conv2d_groups_thnnc                  0    [         R                  " SSSSS9$ r  r  ro   r*   r(   r?   r  r  r  r*   )r   r   rC   rD   r	  rF   rG   rH   Conv2d_pad_validc                  0    [         R                  " SSSSS9$ )NrO   r2   rY   r2   r  r  r  ro   r*   r(   r?   r  |  s    		!Q Hr*   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rO   rO   r`   rT   Conv2d_pad_samec                  0    [         R                  " SSSSS9$ )NrO   r2   r  r  r  r  ro   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$ )NrO   r2   r  r  r  r  ro   r*   r(   r?   r    s    		!QQR Sr*   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ConvTranspose2d)rY   r2   rY   r  r4   r  ztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({3, 2}).padding(1).output_padding({1, 1}))r4   rY   r  r`   )	rA   rB   rC   r  rD   r	  rF   rG   rH   )	rY   r2   rY   rO   rY   r4   r  r4   Fr  a`  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3})
                                    .padding(1)
                                    .output_padding({1, 1})
                                    .groups(1)
                                    .bias(false)
                                    .dilation({2, 2}))r4   rY   r`   r  )rY   r2   rY   r  r4   r  r4   Fztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                    .stride({2, 3}).padding(1).output_padding({1, 1}).groups(1).bias(false)ConvTranspose2d_groupsc                  0    [         R                  " SSSSS9$ )NrO   r2   r  r  )r|   r  ro   r*   r(   r?   r    s     2 21a Jr*   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r4   rO   r2   rT   Conv2d_depthwisec                  0    [         R                  " SSSSS9$ )Nr2   r
  r  r  ro   r*   r(   r?   r    r  r*   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rO   r2   r`   r`    Conv2d_depthwise_with_multiplierc                  0    [         R                  " SSSSS9$ )Nr2   r1   r
  r  r  ro   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$ )Nr2   r
  r  )r  r  r  ro   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$ )Nr2   r
  r  )r  r  r  ro   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$ )Nr2   r  )r  r  r  ro   r*   r(   r?   r    s    		!QPQ Rr*   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rO   r2   rT   rT   Conv3d)rO   rY   rO   rY   rO   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r4   rO   r2   rT   r2   rL   )rO   rY   rO   rY   r2   r4   r   r4   r4   Fztorch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                    .stride(1).padding(0).dilation(1).groups(1).bias(false))r4   rO   rY   r2   rT   )rO   rY   )r4   r4   r4   r4   r   r4   r4   F1x1x1_no_biasF)rY   r2   rO   rO   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rO   rY   rT   rT   rT   )rY   r2   rO   rO   r4   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)stride_padding)rY   r2   r-  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rY   rY   r2   rT   )rA   rB   rC   rD   r  r	  rM   rF   Conv3d_groupsc                  0    [         R                  " SSSSS9$ )NrO   r2   rY   r  r|   r+  ro   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$ )NrY   r2   rO   r  r2  ro   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$ )NrY   r2   rO   )r  r  r  r2  ro   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$ )NrY   r2   r-  r  r  r2  ro   r*   r(   r?   r  a  s    		!Q	7 Kr*   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rO   rY   r`   rT   r2   Conv3d_pad_samec                  0    [         R                  " SSSSS9$ )NrY   r2   r-  r  r  r2  ro   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$ )NrY   r2   r-  r  rO   r  r2  ro   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}))rA   rB   rC   r  rD   rF   rG   rH   )	rO   rY   r,  r4   r   r   r4   T)rO   rO   rO   ztorch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                    .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	rA   rB   rC   r  rD   rM   rF   rG   rH   ReplicationPad3d))r4   rO   rY   rY   rO   r4   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rO   rY   rO   rO   rO   )rA   rB   rC   rD   rH   )rY   rO   rO   rO   no_batch_dim)rA   rB   rC   rD   rE   rM   rH   c            
      R    [         R                  " SSSSS[         R                  SS9$ )NrO   rY   T)r   requires_grad)r6   r   
complex128ro   r*   r(   r?   r    s     UZZ1aAU=M=M]abr*   complex)rA   rB   rC   r   	skip_halfrM   	Embedding)r2   rY   z!torch::nn::EmbeddingOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ NrO   rY   r   r2   r6   r  r{  random_ro   r*   r(   r?   r         U[[AUZZ@HHKr*   z0https://github.com/pytorch/pytorch/issues/117971)rA   rB   rC   r   ra   rH   	decoratorc                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ Nr4   i   r   r2   r  r6   r  r{  rI  r:   ro   r*   r(   r?   r    /    U[[CuzzBJJ1MTTUVX[\r*   discontiguous)rA   rB   rC   r   ra   rM   rH   rK  EmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  h    [         R                  " SS[         R                  S9R                  S5      $ rG  rH  ro   r*   r(   r?   r    rJ  r*   mean)rA   rB   rC   r   ra   rM   rH   c                      [         R                  " SS[         R                  S9R                  S5      R	                  SS5      $ rM  rN  ro   r*   r(   r?   r    rO  r*   )r2   rY   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      $ rG  rH  ro   r*   r(   r?   r    rJ  r*   r  )r2   rY   NrU  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      $ rG  rH  ro   r*   r(   r?   r    rJ  r*   rW  EmbeddingBag_mean_padding_idxc                  .    [         R                  " SSSS9$ )Nr2   rY   r4   padding_idxr|   rQ  ro   r*   r(   r?   r    s    1! Dr*   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                      [         R                  " [         R                  " S5      [         R                  " S5      /5      $ NrY   r6   stackrd   ro   r*   r(   r?   r    $    U[[%..*;U^^A=N)OPr*   )r   r   rC   r   ra   rH   EmbeddingBag_sum_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr2   rY   rU  Fr  r4   r[  r]  ro   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`  ro   r*   r(   r?   r    rb  r*   EmbeddingBag_max_padding_idxc            
      6    [         R                  " SSS SSSSS9$ )Nr2   rY   rU  FrW  r4   r[  r]  ro   r*   r(   r?   r    re  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`  ro   r*   r(   r?   r    rb  r*   EmbeddingBag_sparsec                  L    [         R                  " SSS[        R                  S9$ )Nr2   rY   T)sparser   )r|   rQ  r6   re   ro   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      $ NrO   r4   r6   rd   repeatro   r*   r(   r?   r        U^^A.55a;r*   )r   r   rC   r   ra   has_sparse_gradientsc                  L    [         R                  " SS[        R                  SS9$ )Nr2   rY   T)r   rl  )r|   rE  r6   re   ro   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      $ rn  ro  ro   r*   r(   r?   r  
  rq  r*   Embedding_sparse)r   rC   r   r   ra   rr  PixelShuffler  z!torch::nn::PixelShuffleOptions(3))r4   	   r2   r2   PixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r4   r4      ry  ry  nearest)rf   scale_factormodezF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12})).scale_factor(std::nullopt).mode(torch::kNearest))r4   rO   r2   interpolate_nearest_1d)r   cpp_options_argsrD   r   r   rH   )r   rO   r2   interpolate_nearest_1d_zero_dim)r   r~  rD   r   r   )ry  )r4   rO   rY   interpolate_nearest_tuple_1dg      @zF::InterpolateFuncOptions()
                                .size(std::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)interpolate_nearest_scale_1dlinear)rf   r{  r|  align_cornersa  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_1d)r2   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_tuple_1da  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(false)interpolate_linear_scale_1dinterpolate_linear_1d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kLinear)
                                .align_corners(true)#interpolate_linear_1d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4.}))
                                .mode(torch::kLinear)
                                .align_corners(true))interpolate_linear_scale_1d_align_cornersrO   zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({2, 2}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4      r4   r4   %interpolate_nearest_2d_launch_configszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rO   r2   r2   interpolate_nearest_2d)ry     zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rO   rY   r2   interpolate_nearest_tuple_2dzF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kNearest)interpolate_nearest_scale_2d)r   rO   r2   r2   interpolate_nearest_2d_zero_dimbilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false)interpolate_bilinear_2d interpolate_bilinear_2d_zero_dim)r2   r`   a	  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(false))r4   rO   rO   rY   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)rU  rU  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)rU        ?a
  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBilinear)
                                .align_corners(false)*interpolate_bilinear_scale_tuple_skewed_2da  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBilinear)
                                .align_corners(true)+interpolate_bilinear_tuple_2d_align_cornersa	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBilinear)
                                .align_corners(true)8interpolate_bilinear_scale_tuple_skewed_2d_align_cornersbicubica
  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(false)interpolate_bicubic_2dinterpolate_bicubic_2d_zero_dima  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(false)interpolate_bicubic_tuple_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4.}))
                                .mode(torch::kBicubic)
                                .align_corners(false)interpolate_bicubic_scale_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 2.}))
                                .mode(torch::kBicubic)
                                .align_corners(false))interpolate_bicubic_scale_tuple_shared_2da	  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBicubic)
                                .align_corners(false))interpolate_bicubic_scale_tuple_skewed_2da  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kBicubic)
                                .align_corners(true)*interpolate_bicubic_tuple_2d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({2., 1.}))
                                .mode(torch::kBicubic)
                                .align_corners(true)7interpolate_bicubic_scale_tuple_skewed_2d_align_cornerszF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rO   r2   r2   r2   interpolate_nearest_3d)r   rO   r2   r2   r2   interpolate_nearest_3d_zero_dim)ry  r  r  zF::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 16, 16}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kNearest))r4   rO   rY   r2   r2   interpolate_nearest_tuple_3dzF::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({4., 4., 4.}))
                                .mode(torch::kNearest)interpolate_nearest_scale_3d	trilineara  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({12, 12, 12}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false)interpolate_trilinear_3d!interpolate_trilinear_3d_zero_dim)r2   r`   r`   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(false))r4   rO   rO   rY   rY   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~  rD   r   r   r   rH   a  F::InterpolateFuncOptions()
                                .size(std::vector<int64_t>({4, 6, 6}))
                                .scale_factor(std::nullopt)
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_tuple_3d_align_cornersa  F::InterpolateFuncOptions()
                                .size(std::nullopt)
                                .scale_factor(std::vector<double>({3., 3., 3.}))
                                .mode(torch::kTrilinear)
                                .align_corners(true),interpolate_trilinear_scale_3d_align_cornersr5   r  zF::SoftmaxFuncOptions(-1))rO   r  softmax_lastdimr4   )r  r   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)softmax_lastdim_dtype)r   r~  rD   r   r   rP   rH   zF::SoftmaxFuncOptions(1))rO   r  rO   rO   softmax_spatial_special)rO   rO   r2   r2   softmax_spatialsoftmax_spatial_dtyper   zF::SoftmaxFuncOptions(0)rX   softmax_functional_dim0)r   r~  rD   r   rP   r   rH   rY   zF::SoftmaxFuncOptions(3)softmax_functional_dim3ro   softmax_functional_scalar)r   r~  rD   r   rP   r   zF::LogSoftmaxFuncOptions(-1)log_softmax_lastdimzF::LogSoftmaxFuncOptions(1)log_softmax_spatial_speciallog_softmax_spatialzF::LogSoftmaxFuncOptions(0)log_softmax_dim0zF::LogSoftmaxFuncOptions(3)log_softmax_dim3log_softmax_scalarUnfoldc                  4    [         R                  " SSSS5      $ )Nr  r  r   r   r|   r  ro   r*   r(   r?   r  q	  s    		&&&& Ir*   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rO   r2   rY   rY   )r   r   rC   rD   ra   rP   rH   Foldc                  6    [         R                  " SSSSS5      $ Nr
  r  r  r  r|   r  ro   r*   r(   r?   r  z	       Or*   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rO   r  r2   Fold_no_batch_dim_inputc                  6    [         R                  " SSSSS5      $ r  r  ro   r*   r(   r?   r  	  r  r*   )r  r2   )r   r   rC   rD   ra   refrP   rH   Unfold_int_inputc                  4    [         R                  " SSSS5      $ )NrO   r4   r   r  ro   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      $ NrY   rO   r4   r   r  ro   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  ro   r*   r(   r?   r  	  r  r*   )r   r   rC   rD   r  ra   rP   rH   rN   rQ   rS   with_up_down_scalarrV   PairwiseDistancec                  ^    [         R                  " SS5      [         R                  " SS5      4$ Nr0   r1   rD  ro   r*   r(   r?   r  	      ekk"a0%++b!2DEr*   )rA   r   rH   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr0   r4   r1   rD  ro   r*   r(   r?   r  	  r  r*   broadcast_lhs)rA   r   rM   rH   c                  ^    [         R                  " SS5      [         R                  " SS5      4$ )Nr0   r1   r4   rD  ro   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  rD  ro   r*   r(   r?   r  	  r  r*   with_non_default_args)rA   rB   rC   r   rM   rH   c                  Z    [         R                  " S5      [         R                  " S5      4$ )Nr1   rD  ro   r*   r(   r?   r  	  s    ekk!nekk!n=r*   )rA   r   rE   rM   rH   TransformerEncoderLayer)r2   rO   r          ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(16)
                                    .dropout(0.0)r-  relu_activationrR   )
rA   rB   rC   rD   rM   rF   rG   rb   ra   rH   r2   r1   r  ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                    .dim_feedforward(8)
                                    .dropout(0.0)
                                    .activation(torch::kGELU)gelu_activationg{Gz?)	rA   rB   rC   rD   ra   rM   rF   rG   rH   TransformerDecoderLayer)r2   rO   r1   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$ NrY   r2   rO   r   ro   r*   r(   r?   r  	  #    ejjAq15::aA3FGr*   )	rA   rB   rC   r   ra   rM   rF   rG   rH   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   ro   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   ro   r*   r(   r?   r  
  s2    ejjAq15::aA3F

STVWHXYr*   multilayer_codergQ?r/   )rY   rT   ztorch::nn::LinearOptions(3, 5)c                  .    [         R                  " S5      $ r_  r   ro   r*   r(   r?   r   
  s    UZZ]r*   c                     [         R                  " U R                  SS5      US   R                  5       5      R                  S5      US   -   $ )Nr4   r5   r   )r6   r7   r9   r8   r;   s      r(   r?   r  !
  s;    !&&B-1)J)O)OPR)SVWXYVZ)Zr*   )	rA   rB   rC   r   rE   rM   rF   rG   rH   rW   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))r5   )rY   r2   rT   )rA   rC   rB   rD   rE   rM   rH   	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})	LayerNorm)8   r  r  r   zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r2   r  r  r  3d_no_affine_large_feature)	rA   rB   rC   rD   r  
check_evalgradcheck_fast_mode
check_halfrM   )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r4   Nro   .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)
rA   rB   rC   rD   output_sizer  rM   rF   rG   rH   )ELU
HardshrinkHardsigmoidHardtanh	Hardswish	LeakyReLU
LogSigmoidPReLUReLUReLU6rN   SELUCELUGELUGLUr   SiLUMishSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	Thresholdr  )rU  )rB   rH   r  rB   r  )ra   	check_jitrH   r  )rP   rH   r  rH   r  r  r  r  r	  r
  r  r  r  r  r  )r  r   r  r  r  r  r  )rA   rD   rE   rM   test_cpp_api_parity)Jr   r   r   r   r   r   r   r   r  r  r  r+  r2  r9  rK  rS  r[  rn  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r.  r?  rG  rT  r[  ri  rs  r|  r  r  r  r  r  r  r  r  r   r6   re   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_paddingrD   r  non_linear_activations_no_batch!non_linear_activations_extra_infonon_linear_activationactivation_test_info
extra_infos                r(   get_new_module_testsr3  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$ )NrS  r  	batchmeanr   )r6   r   r   rS  r  r  rf   )r  rb  r   r!  r'   s        r(   kldivloss_referencer6  
  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 )NrY   r   r4   rO   r  rS  r  )r  rf   r6   r>  r   onesr   r$  itemr  insertr  r  )r  rb  r,   r  r   NCout_sizeoutputtotal_weightrf   tupt_nxnorminput_indexs                  r(   nlllossNd_referencerD  
  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$ )	NrO   r4   c              3   &   #    U  H  nS v   M	     g7fr  ro   r  r>   s     r(   r  ;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>
  s      <OqO   r  r  r  rS  r  )
r  r6   r  rf   r8  r   r9   shaper  rS  )r  rb  r,   r   label_smoothingr<  r>  s          r(   (cross_entropy_loss_prob_target_referencerL  
  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-  -  -   $ )
Nr4   r  r  r  c              3   &   #    U  H  nS v   M	     g7fr  ro   rG  s     r(   r  >cross_entropy_loss_indices_target_reference.<locals>.<genexpr>
  s     +G!ArI  rO   rS  r   r  )r6   r  r   rz  rf   r9   rJ  r  masked_fill_gathermasked_selectlogical_notr\   rS  )r  rb  r,   r  r   rK  log_softmax_inputnlllossr<  smooth_lossignore_maskrets               r(   +cross_entropy_loss_indices_target_referencerY  
  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   rK  )r,   r   r  rK  )rJ  rL  rY  )r  rb  r,   r  r   rK  s         r(   cross_entropy_loss_referencer[    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  r4   ro   )r  rb  r,   r  rB  r'   s         r(   nll_loss_helper*nllloss_reference.<locals>.nll_loss_helper  s.    !Nq-$&~r*   rS  r  )r#  
new_tensorr  )r  rb  r,   r  r   r^  r<   r8   losses_and_weightslossesr-   losses_tensors               r(   nllloss_referencerd    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  rO   rS  r  )rH  r   rS  r  )r  rb  r   r  abs_diffge_beta_masklt_beta_maskr>  s           r(   smoothl1loss_referenceri  +  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  rO   rS  r  )rH  rS  r  )r  rb  r   r(  rf  ge_delta_masklt_delta_maskr>  s           r(   huberloss_referencerm  ;  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   r4   )r'  r$  lenrW  )r  rb  targetstarget_indexr  r<   s         r(   _multilabelmarginloss_referencerr  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-  $ NrO   r4   r   rS  r  )
r  r  rf   newzero_r$  rr  rS  r  r  )r  rb  r   	input_dimnr  r>  r<   s           r(   multilabelmarginloss_referencery  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   rJ  r4   rS  r  )rS  r   r6   whererS  r  )r  rb  ro  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$ )Nr4   rS  r  )r   r   rS  r  )r  rb  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$ )Nr4   r   )ru  ro  fill_r$  rW  )r  
target_idxr=   ro  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-  $ rt  )	r  r  rf   ru  r$  r  rS  r  r  )r  rb  r=   ro  r,   r   
target_dimrx  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  )ru  rf   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*   r4   r   rJ  rS  r  )r6   r{  rS  rS  r  )input1input2rb  ro  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  rJ  rS  r  )r6   pairwise_distancerK  rS  rS  r  )anchorpositivenegativero  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   rJ  rS  r  )rS  rS  r  )r  r  rb  ro  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   r4   rO   r  r5   rS  r   devicer  )r6   	as_tensorr{  r   re   cumsumr$  rf   r9  new_fullr  r   	new_zeroscloner{  r'  r  r   catr   r  rS  )	log_probsrp  input_lengthstarget_lengthsblankr   dtcum_target_lengthsrb  r<   input_lengthtarget_lengthcum_target_lengthtargets_primeprobsalpha
mask_thirdr8   
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-  r:  rd  r{  r  CosineEmbeddingLossTripletMarginLossMarginRankingLossCTCLossCrossEntropyLossr  r  c                     ^ U S   nS nU4S jmT" U SS  Vs/ s H
  o2" U5      PM     sn5      nU" U6 n[        U5      nUS:X  a  UR                  S5      $ U$ s  snf )zReference function for criterion supporting no batch dimensions.

The criterion is passed the input and target in batched form with a single item.
The output is squeezed to compare with the no-batch input.
r5   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 rK   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$ rn   )r  r  r  extendr'  )xsr'   r  r\   s      r(   r\   4single_batch_reference_criterion_fn.<locals>.flatten  sM    b4-((gaj)   MM"r*   Nr   r   )r)   r  )rq   	criterionr  r  single_batch_input_argsr>  r   r\   s          @r(   #single_batch_reference_criterion_fnr    sv     RI 
 &cr&S}U';&ST/0Fi(IF~~a  M 'Ts   A)L1LossMSELossPoissonNLLLossr-  r	  )r   rS  r  _no_batch_dim_)namec                 2    [        [        U 5      " [        S9$ Nr   r"   r|   r   r  rq   s     r(   r?   r?   6      WR->-Sr*   r  )r   r   rD   target_sizerE   r  rH   KLDivLoss_no_batch_dim_c                  2    [         R                  " [        S9$ r  )r|   r  r   ro   r*   r(   r?   r?   C  s    BLL9=r*   c                  J    [         R                  " S5      R                  5       $ Nr  r  ro   r*   r(   r?   r?   D  s    D)--/r*   c                  .    [         R                  " S5      $ r  r   ro   r*   r(   r?   r?   E  s    %**T*r*   )r   r   r   	target_fnrE   r  rH   BCELossc                  p    [         R                  " [         R                  " S[         R                  S95      $ Nrw  r   )r6   r   r   re   ro   r*   r(   r?   r?   R  s    ekk!5<<@Ar*   c                      [         R                  " S[         R                  S9R                  S5      R	                  [         R                  5      $ )Nrw  r   r   )r6   r   re   r   r   ro   r*   r(   r?   r?   S  s-    AU\\255a8;;ELLIr*   BCEWithLogitsLossc                  H    [         R                  " S[         R                  S9$ r  r6   r   re   ro   r*   r(   r?   r?   U  s    %++au||"Dr*   c                  H    [         R                  " S[         R                  S9$ r  r  ro   r*   r(   r?   r?   U  s    ekkZ[chcocoNpr*   rd  c                  H    [         R                  " S[         R                  S9$ r  r  ro   r*   r(   r?   r?   V  s    5;;q#Er*   c                  8    [         R                  " / SQS-  5      $ N)r5   r4   r4   rY   r6   tensorro   r*   r(   r?   r?   V  s    u||\fij\jOkr*   r:  c                  H    [         R                  " S[         R                  S9$ )Nr2   r   r  ro   r*   r(   r?   r?   W  s    U[[%,,%Gr*   c                  2    [         R                  " / SQ5      $ )N)rY   r   r5   r4   r  ro   r*   r(   r?   r?   W  s    QVQ]Q]^kQlr*   r{  c                  H    [         R                  " S[         R                  S9$ r  r  ro   r*   r(   r?   r?   X  s    u{{1ELLAr*   c                  8    [         R                  " / SQS-  5      $ r  r  ro   r*   r(   r?   r?   X  s    5<<XbefXfKgr*   r  c                  n    [         R                  " [        R                  " S[        R                  S9SS9$ )NrY   r   r   r  )r   r  r6   r   re   ro   r*   r(   r?   r?   Y  s    ekk!5<<&HaPr*   c                  .    [         R                  " S5      $ r[   r  ro   r*   r(   r?   r?   Y  s    Z_ZfZfghZir*   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  ro   r*   r(   r?   r?   \  '    Qell3U[[%,,5WXr*   c                  H    [         R                  " S[         R                  S9$ )Nr4   r   )r6   r  re   ro   r*   r(   r?   r?   ]  s    Qell3r*   r  c                  Z    [         R                  " S5      [         R                  " S5      4$ r  rD  ro   r*   r(   r?   r?   `  s    5;;r?EKKO"Dr*   c                  J    [         R                  " S5      R                  5       $ r  )r6   r   signro   r*   r(   r?   r?   `  s    ekkZ\oNbNbNdr*   r  c                      [         R                  " S[         R                  S9[         R                  " S[         R                  S94$ r  r  ro   r*   r(   r?   r?   d  r  r*   c                  H    [         R                  " S[         R                  S9$ r  r  ro   r*   r(   r?   r?   e  s    AU\\2r*   MultiLabelSoftMarginLossc                  H    [         R                  " S[         R                  S9$ r  r  ro   r*   r(   r?   r?   g  s    Qell)Kr*   c                  .    [         R                  " S5      $ )Nrw  rD  ro   r*   r(   r?   r?   g  s    UZU`U`abUcr*   ra   ,classification_criterion_no_batch_extra_info)r  r  rd  r  r{  c                 2    [        [        U 5      " [        S9$ r  r  r  s     r(   r?   r?   y  r  r*   c                     U " 5       $ rn   ro   fs    r(   r?   r?   z  s    ACr*   c                     U " 5       $ rn   ro   r  s    r(   r?   r?   {  s    acr*   )r   r   r   r  rE   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rn   NotImplementedError)rp   rq   rs   s      r(   _forwardNNTestCase._forward      !!r*   r  returnc                     [         ern   r  rp   r  s     r(   _get_parametersNNTestCase._get_parameters  r  r*   Nc                     [         ern   r  r  s     r(   _zero_grad_parameters NNTestCase._zero_grad_parameters  r  r*   r  r>  grad_outputcreate_graphc                     [         ern   r  )rp   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rn   )	_jacobian)r  elemnum_outrp   s     r(   r  'NNTestCase._jacobian.<locals>.<genexpr>  s     I54g665s   ")r  r  r  r  r6   r>  nelement)rp   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      $ )Nr5   c              3   F   >#    U  H  nTR                  U5      v   M     g 7frn   )_flatten_tensors)r  r  rp   s     r(   r  .NNTestCase._flatten_tensors.<locals>.<genexpr>  s     =1a..q111   !)r  r6   r  	is_sparseto_denser9   r  )rp   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 rn   )r  r6   r  rA  gradrv  detach__zero_grad_input)rp   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rn   )numelr  s     r(   r  2NNTestCase._analytical_jacobian.<locals>.<genexpr>  s     O/N!GGII/N   r   r5   r4   ro   )r  r  r  r  r   r  r  r6   r>  r$  r#  
zeros_liker9   r
  r$  r  
contiguousr  r  )rp   r  r  jacobian_inputjacobian_parametersr>  r  jacobian_inpflat_jacobian_input	num_paramjacobian_paramr<   paramd_paramr=   r   d_out
flat_d_outd_input
jacobian_xd_xress                         r(   _analytical_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       $ rn   )r  detach)r  r  rp   s    r(   fw*NNTestCase._numerical_jacobian.<locals>.fw  s    ==/6688r*   ro   ư>)r  )rb  r  r   )r   r  r'  r6   r  )rp   r  r  r-  r.  r@  r:  r3  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   r5   )r  )boolr  r;  rE  r  r   r#  r(  r'  r  rH  rW  ro  assertLessEqual	PRECISION)rp   r  r  r-  r.  
analytical	numericalanalytical_tnumerical_tdifferencesr  rx  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*   ro   F)TTT)rv   rw   rx   ry   r   r  r|   r}   r  r  	Parameterr  r
  r   r6   r  r   r   rH  r  r  r  r$  r;  rE  rP  rz   ro   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_argsrB   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>   rW  rB   ro   z
: Specify z5 by a value, a function to generate it, or it's size!)	rM   r   r   rE   _required_arg_names
ValueErrorget_name_extra_kwargs
_arg_cache)rp   r   rM   rE   r   rs   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   rv   rM   )rp   	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rn   )_unpack)r  vrp   s     r(   r  #TestBase._unpack.<locals>.<genexpr>  s     >1t||Ar  )r  r6   r  r   type)rp   values   ` r(   rh  TestBase._unpack  s>    eU\\**L;>>>>Lr*   c                 &    U R                  SS5      $ )NrB   T_get_argrp   s    r(   rB   TestBase.constructor_args#  s    }}/66r*   c                 &    U R                  SS5      $ )NrW  Tro  rq  s    r(   rW  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   $ )NrY  rZ  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 rn   )r  r  r6   r  re   r   )sizessmap_tensor_sizess     r(   ry  +TestBase._get_arg.<locals>.map_tensor_sizes:  s]    !%..=BCU 0 3UCC#E5<<88$||~-${{511	  Ds   A5)r[  r_  r^  r]  rh  )rp   r  unpackfn_name	size_namery  s        @r(   rp  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  ro  )rp   r{  s     r(   
_get_inputTestBase._get_inputF  s    }}Wf--r*   c                     [         ern   r  )rp   	test_cases     r(   __call__TestBase.__call__I  s    !!r*   )r_  r^  r   rM   r   rE   ) NNrS  )rv   rw   rx   ry   r[  r`  r]  rh  propertyrB   rW  rp  r  r  rz   ro   r*   r(   rV  rV     sO    E 7 7 1 1X6."r*   rV  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rn   r  )rp   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-  TrP   r   ra   !FIXME_no_cuda_gradgrad_comparisonFr   g-C6*?check_forward_onlyrH   )superr`  r(  r-  should_test_cudashould_test_picklera   r  r   r  rH   r6   get_default_dtyperp   rq   rs   	__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   rH   r   rB   r  rE   r  r   r  assertEqualr  test_noncontigr  tempfileTemporaryFiler6   saveseekloadr  )
rp   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rn   )noncontiguize)r  orp   s     r(   r  +ModuleTest.noncontiguize.<locals>.<genexpr>  s     <1++A..r  r4   r   )r  r  r  r  r  r$  rf   r6   ra  
empty_likeselectr?  r(  is_contiguousrA  )rp   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  r6   r  r  )r  r<   s     r(   r  ,ModuleTest.test_noncontig.<locals>.<genexpr>  s)     JUjELL.I|quuw!|Us
   #AAreturn_indicesFr4   TFrO   )rp  g-C6?atolrtol)r  r6   r  r  anyr
  r$  r   r  r"   ru  rJ  normal_r  r   r  r  r  r   r  )rp   r  r  r  r>  r  r7  r4  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rn   )r  r6   r  r   
is_complexr  r8   s     r(   r  'ModuleTest.test_cuda.<locals>.<genexpr>  s0     &scr^_z!U\\'B'YqwwGYGY'Ycrs   AA)type_mapr   r  Fr  r  r  rT   r4   r  T)rA  )r  c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7frn   r  rH  r  r  s     r(   r  r         >eVdQRuuw{{}}Vd   *,c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7frn   r  r  s     r(   r  r     r  r  c              3   @   #    U  H  oR                  5       v   M     g 7frn   r  r  s     r(   r  r         8Y.Q.r*  c              3   @   #    U  H  oR                  5       v   M     g 7frn   r  r  s     r(   r  r    r  r*  )retain_graph)+r   r  unittestSkipTestr   rH   r  r6   re   floatr  r  r  r   r   rB   cudar  r#  r  copy_r$  r
  r  r"   r  r   r$  r  r  r   r  ra   r  
randn_liker?  rA  autogradr"  r  r  rH  r  )rp   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(   rP   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  ra   rH   r-  r   r  r  )rv   rw   rx   ry   r   r   r|   r}   r  r`  r  r  r  rP   rz   __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rn   ro   )r  r  map_variabless     r(   r  GInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>  s     Aqt}T22q   )r  r6   r  is_floating_pointr  rA  rk  )r<   r  s    r(   r  4InputVariableMixin._get_input.<locals>.map_variables  sN    !U\\**&&((ALLNN&*AOAwAqAAAr*   )rV  r  )rp   r  r  s     @r(   r  InputVariableMixin._get_input  s(    ##D%0	B U##r*   ro   N)rv   rw   rx   ry   r  rz   ro   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_inplacera   Tskip_doublerD  rF   rG   r^   test_cpurr  rb   r  r
  supports_fwgrad_bwgrad)r  r`  r(  r  r  ra   r	  rD  rF   rG   r
  rr  rb   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rn   ro   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      $ rn   )r  )inputs_and_paramsrs   r  
num_inputsr  s     r(   fn_to_gradcheck7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck8  s&    :%%f.?.LMMr*   r4   r   )rb   	fast_modecheck_forward_ad)rb   r  check_fwd_over_rev)r  r  ro  rr  r6   r  rP  
assertTruer   rb   r  r
  ra   r   r  )rp   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)Nr4   r   inplaceTc                    > TR                  5        H9  nTR                  X 5        Uc  M  TR                  UR                  5       U5        M;     g rn   )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rn   )r  r6   
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rn   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 $ rn   )r  r   r  )r  realrC  s      r(   to_type'NewModuleTest._do_test.<locals>.to_type  sB    $$&&!99W----//!99T?*!Mr*   c                 4   > T" U [         R                  S 5      $ rn   )r6   float16r  r1  s    r(   to_half'NewModuleTest._do_test.<locals>.to_half  s    q%--66r*   c                 P   > T" U [         R                  [         R                  5      $ rn   )r6   float32	complex64r5  s    r(   	to_single)NewModuleTest._do_test.<locals>.to_single  s    q%--AAr*   c                 P   > T" U [         R                  [         R                  5      $ rn   )r6   r  rB  r5  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rn   ro   r  r8   r;  s     r(   r  r*         Bk	!kr  c              3   4   >#    U  H  nT" U5      v   M     g 7frn   ro   r  r8   r>  s     r(   r  r*    rB  r  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7frn   r,  rA  s     r(   r  r*    s!     #MAIaL$5$5$7$7   #&c              3   @   #    U  H  oR                  5       v   M     g 7frn   )cpur  s     r(   r  r*    s     #A[EEGG[r*  c              3   @   #    U  H  oR                  5       v   M     g 7frn   r,  r  s     r(   r  r*    s     #BkFFHHkr*  F)enabledrO   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rn   r,  rD  s     r(   r  r*    s!     'Q[	!(9(9(;(;[rF  c              3   P   >#    U  H  nT" U5      R                  5       v   M     g 7frn   r,  )r  r8   r6  s     r(   r  r*    s     'O;a
(9(9;rF  rn   ))r6   get_num_threadsset_num_threadsr  r  r  __repr__r  ro  r   rB   _versionr   r  r   r  assertNotEqualr  r  r"  no_gradrv  backwardallr   r  r  FloatTensordevice_countr  re   DoubleTensorr  rH  r  backendsflagsr	  rD  half
HalfTensor)rp   r  r  r  num_threadsr  	module_ipinput_versionr>  input_ipinput_ip_clone	output_ipr"  r&  r>  r6  r;  r1  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      $ Nrb  Fro  rq  s    r(   _get_targetNewModuleTest._get_target      }}Xu--r*   c                 &    U R                  SS5      $ NrB   Fro  rq  s    r(   rB   NewModuleTest.constructor_args      }}/77r*   )rb   ra   r  r  r  rr  r	  rD  r
  r  r
  rG   rF   )rv   rw   rx   ry   r`  r  r  rf  r  rB   rz   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  rb  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 )NrP   Tr  Fra   r  check_bfloat16check_complexr
  rF   rG   r^   rb   rH   )r  r`  r(  r  r  ra   r  rp  rq  r
  rF   rG   rb   rH   r6   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rW  c              3   $   #    U  H  ov   M     g 7frn   ro   r  s     r(   r  )CriterionTest.__call__.<locals>.<genexpr>  s     :&91&9r  c                    > T" X5      $ rn   ro   )r  rb  r  r  s      r(   apply_fn(CriterionTest.__call__.<locals>.apply_fn  s    !%00r*   c                    > T" XU5      $ rn   ro   )r  r  rb  r  r  s       r(   rx  ry    s    !&&99r*   )rb   )r   rH   r   rB   r  rP  r  rf  rE   _forward_criterionrW  r   r  r  r  r  r  r   rb   ra   r   )rp   r  r  rb  r  ref_argsr  r  inputsrx  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rn   ro   )r  r  convert_dtyper   rA  s     r(   r  ACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>*  s     QS]1e]CCSs   )r  r6   r  r?  r   requires_grad_r  )r  r   rA  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  Trt  rR   g-C6:?r   r  rR  )r   r  r  r  r   rH   r  rf  r   rB   r  r  rk  r   r  r6   r[  bfloat16r{  r  _backward_criterion)rp   r  r   rW  r  
cpu_targetr  r  	gpu_input
gpu_targetr  r  r  r  r  s                 @r(   rP   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      $ re  ro  rq  s    r(   rf  CriterionTest._get_targetX  rh  r*   c                 &    U R                  SS5      $ rj  ro  rq  s    r(   rB   CriterionTest.constructor_args[  rl  r*   c                 &    U R                  SS5      $ )NrW  Fro  rq  s    r(   rW  CriterionTest.extra_args_  s    }}\511r*   )rb   rp  rq  r  ra   r  rH   r  r
  rG   rF   rn   )rv   rw   rx   ry   rV  r[  unionr`  r  rP   rf  r  rB   rW  rz   r  r  s   @r(   rn  rn    s^     #66<<hZH; #\J1{f. 8 8 2 2r*   rn  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  rA  r  )r  Fr  )r6   r   r9  r   r  r  r  r  rT  r?  r  r"  r  )r  opr  inp_dimsprecr{  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  r6   	rand_likerT  r  rf   r  rA  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 )NrY   rT   r4   r  )
r  r`  r|   rT  r6   r  layer_dummy_paramBufferr>  layer_dummy_buf)rp   r  s    r(   r`  )_create_basic_net.<locals>.Layer.__init__  sJ    G%'\\%++a2C%DD"#%99U[[Aq!-D#ED r*   )r  r  r  Nrv   rw   rx   ry   r`  rz   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 )NrY   rT   r  r4   )r  r`  l1r|   rT  r6   r  dummy_paramr  r>  	dummy_buf)rp   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  )r|   r}   
Sequential)r  lrx  rx  r  s       @r(   _create_basic_netr    sN    F		 F@bii @ 	AA
aA7Nr*   )rS  F)NrS  )NrS  r  )Nr  rS  r  )rS  r  )rS  )r  rS  )r4   r4   NrS  )r   rS  )r  rO   rB  FrS  )ro   r  Nr  )abcr   r  r  copyr   	functoolsr   r   	itertoolsr   operatorr   r6   
torch.cudatorch.nnr|   torch.nn.functional
functionalr   r	   r#   $torch.testing._internal.common_utilsr
   r   r   r   r   r   r   r   r   #torch.testing._internal.common_cudar   r   torch.autograd.gradcheckr   r   torch.autogradr   torch.typesr   torch.backends.cudnntypingr   r   r   collections.abcr   r  rJ  r)   r.   r   re   module_testsrh   r~   r   r   r   r   r   r   r   r   r  r  r  r+  r2  r9  rK  rS  r[  rn  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r.  r?  rG  rT  r[  ri  rs  r|  r  r  r  r  r  r  r  r  r  r3  r6  rD  rL  rY  r[  rd  ri  rm  rr  ry  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_infor2  r)  r  rV  r  r  r  rn  r  r  r  ro   r*   r(   <module>r     s       %        -S S S F K # (  ' ' $&&	'| 	 >Zll	 	'J:-t5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*   