
    Ph7                    LT   U d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dlmc mZ d dlmZ d d	lmZmZmZmZmZmZm Z  d d
l!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z* d dl+Zd dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ejh                  Z4dZ5d Z6d Z7 e8ddddd ddejr                         e8dddddd ddejr                  	       e8dd d!ejr                  "       e8dd#d$d%d&d!ejr                  '       e8d(d)d* ejr                  +       e8d,d-d.d/d!d!ejr                  0      gZ:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z?d6 Z@d7 ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSdJ ZTdK ZUdL ZVdM ZWdN ZXdO ZYdP ZZdQ Z[dR Z\dS Z]dT Z^dU Z_dV Z`dW ZadX ZbdY ZcdZ Zdd[ Zed\ Zfd] Zgd^ Zhd_ Zid` Zjda Zkdb Zldc Zmdd Znde Zog  e=        e>        e@        eB        eC        e?        eA        eD        eE        eF        eG        eH        eI        eJ        eK        eL        eM        eN        eO        eP        eQ        eR        eS        eT        eU        eW        eV        eX        eZ        eY        e[        e\        e]        e^        e_        e`        ea        eb        ec        ed        ee        ef        eg        eh        ei        ej        ek        el        em        en        e8dfdgdhdidddejr                  j       e8dfdkdldiddmddejr                  n	       e8dfdodpdiddqddrejr                  n	       e8dfdsdtdidduddejr                  n	       e8dfdvdwdxddyddejr                  n	       e8dfdzd{dxdd|ddejr                  n	       e8dfdgdhd}dd~dd       e8dd ddiddejr                         e8dd dddddejr                         e8dd ddidddejr                         e8dd ddidddejr                         e8dd ddidddejr                         e8dd ddidddejr                         e8dd dddddejr                         e8ddddddddejr                  n	       e8ddddddddejr                  n	       e8dd dddddejr                         e8ddddddddejr                  	       e8dddd/dddddejr                  
       e8dddd/dddddejr                  
       e8dddddddddejr                  
       e8dddddddddejr                  
       e8dddddd~dd       e8dd ddddddejr                  	       e8dd dddddejr                         e8dd dddddejr                         e8ddƄ dddddrejr                         e8ddɄ dddddrejr                         e8ddddddddrejr                  ϫ	       e8dddddddddrejr                  
       e8dddddddddrejr                  
       e8ddք ddddddrejr                  	       e8ddڄ ddddejr                         e8ddބ ddddejr                         e8dd ddddejr                         e8dd ddddejr                         e8dd ddddejr                         e8ddddddddejr                  	       e8dddddddddejr                  
       e8ddddddd!ddejr                  
       e8ddddddmdddejr                  
       e8dddddddddejr                  
       e8ddddddd~d       e8dd d dddddejr                  	       e8dd ddddejr                         e8dd ddddejr                         e8dd d	d
dddejr                         e8dd dd
dddejr                         e8dd dd
dddejr                         e8dddddddejr                         e8ddddddddejr                  	       e8ddddejr                         e8ddddeodejr                         e8dddd dd !       e8d"d#d$d% d!ejr                  &       e8d"d#d$d' d!d(ejr                  )       e8d*d#d+d, d!d-ejr                  )       e8d*d#d+d. d!d(ejr                  )       e8d*d/d0d1 d!d2ejr                  )       e8d*d3d4d5 d!d6ejr                  )       e8d7d8 d9d: d!ejr                  ;       e8d<d= d>d? d!ejr                  ;       e8d@dA dBdC d!ejr                  ;       e8dDdE dFdG d!dH       e8dI dJdK dLd!dM       e8dNdOdPdQejr                         e8dRdOdSdTejr                         e8 e<ej                  dUddVW      dXdYdZd!ejr                  [       e8 e<ej                  dUddVW      dXd\d]d!^       e8 e<ej                  d_ddVW      dXd`dad!ejr                  [       e8 e<ej                  ddbdVW      dcdYddd!ejr                  [       e8 e<ej                  dUdded!f      dgdYdhd!ejr                  [       e8 e<ej                  didded!f      djd`dkd!ejr                  [       e8 e<ej                  ddbded!f      dldYdmd!ejr                  [       e8 e<ej                  dUdded!f      dgd\dnd!^       e8 e<ej                  dUddedf      dodYdpd!ejr                  [       e8 e<ej                  ddbdedf      dqdYdrd!ejr                  [       e8 e<ej                  dsddVW      dtdudvd!ejr                  [       e8 e<ej                  dUddVW      dwdxdyd!ejr                  [       e8 e<ej                  dzddVW      d{d|d}d!ejr                  [       e8 e<ej                  ddbdVW      d~dxdd!ejr                  [       e8 e<ej                  dUddVW      dwddd!^       e8 e<ej                  dUddd!f      ddxdd!ejr                  [       e8 e<ej                  dUddd!f      dddd!^       e8 e<ej                  dddd!f      dddd!ejr                  [       e8 e<ej                  ddbdd!f      ddxdd!ejr                  [       e8 e<ej                  dddd!f      ddxdd!ejr                  [       e8 e<ej                  dddd!f      ddxdd!ejr                  [       e8 e<ej                  ddddf      ddxdd!ejr                  [       e8 e<ej                  ddddf      ddxdd!ejr                  [       e8 e<ej                  dUddd!f      ddxdd!ejr                  [       e8 e<ej                  dUddd!f      dddd!^       e8 e<ej                  dddd!f      dddd!ejr                  [       e8 e<ej                  ddbdd!f      ddxdd!ejr                  [       e8 e<ej                  dddd!f      ddxdd!ejr                  [       e8 e<ej                  dddd!f      ddxdd!ejr                  [       e8 e<ej                  ddddf      ddxdd!ejr                  [       e8 e<ej                  ddddf      ddxdd!ejr                  [       e8 e<ej                  dUddVW      dddd!ejr                  [       e8 e<ej                  dUddVW      dddd!^       e8 e<ej                  dddVW      dddd!ejr                  [       e8 e<ej                  ddbdVW      dddd!ejr                  [       e8 e<ej                  dUddd!f      dddd!ejr                  [       e8 e<ej                  dUddd!f      dddd!^       e8 e<ej                  dddd!f      dddd!ejr                  [       e8 e<ej                  dddd!f      ddddd!ejr                         e8 e<ej                  ddddf      dddd!ejr                  [       e8 e<ej                  ddddf      ddddd!ejr                         e8 e<ej                  dë      dĐdŐdd!ejr                  [       e8 e<ej                  dej                  ȫ      dɐdŐdd!d!ejr                  ˫       e8 e<ej                  dǐë      d̐d͐dd!ejr                  [       e8 e<ej                  dǐë      d̐dϐdd!ejr                  [       e8 e<ej                  dej                  ȫ      dɐdϐdd!d!ejr                  ˫       e8 e<ej                  d ë      dd)dd!d!ejr                  ԫ       e8 e<ej                  dՐë      dd)dd!d!ejr                  ԫ       e8 e<ej                  dë      dĐdؐdd!d!ګ       e8 e<ej                  dë      dېdŐdd!ejr                  [       e8 e<ej                  dǐë      dݐd͐dd!ejr                  [       e8 e<ej                  dǐë      dݐdϐdd!ejr                  [       e8 e<ej                  d ë      dd)dd!ejr                  [       e8 e<ej                  dՐë      dd)dd!ejr                  [       e8 e<ej                  d ë      ddؐdd!^       e8dd ddd!dejr                         e8dd ddd!dejr                         e8dd ddd!eodejr                         e8dd ddd!dejr                         e8dd ddd!dejr                         e8dd ddeod!dejr                         e8dd#d$dؐdd!ejr                  '       e8dd ejr                         e8dd d ejr                         e8dd dejr                         e8dddd dejr                         e8dd	 eodejr                  
       e8dddddddd!d!ejr                  
       e8dddsddej                  fddd!dde#rdndejr                  	       e8dddd d!dddejr                  	       e8dddsddej                  fdd d!dddejr                  	       e8d ddsdsdsddej                  fd!d" d!d#de#rdnd$ejr                  	       e8dd%d&d' d( dddejr                  )	       e8d(d*d+d,eodejr                  -       e8d.d/d0 ej                  dsdsg      fd,eodejr                  -       e8d1g d2dd!fd3d4ddddd56	      Zw exg d7g d8      D ]  \  ZyZzd`D ]  Z{e{dk(  reyd9k(  r e| e}de{dz               Z~d:d;j                   eee~            z   d<z   Zd=die{z  z   Zd> e|d? e~D              z   Zewj                   e8d@e{ dAdsdՐdՐdse~dǐddeyf	dBe{ dCe dDez dEeedey dFddejr                  G
               g dHZi dIdJejr                  dKdLdMdidNd!d!ejr                  dOdPd!d!ejr                  dOdd!ejr                  dQdRdSejr                  idTdSejr                  idUdSejr                  idVdSejr                  idWdSejr                  idXdSejr                  idYdSejr                  idZdSejr                  id[dSejr                  id\dSejr                  id]dSejr                  id^dSejr                  idSejr                  idSejr                  idSejr                  idSejr                  idSejr                  idSejr                  idSejr                  id_Ze-ee8f   ed`<   eD ]I  Z e8edieodd!a      Zej                  ei       Zej                  e       ewj                  e       K d,dbZd,dcZ	 	 d-ddZ	 	 d.deZ	 	 d/dfZ	 	 d/dgZ	 	 d-dhZd0djZd0dkZdl Zd,dmZd1dnZd,doZdp Zd2dqZd3drZ	 	 d4dsZd3dtZd3duZeeeeeeeeeeeeeeedvZe-dwe.f   edx<   g  e8dyddz d{ dejr                  |       e8d}d~ d d ddejr                         e8d}ddd d d ddejr                  	       e8d}d dd d d ddejr                  	       e8d}d dd d d ddejr                  	       e8d}d dd d d ddejr                  	       e8dd d d dejr                         e8d  e	ejD                         eejD                  d            dd d d ddejr                  	       e8dd d d dejr                         e8dd d d dejr                         e8dd dd d d ddejr                  	       e8ddd ejr                         e8dd ddd dejr                         e8ddd d dejr                  «       e8ddÐdĐddń dƄ ddejr                  ȫ	       e8dɐddʄ d˄ ddd!dejr                  ͫ	       e8dɐdΐdτ dЄ dd!dejr                  ѫ       e8dҐdΐdӄ dԄ d!ejr                  ի       e8d֐dΐdׄ d؄ dd!ejr                  ٫       e8d֐ddڄ dۄ ddd!ejr                  ܫ       e8d֐dݐdސd߄ d d ddd!ejr                  
       e8d֐ddddΐd d ddd!ejr                         e8d֐dǐdi ejF                  dejr                        fdd ejF                  dejr                        fd d d ddd!ejr                         e8ddΐd dd5dejr                         e8ddΐd dddd ejr                         e8ddd d dejr                  «       e8dd d d  d       e8dddd d d dd       e8dd	 d
 d dejr                         e8ddÐdd d d ddejr                  	       e8dd d ejr                         e8d ejF                  dejr                        fdd d dejr                         e8d ejF                  dejr                        fdd d dejr                         e8d}dd d dd dejr                  !       e8d}d" d#d ejF                  dsd$d$      j                  dի      jI                         jK                         d% d&dejr                  '	       e8d}d(d)dd* d+ d,dejr                  -	       e8d}d.d/ d0 dd1dejr                  !       e8d}d2d3 d4 dd5dejr                  !       e8ddd6 d7 dd d!ejr                  !       e8dd8 d9d ejF                  dsd$d$      j                  dի      jI                         jK                         d: d&d!ejr                  '	       e8dd(d;dd< d= d,d!ejr                  -	       e8dd.d> d? dd1d!ejr                  !       e8dd2d@ dA dd5d!ejr                  !       e8ddBdC dD ddEd!ejr                  !       e8ddFdG dH ddId!ejr                  !       e8ddJdK dL ddMd!ejr                  !       e8dNdO dPdBdQ dR d!ejr                  S       e8dTdU dVdBdW dX d!ejr                  S       e8dYdZ d[ d\dBd] d^ d!ejr                  _	       e8d`da dPdFdb dc d!ejr                  S       e8ddde dVdFdf dg d!ejr                  S       e8dhdi dVd2dj dk d!ejr                  S       e8dldm dnd2do dp d!ejr                  S       e8dqdr dPd2ds dt d!ejr                  S       e8dudv dwd2dx dy d!ejr                  S       e8dzd{ dVdd| d} d!ejr                  S       e8d~d dPdd d d!ejr                  S       e8dd ddd d d!ejr                  S       e8dd d ddd d d!ejr                  _	       e8dd d9dBd d ddd!ejr                  
       e8dd d9dFd d ddd!ejr                  
       e8dd d9dJd d ddd!ejr                  
       e8dd)d d dejr                         e8dddd d d dejr                         e8dddd)d d dejr                         e8dddd d d dejr                         e8dydؐd d ddejr                         e8dd d d ddejr                         e8d  e	ejD                         eejD                  d            dd d d ddejr                  	       e8dd d d dddejr                         e8dd dÄ dĄ dddƫ       e8ddǄ dȐdɄ dʄ d˄ ddejr                  	       e8ddÐdĐdؐd̄ ddejr                  Ϋ       e8ddؐdτ dd5dЄdejr                  ѫ       e8d ejF                  d      fdҐdӄ dԄ dՄ ddd!ejr                  
       e8d֐dg dآg d٢fdڄ dۄ d܄ dddd!d!d!d!ejr                  ޫ       e8d֐dאd ejL                  g dآ       ejL                  g d٢      fd d d dddd!d!ejr                         e8d֐ddg dآg d٢fd d d ddd!d!d!d!ejr                         e8d֐ddd ejL                  g dآ       ejL                  g d٢      fd d d ddd!d!ejr                         e8d֐ddd ejL                  g dآ       ejL                  g d٢      fd d d ddd!d!ejr                        Zd Zg dZg dZ eee      D ]?  \  ZZ e8e de edddOdOed!ejr                        Zej                  e       A eD ]8  Z e8de d d d ed!ejr                         Zej                  e       : dd d fdd d fdd d fdɐd d fdd	 d
 fd}d d fdd d fdd d fdd d fdҐd d fg
Zdɐdd!iiZe-ee8f   ed<   d!d!d!d!d!dZg dZ eee      D ]u  \  \  ZZZZ e8e de eddefdefdedej                  ed            Zej                  ei       Zej                  e       ej                  e       w  G d de      Z G d d       Z G d! d"e      Z G d# d$      Z G d% d&ee      Z G d' d(ee      Zd6d)Zd7d*Zd+ Zy(8      )abstractmethodN)deepcopy)reducepartialwraps)product)mul)pi)
_reduction)TestCaseto_gpufreeze_rng_stateis_iterable	gradcheckgradgradcheckset_default_dtype)	TEST_CUDASM90OrLater)_get_numerical_jacobian_iter_tensors)Variable)_TensorOrTensors)DictCallableTupleListSequenceUnionAnyh㈵>c                 r    t        | dd       }|#t        j                  t        | dd       dd      }|J |S )N	reductionsizeAverageTF)emit_warning)getattr
_Reductionlegacy_get_stringmresults     lC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/testing/_internal/common_nn.pyget_reductionr,      sD    QT*F~--ga.MtbghM    c                 >    t        | dd       }||S t        | dd       S )Nweightweights)r%   r(   s     r+   
get_weightr1   '   s*    Q$'F1i&&r-   Linear)
      ztorch::nn::LinearOptions(10, 8))   r3   c                     t        j                  | |d   j                               |d   j                  dd      j	                  dd      z   S )Nr      r5   r4   )torchmmtviewexpandip_s      r+   <lambda>rB   j   s<    UXXa1%: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)r3   r4   Fz+torch::nn::LinearOptions(10, 8).bias(false)no_biasc                 P    t        j                  | |d   j                               S Nr   )r9   r:   r;   r>   s      r+   rB   rB   u   s    UXXa1%:r-   )	rD   rE   rF   rG   descrH   rI   rJ   rK   RReLU)r7      rQ   F)rD   rG   	test_cudarK   )皙?g?z/torch::nn::RReLUOptions().lower(0.1).upper(0.9))r5   r5      with_up_down)rD   rE   rF   rG   rO   rR   rK   FlattenrQ      r5   rT   c                 .    t        j                  | d      S Nr7   )r9   flatten)r?   rA   s     r+   rB   rB      s    5==A#6r-   )rD   rG   rH   rK   CrossMapLRN2d)rT   rC   MbP?rQ   z>torch::nn::CrossMapLRN2dOptions(5).alpha(5e-3).beta(1e-3).k(2))rQ   rX      r^   )rD   rE   rF   rG   check_gradgradcheck_batched_gradrK   c                      t        t        | d      } t        j                  |      j                  |  j                         S rZ   )r   r	   r9   randpermr<   double)sizetotals     r+   _rand_tensor_non_equalrf      s5    3a E%5>>% %%t,3355r-   c                 B      G  fddt         j                        }|S )Nc                       e Zd Z fdZy))wrap_functional.<locals>.FunctionalModulec                      |i S N )selfargsfnkwargss     r+   forwardz1wrap_functional.<locals>.FunctionalModule.forward   s    t&v&&r-   N)__name__
__module____qualname__rq   )ro   rp   s   r+   FunctionalModuleri      s    	'r-   ru   )nnModule)ro   rp   ru   s   `` r+   wrap_functionalrx      s    '299 ' r-   c            
           t        j                  dd       t        dt         fd      dd d d fdd	t         j                  
      S )Nr3   PoissonNLLLoss_no_reducec                 R    t        j                  | j                  |       d      S Nnoner"   )Fpoisson_nll_losstype_asr?   r;   s    r+   rB   z/poissonnllloss_no_reduce_test.<locals>.<lambda>       a((AIIaLFKr-   zaF::poisson_nll_loss(i, t.to(i.options()), F::PoissonNLLLossFuncOptions().reduction(torch::kNone))c                  .    t        j                  dd      S Nr3   r9   randrl   r-   r+   rB   z/poissonnllloss_no_reduce_test.<locals>.<lambda>   s    B+r-   _get_input()r   c                 H    | j                         j                  |       z
  S rk   )expr	   r?   rA   r;   s     r+   rB   z/poissonnllloss_no_reduce_test.<locals>.<lambda>   s    1557QUU1X#5r-   Ffullnameconstructorcpp_function_callinput_fncpp_var_maprH   picklerK   r9   randndictrx   rc   r;   s   @r+   poissonnllloss_no_reduce_testr      sM    BA+#KMj+(q15ll
$ 
$r-   c                      t        t        j                  dd      j                  d      j	                  t        j
                               t        dt         fd      dd d d	 fd
ddt        j
                  	      S )N   r3   r   BCELoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   binary_cross_entropyr   r   s    r+   rB   z(bceloss_no_reduce_test.<locals>.<lambda>       a,,Q		!Or-   iF::binary_cross_entropy(i, t.to(i.options()), F::BinaryCrossEntropyFuncOptions().reduction(torch::kNone))c                  N    t        j                  dd      j                  dd      S Nr   r3   y&1?v?r9   r   clamp_rl   r-   r+   rB   z(bceloss_no_reduce_test.<locals>.<lambda>       B+226:Fr-   r   r   c                 `    | j                         z  dz
  d| z
  j                         z  z    S rZ   logr   s     r+   rB   z(bceloss_no_reduce_test.<locals>.<lambda>   *    Q[AEa!e[[]3J%J#Kr-   FgǺF?	r   r   r   r   r   rH   r   	precisionrK   )r   r9   r   gttorc   r   rx   r   s   @r+   bceloss_no_reduce_testr      so    R$''*--ell;<A$#OQnF(q1Kll$ $r-   c            
           t        j                  d      j                  d      j                  t         j                         t        dt         fd      dd d d fd	d
t         j                        S )Nrl   r   BCELoss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   r   r   s    r+   rB   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>   r   r-   r   c                  L    t        j                  d      j                  dd      S Nrl   r   r   r   rl   r-   r+   rB   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>       B..vzBr-   r   r   c                 `    | j                         z  dz
  d| z
  j                         z  z    S rZ   r   r   s     r+   rB   z/bceloss_no_reduce_scalar_test.<locals>.<lambda>   r   r-   Fr   )r9   r   r   r   rc   r   rx   r   s   @r+   bceloss_no_reduce_scalar_testr      sd    B1  .A+#OQnB(q1Kll
$ 
$r-   c                  v    t        t        j                  ddt        j                        j	                  d      j                  t        j                               t        j                  dt        j                        t        dt         fd      dd d	 d
 fdddt        j                  	      S )Nr   r3   dtyper   BCELoss_weights_no_reducec                 r    t        j                  | j                  |       j                  |       d      S Nr}   r/   r"   r   r?   r;   r0   s    r+   rB   z0bceloss_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                  N    t        j                  dd      j                  dd      S r   r   rl   r-   r+   rB   z0bceloss_weights_no_reduce_test.<locals>.<lambda>   r   r-   r   r   c                 f    | j                         z  dz
  d| z
  j                         z  z    z  S rZ   r   )r?   r@   r)   r;   r0   s      r+   rB   z0bceloss_weights_no_reduce_test.<locals>.<lambda>   s0    q1557{a!eA{{}5L'L%MPW%Wr-   Fa2U0*3?r   )	r   r9   r   rc   r   r   r   r   rx   r;   r0   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            
      @    t        j                  d      j                  d      j                  t         j                         t        j
                  dt         j                        t        dt         fd      dd dd	  fd
dt         j                        S )Nrl   r   r    BCELoss_weights_no_reduce_scalarc                 r    t        j                  | j                  |       j                  |       d      S r   r   r   s    r+   rB   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   r   r-   zF::binary_cross_entropy(
            i, t.to(i.options()),
            F::BinaryCrossEntropyFuncOptions().weight(weights.to(i.options())).reduction(torch::kNone))r   r   c                  L    t        j                  d      j                  dd      S r   r   rl   r-   r+   rB   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   r   r-   c                 f    | j                         z  dz
  d| z
  j                         z  z    z  S rZ   r   r?   rA   r;   r0   s     r+   rB   z7bceloss_weights_no_reduce_scalar_test.<locals>.<lambda>   s/    Q[AEa!e[[]3J%J#Kg#Ur-   F)r   r   r   r   r   rH   r   rK   )r9   r   r   r   rc   r   r   rx   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                  0    t        t        j                  dd      j                  d      j	                  t        j
                              t        j                          t        dt        fd      dd dd	 fd
ddt        j
                  	      S )Nr   r3   r   BCEWithLogitsLoss_legacy_enumc                 R    t        j                  | j                  |       d      S )NF)r   r    binary_cross_entropy_with_logitsr   r   s    r+   rB   z4bce_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                  N    t        j                  dd      j                  dd      S r   r   rl   r-   r+   rB   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>
  r   r-   r   r   c                 x     |       j                         z  dz
  d |       z
  j                         z  z    S rZ   r   r?   rA   sigmoidr;   s     r+   rB   z4bce_with_logistic_legacy_enum_test.<locals>.<lambda>  8    Q)9%9QUq7ST:~FZFZF\<\%\#]r-   F	r   r   r   r   r   rH   r_   r   rK   
r   r9   r   r   r   rc   rv   Sigmoidr   rx   r   r;   s   @@r+   "bce_with_logistic_legacy_enum_testr     sz    R$''*--ell;<AjjlG0#WYkF(q1]ll r-   c                  0    t        t        j                  dd      j                  d      j	                  t        j
                              t        j                          t        dt        fd      dd dd	 fd
ddt        j
                  	      S )Nr   r3   r   BCEWithLogitsLoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   r   s    r+   rB   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>      a88AIIaLTZ[r-   r   c                  N    t        j                  dd      j                  dd      S r   r   rl   r-   r+   rB   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                 x     |       j                         z  dz
  d |       z
  j                         z  z    S rZ   r   r   s     r+   rB   z2bce_with_logistic_no_reduce_test.<locals>.<lambda>  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                      t        j                  d      j                  d      j                  t         j                        t        j                          t        dt        fd      dd dd fd	d
d
t         j                  	      S )Nrl   r   "BCEWithLogitsLoss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   r   r   s    r+   rB   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>+  r   r-   r   c                  L    t        j                  d      j                  dd      S r   r   rl   r-   r+   rB   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>.  r   r-   r   r   c                 x     |       j                         z  dz
  d |       z
  j                         z  z    S rZ   r   r   s     r+   rB   z9bce_with_logistic_no_reduce_scalar_test.<locals>.<lambda>0  r   r-   Fr   )	r9   r   r   r   rc   rv   r   r   rx   r   s   @@r+   'bce_with_logistic_no_reduce_scalar_testr   %  sr    B1  .AjjlG5#[]kB(q1]ll r-   c                       t        j                  ddt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )Nr3   r   KLDivLoss_with_target_no_reducec                 R    t        j                  | j                  |       d      S r|   r   kl_divr   r   s    r+   rB   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda><      ahhq!))A,&Ar-   NF::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone))c                  J    t        j                  dd      j                         S r   r9   r   r   rl   r-   r+   rB   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>>      B+//1r-   r   r   c                 D    t        d   | j                  |       d      S N	KLDivLossr}   r~   loss_reference_fnsr   r   s     r+   rB   z6kldivloss_with_target_no_reduce_test.<locals>.<lambda>@      {+Aqyy|vNr-   TF	r   r   r   r   r   rH   supports_forward_adr   rK   r9   r   rc   r   rx   r   s   @r+   $kldivloss_with_target_no_reduce_testr   7  sV    

2r.A2#ACj1(q1O ll$ $r-   c                       t        j                  ddt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )Nr3   r   KLDivLoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   r   s    r+   rB   z*kldivloss_no_reduce_test.<locals>.<lambda>L  r   r-   r   c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   z*kldivloss_no_reduce_test.<locals>.<lambda>N  r   r-   r   r   c                 D    t        d   | j                  |       d      S r   r   r   s     r+   rB   z*kldivloss_no_reduce_test.<locals>.<lambda>P  r   r-   TFr   r   r   s   @r+   kldivloss_no_reduce_testr  G  sV    

2r.A&#ACj1(q1O ll r-   c                       t        j                  dt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )Nrl   r   KLDivLoss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   r   r   s    r+   rB   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>]  r   r-   r   c                  H    t        j                  d      j                         S Nrl   r   rl   r-   r+   rB   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>_      B++-r-   r   r   c                 D    t        d   | j                  |       d      S r   r   r   s     r+   rB   z1kldivloss_no_reduce_scalar_test.<locals>.<lambda>a  r   r-   TFr   r   r   s   @r+   kldivloss_no_reduce_scalar_testr  X  sT    

2U\\*A-#ACj-(q1O ll$ $r-   c                       t        j                  ddt         j                        j                          t	        dt         fd      dd d d fd	d
dt         j                  	      S )Nr3   r   #KLDivLoss_with_log_target_no_reducec                 T    t        j                  | j                  |       dd      S Nr}   T)r"   
log_targetr   r   s    r+   rB   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>m      ahhq!))A,&TRr-   _F::kl_div(i, t.to(i.options()), F::KLDivFuncOptions().reduction(torch::kNone).log_target(true))c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>o  r   r-   r   r   c                 D    t        d   | j                  |       d      S NKLDivLoss_log_targetr}   r~   r   r   s     r+   rB   z:kldivloss_with_log_target_no_reduce_test.<locals>.<lambda>q      56q!))A,RXYr-   TFr   r9   r   rc   r   r   rx   r   s   @r+   (kldivloss_with_log_target_no_reduce_testr  h  s_    

2r.224A6#RT{1(q1Z ll$ $r-   c                       t        j                  ddt         j                        j                          t	        dt         fd      dd d d fd	d
dt         j                  	      S )Nr3   r   KLDivLoss_no_reduce_log_targetc                 T    t        j                  | j                  |       dd      S r  r   r   s    r+   rB   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>}  r  r-   r  c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>  r   r-   r   r   c                 D    t        d   | j                  |       d      S r  r   r   s     r+   rB   z5kldivloss_no_reduce_log_target_test.<locals>.<lambda>  r  r-   TFr   r  r   s   @r+   #kldivloss_no_reduce_log_target_testr  x  s_    

2r.224A1#RT{1(q1Z ll r-   c                       t        j                  dt         j                        j                          t	        dt         fd      dd d d fd	d
dt         j                  	      S )Nrl   r   %KLDivLoss_no_reduce_scalar_log_targetc                 T    t        j                  | j                  |       dd      S r  r   r   s    r+   rB   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r  r-   r  c                  H    t        j                  d      j                         S r  r   rl   r-   r+   rB   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r	  r-   r   r   c                 D    t        d   | j                  |       d      S r  r   r   s     r+   rB   z<kldivloss_no_reduce_scalar_log_target_test.<locals>.<lambda>  r  r-   TFr   r  r   s   @r+   *kldivloss_no_reduce_scalar_log_target_testr%    s]    

2U\\*..0A8#RT{-(q1Z ll$ $r-   c                       t        j                  dddt         j                         t        dt	         fd      dd d	 d
 fdddt         j                  	      S )NrQ   rX   r5   r   L1Loss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   l1_lossr   r   s    r+   rB   z'l1loss_no_reduce_test.<locals>.<lambda>      aii199Q<6Br-   PF::l1_loss(i, t.to(i.options()), F::L1LossFuncOptions().reduction(torch::kNone))c                  0    t        j                  ddd      S NrQ   rX   r5   r9   r   rl   r-   r+   rB   z'l1loss_no_reduce_test.<locals>.<lambda>      Q1-r-   r   r   c                 H    | j                  |       z
  j                         S rk   r   absr   s     r+   rB   z'l1loss_no_reduce_test.<locals>.<lambda>      A		!$4#9#9#;r-   TFr   r9   r   rc   r   rx   r   s   @r+   l1loss_no_reduce_testr6    sU    Aq!5<<0A##BDl-(q1; ll
$ 
$r-   c            
           t        j                  dddt         j                         t        dt	         fd      dd d	 d
 fddd      S )NrQ   rX   r5   r   L1Loss_no_reduce_complexc                 R    t        j                  | j                  |       d      S r|   r)  r   s    r+   rB   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  r+  r-   r,  c                  P    t        j                  dddt         j                        S )NrQ   rX   r5   r   )r9   r   cdoublerl   r-   r+   rB   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  s    Q1EMMBr-   r   r   c                 H    | j                  |       z
  j                         S rk   r2  r   s     r+   rB   z/l1loss_no_reduce_complex_test.<locals>.<lambda>  r4  r-   TF)r   r   r   r   r   rH   r   r   )r9   r   r;  r   rx   r   s   @r+   l1loss_no_reduce_complex_testr=    sN    Aq!5==1A+#BDlB(q1; 	 	r-   c                       t        j                  dt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )Nrl   r   L1Loss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   r)  r   s    r+   rB   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>  r+  r-   r,  c                  ,    t        j                  d      S r  r/  rl   r-   r+   rB   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>      Rr-   r   r   c                 H    | j                  |       z
  j                         S rk   r2  r   s     r+   rB   z.l1loss_no_reduce_scalar_test.<locals>.<lambda>  r4  r-   TFr   r5  r   s   @r+   l1loss_no_reduce_scalar_testrD    sQ    Bell+A*#BDl((q1; ll
$ 
$r-   c                      d} t        j                  | dt         j                  it        dt	        fd      d| ddfdd	d
t         j                  	      S )NrW   r   MSELoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   mse_lossr   r?   targets    r+   rB   z(mseloss_no_reduce_test.<locals>.<lambda>      ajjFNN1$5Hr-   WF::mse_loss(i, target.to(i.options()), F::MSELossFuncOptions().reduction(torch::kNone))r   rJ  c                 ,    | z
  j                  d      S NrQ   powr?   rA   rK  s     r+   rB   z(mseloss_no_reduce_test.<locals>.<lambda>      AJ#3#3A#6r-   TF	r   r   r   rG   r   rH   r   r   rK   r5  rG   rK  s    @r+   mseloss_no_reduce_testrV    sY    J[[*9ELL9F$#HJs(F;6 ll
$ 
$r-   c                      d} t        j                  | t         j                        t        dt	        fd      d| ddfdd	d
t         j                  	      S )Nrl   r   MSELoss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   rH  rJ  s    r+   rB   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>  rL  r-   rM  r   rJ  c                 ,    | z
  j                  d      S rO  rP  rR  s     r+   rB   z/mseloss_no_reduce_scalar_test.<locals>.<lambda>  rS  r-   TFrT  r5  rU  s    @r+   mseloss_no_reduce_scalar_testr[    sV    J[[5<<8F+#HJs(F;6 ll
$ 
$r-   c            
      (    t        t        j                  d      j                         j	                  d      j                         j                               ddi t        dt         fd      dd d	d
 fddt        j                        S )Nr   r3   r"   r}   NLLLoss_no_reducec                 t    t        j                  | j                  |       j                         d         S Nr"   r~   r   nll_lossr   longr?   rp   r;   s    r+   rB   z(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                  J    t        j                  dd      j                         S Nr   r3   r   rl   r-   r+   rB   z(nllloss_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                 ^    t        d   | j                  |       j                         fi S NNLLLossr   r   rb  r?   rA   rp   r;   s     r+   rB   z(nllloss_no_reduce_test.<locals>.<lambda>  (    y)!QYYq\->->-@KFKr-   Fr   
r   r9   emptyuniform_r	   floorrb  r   rx   rc   rp   r;   s   @@r+   nllloss_no_reduce_testrs    s    R))+//399;@@BCA6"F$#WYg1(q1Lll$ $r-   c            
      *    t        t        j                  d      j                         j	                  d      j                         j                               ddd t        dt         fd      dd	 d
d fddt        j                        S )Nr   r3   rQ   r}   ignore_indexr"   NLLLoss_no_reduce_ignore_indexc           	          t        j                  | j                  |       j                         t	        d         t        d               S Nrv  r"   ru  r   ra  r   rb  intstrrc  s    r+   rB   z5nllloss_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                  J    t        j                  dd      j                         S rg  r   rl   r-   r+   rB   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>   r   r-   r   r   c                 ^    t        d   | j                  |       j                         fi S ri  rk  rl  s     r+   rB   z5nllloss_no_reduce_ignore_index_test.<locals>.<lambda>  rm  r-   Fr   rn  rr  s   @@r+   #nllloss_no_reduce_ignore_index_testr    s    R))+//399;@@BCA:;&)QF1#EFw1(q1Lll$ $r-   c            
      X    t        t        j                  d      j                         j	                  d      j                         j                               t        j                  d      fd t        dt         fd      dd dd	 fd
dt        j                        S )Nr   r3   c                 ,    j                  |       ddS r   r   r?   r/   s    r+   rp   z.nllloss_no_reduce_weights_test.<locals>.kwargs       ..+&AAr-   NLLLoss_no_reduce_weightsc                 x    t        j                  | j                  |       j                         fi  |       S rk   r`  rc  s    r+   rB   z0nllloss_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                  h    t        j                  dd      j                  d      j                         S Nr   r3   {Gz?r9   r   addr   rl   r-   r+   rB   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  #    B+//599;r-   r   r?   r;   r/   c                 j    t        d   | j                  |       j                         fi  |       S ri  rk  rl  s     r+   rB   z0nllloss_no_reduce_weights_test.<locals>.<lambda>  ,    y)!QYYq\->->-@NF1INr-   Fr   r   r9   ro  rp  r	   rq  rb  r   r   rx   rc   rp   r;   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            
      X    t        t        j                  d      j                         j	                  d      j                         j                               t        j                  d      fd t        dt         fd      dd dd	 fd
dt        j                        S )Nr   r3   c                 .    j                  |       dddS )Nr}   rQ   r/   r"   rv  r  r  s    r+   rp   z;nllloss_no_reduce_weights_ignore_index_test.<locals>.kwargs"  s     ..+& !# 	#r-   &NLLLoss_no_reduce_weights_ignore_indexc                     t        j                  | j                  |       j                         fi  | j                        S rk   )r   ra  r   rb  datarc  s    r+   rB   z=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                  h    t        j                  dd      j                  d      j                         S r  r  rl   r-   r+   rB   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>-  r  r-   r   r  c                 j    t        d   | j                  |       j                         fi  |       S ri  rk  rl  s     r+   rB   z=nllloss_no_reduce_weights_ignore_index_test.<locals>.<lambda>/  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            
          t        t        j                  d      j                         j	                  d      j                         j                               t        j                  d      fd t        dt         fd      dt        j                  ddt        j                        j                  d      j                         d	d
 fddt        j                        S )Nr   r3   c                 .    j                  |       dddS )Nr}   r8   r  r  r  s    r+   rp   z?nllloss_no_reduce_weights_ignore_index_neg_test.<locals>.kwargs9  s     ..+& "$ 	$r-   *NLLLoss_no_reduce_weights_ignore_index_negc                 x    t        j                  | j                  |       j                         fi  |       S rk   r`  rc  s    r+   rB   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>@  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                 j    t        d   | j                  |       j                         fi  |       S ri  rk  rl  s     r+   rB   zAnllloss_no_reduce_weights_ignore_index_neg_test.<locals>.<lambda>F  r  r-   F)r   r   r   inputr   rH   r   rK   )r   r9   ro  rp  r	   rq  rb  r   r   rx   rc   r  r   r  s   @@@r+   /nllloss_no_reduce_weights_ignore_index_neg_testr  5  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            
          t        t        j                  ddd      j                  d      j	                         j                               ddi t        dt         fd      dd	 d
d fddt        j                        S )NrQ   rT   rX   r"   r}   NLLLoss2d_no_reducec                 t    t        j                  | j                  |       j                         d         S r_  r`  rc  s    r+   rB   z*nllloss2d_no_reduce_test.<locals>.<lambda>R  rd  r-   re  c                  N    t        j                  dddd      j                         S NrQ   rX   rT   r   rl   r-   r+   rB   z*nllloss2d_no_reduce_test.<locals>.<lambda>U      Aq!Q/335r-   r   r   c                 ^    t        d   | j                  |       j                         fi S N	NLLLossNdrk  rl  s     r+   rB   z*nllloss2d_no_reduce_test.<locals>.<lambda>W  (    {+Aqyy|/@/@/BMfMr-   Fr   	r   r9   r   r	   rq  rb  r   rx   rc   rr  s   @@r+   nllloss2d_no_reduce_testr  L  s~    Aq!$((+11388:;A6"F&#WYg5(q1Nll$ $r-   c            
          t        t        j                  ddd      j                  d      j	                         j                               ddd t        dt         fd      d	d
 dd fddt        j                        S )NrQ   rT   rX   r7   r}   ru   NLLLoss2d_no_reduce_ignore_indexc           	          t        j                  | j                  |       j                         t	        d         t        d               S ry  rz  rc  s    r+   rB   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>c  r}  r-   F::nll_loss(
            i, t.to(i.options()).to(torch::kLong), F::NLLLossFuncOptions().ignore_index(1).reduction(torch::kNone))c                  N    t        j                  dddd      j                         S r  r   rl   r-   r+   rB   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>g  r  r-   r   r   c                 ^    t        d   | j                  |       j                         fi S r  rk  rl  s     r+   rB   z7nllloss2d_no_reduce_ignore_index_test.<locals>.<lambda>i  r  r-   Fr   r  rr  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            
      @    t        t        j                  ddd      j                  d      j	                         j                               t        j                  d      fd t        dt         fd      dd d	d
 fddt        j                        S )NrQ   rT   rX   c                 ,    j                  |       ddS r   r  r  s    r+   rp   z0nllloss2d_no_reduce_weights_test.<locals>.kwargss  r  r-   NLLLoss2d_no_reduce_weightsc                 x    t        j                  | j                  |       j                         fi  |       S rk   r`  rc  s    r+   rB   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>y  r  r-   r  c                  N    t        j                  dddd      j                         S r  r   rl   r-   r+   rB   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>}  r  r-   r   r  c                 j    t        d   | j                  |       j                         fi  |       S r  rk  rl  s     r+   rB   z2nllloss2d_no_reduce_weights_test.<locals>.<lambda>  ,    {+Aqyy|/@/@/BPfQiPr-   Fr   r  r  s   @@@r+    nllloss2d_no_reduce_weights_testr  o  s    Aq!$((+11388:;AZZ]FB .#EG_ 6(qFCQll$ $r-   c            
          t        t        j                  ddddd      j                  d      j	                         j                               ddi t        dt         fd      dd	 d
d fddt        j                        S )NrQ   rT   rX   r"   r}   NLLLossNd_no_reducec                 t    t        j                  | j                  |       j                         d         S r_  r`  rc  s    r+   rB   z*nlllossNd_no_reduce_test.<locals>.<lambda>  rd  r-   re  c                  R    t        j                  dddddd      j                         S r  r   rl   r-   r+   rB   z*nlllossNd_no_reduce_test.<locals>.<lambda>       Aq!Q1599;r-   r   r   c                 ^    t        d   | j                  |       j                         fi S r  rk  rl  s     r+   rB   z*nlllossNd_no_reduce_test.<locals>.<lambda>  r  r-   Fr   r  rr  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            
          t        t        j                  ddddd      j                  d      j	                         j                               ddd t        dt         fd      d	d
 dd fddt        j                        S )NrQ   rT   rX   r7   r}   ru   NLLLossNd_no_reduce_ignore_indexc           	          t        j                  | j                  |       j                         t	        d         t        d               S ry  rz  rc  s    r+   rB   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r}  r-   r  c                  R    t        j                  dddddd      j                         S r  r   rl   r-   r+   rB   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r-   r   r   c                 ^    t        d   | j                  |       j                         fi S r  rk  rl  s     r+   rB   z7nlllossNd_no_reduce_ignore_index_test.<locals>.<lambda>  r  r-   Fr   r  rr  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            
      D    t        t        j                  ddddd      j                  d      j	                         j                               t        j                  d      fd t        dt         fd      dd d	d
 fddt        j                        S )NrQ   rT   rX   c                 ,    j                  |       ddS r   r  r  s    r+   rp   z0nlllossNd_no_reduce_weights_test.<locals>.kwargs  r  r-   NLLLossNd_no_reduce_weightsc                 x    t        j                  | j                  |       j                         fi  |       S rk   r`  rc  s    r+   rB   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r-   r  c                  R    t        j                  dddddd      j                         S r  r   rl   r-   r+   rB   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  r  r-   r   r  c                 j    t        d   | j                  |       j                         fi  |       S r  rk  rl  s     r+   rB   z2nlllossNd_no_reduce_weights_test.<locals>.<lambda>  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                       t        j                  dddt         j                         t        dt	         fd      dd d	 d
 fdddt         j                  	      S )NrQ   rX   r5   r   SmoothL1Loss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   smooth_l1_lossr   r   s    r+   rB   z-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                  0    t        j                  ddd      S r.  r/  rl   r-   r+   rB   z-smoothl1loss_no_reduce_test.<locals>.<lambda>  r0  r-   r   r   c                 D    t        d   | j                  |       d      S NSmoothL1Lossr}   r~   r   r   s     r+   rB   z-smoothl1loss_no_reduce_test.<locals>.<lambda>      ~.q!))A,&Qr-   TFr   r5  r   s   @r+   smoothl1loss_no_reduce_testr    s[    Aq!5<<0A)#IK[-(q1R ll$ $r-   c                       t        j                  dt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )Nrl   r   SmoothL1Loss_no_reduce_scalarc                 R    t        j                  | j                  |       d      S r|   r  r   s    r+   rB   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  r  r-   r  c                  ,    t        j                  d      S r  r/  rl   r-   r+   rB   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  rB  r-   r   r   c                 D    t        d   | j                  |       d      S r  r   r   s     r+   rB   z4smoothl1loss_no_reduce_scalar_test.<locals>.<lambda>  r  r-   TFr   r5  r   s   @r+   "smoothl1loss_no_reduce_scalar_testr    sW    Bell+A0#IK[((q1R ll$ $r-   c                       t        j                  dddt         j                         t        dt	         fd      dd d	 d
 fdddt         j                  	      S )NrQ   rX   r5   r   SmoothL1Loss_betac                 T    t        j                  | j                  |       dd      S )Nr}         ?r"   betar  r   s    r+   rB   z(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                  0    t        j                  ddd      S r.  r/  rl   r-   r+   rB   z(smoothl1loss_beta_test.<locals>.<lambda>  r0  r-   r   r   c                 F    t        d   | j                  |       dd      S )Nr  r}   r  r  r   r   s     r+   rB   z(smoothl1loss_beta_test.<locals>.<lambda>  s    ~.q!))A,&WZ[r-   TFr   r5  r   s   @r+   smoothl1loss_beta_testr    s[    Aq!5<<0A$#SU`-(q1\ ll$ $r-   c                       t        j                  dddt         j                         t        dt	         fd      dd d	 d
 fdddt         j                  	      S )NrQ   rX   r5   r   SmoothL1Loss_zero_betac                 T    t        j                  | j                  |       dd      S )Nr}   r   r  r  r   s    r+   rB   z-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                  0    t        j                  ddd      S r.  r/  rl   r-   r+   rB   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  r0  r-   r   r   c                 F    t        d   | j                  |       dd      S )Nr  r}   r   r  r   r   s     r+   rB   z-smoothl1loss_zero_beta_test.<locals>.<lambda>  s    ~.q!))A,&WXYr-   TFr   r5  r   s   @r+   smoothl1loss_zero_beta_testr    s[    Aq!5<<0A)#QS^-(q1Z ll$ $r-   c                       t        j                  ddd       t        dt         fd      dd d d	 fd
ddt         j                  	      S )NrQ   rX   r5   HuberLoss_deltac                 T    t        j                  | j                  |       dd      S )Nr}   r  r"   delta)r   
huber_lossr   r   s    r+   rB   z&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                  0    t        j                  ddd      S r.  r/  rl   r-   r+   rB   z&huberloss_delta_test.<locals>.<lambda>
  r0  r-   r   r   c                 F    t        d   | j                  |       dd      S )N	HuberLossr}   r  r  r   r   s     r+   rB   z&huberloss_delta_test.<locals>.<lambda>  s    {+Aqyy|vUXYr-   TFr   r   r   s   @r+   huberloss_delta_testr     sU    Aq!A"#PRc-(q1Z ll$ $r-   c                       t        j                  d      j                          t        dt	         fd      dd d d fdd	d
d
	      S )Nrl   !MultiLabelMarginLoss_0d_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r   multilabel_margin_lossr   rb  r   s    r+   rB   z8multilabelmarginloss_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                  ,    t        j                  d      S r  r/  rl   r-   r+   rB   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  rB  r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S NMultiLabelMarginLossr}   r~   r   r  r   rb  r   s     r+   rB   z8multilabelmarginloss_0d_no_reduce_test.<locals>.<lambda>  ,    56q!&&..:K:P:P:R^der-   TF)	r   r   r   r   r   rH   check_sum_reductionr_   r   )r9   zerosrb  r   rx   r   s   @r+   &multilabelmarginloss_0d_no_reduce_testr    sU    BA4#XZt((q1f  r-   c                      t        t        j                  d      j                  d      j	                         j                                t        dt         fd      dd d d fdd	d
d
t        j                  
      S )Nr3   !MultiLabelMarginLoss_1d_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r  r   s    r+   rB   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>)  r  r-   r  c                  ,    t        j                  d      S r   r/  rl   r-   r+   rB   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>,  rB  r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S r
  r  r   s     r+   rB   z8multilabelmarginloss_1d_no_reduce_test.<locals>.<lambda>.  r  r-   TF
r   r   r   r   r   rH   r  r_   r   rK   r  r   s   @r+   &multilabelmarginloss_1d_no_reduce_testr  $  su    B##B'--/4467A4#XZt((q1f ll$ $r-   c                  L    t        t        j                  t        j                  dd      j	                  d      j                  d      j                         j                         d             t        dt         fd      d	d
 d d fddddt        j                  
      S )NrT   r3   g         r8   minMultiLabelMarginLoss_index_negc                 n    t        j                  | j                  |       j                         d      S r|   r  r   s    r+   rB   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>;  r  r-   r  c                  .    t        j                  dd      S NrT   r3   r/  rl   r-   r+   rB   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>>      Q+r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S r
  r  r   s     r+   rB   z5multilabelmarginloss_index_neg_test.<locals>.<lambda>@  r  r-   TFr  )r   r9   clampr   r  r	   rq  rb  r   rx   rc   r   s   @r+   #multilabelmarginloss_index_neg_testr#  6  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                      t        t        j                  dd      j                  d      j	                         j                                t        dt         fd      dd d d fd	d
ddt        j                  
      S )NrT   r3   MultiLabelMarginLoss_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r  r   s    r+   rB   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>M  r  r-   r  c                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>P  r   r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S r
  r  r   s     r+   rB   z5multilabelmarginloss_no_reduce_test.<locals>.<lambda>R  r  r-   TFr  r  r   s   @r+   #multilabelmarginloss_no_reduce_testr)  H  sx    Ar"&&r*002779:A1#XZt+(q1f ll$ $r-   c                  >    t        t        j                  d      j                  d      j	                  t        j
                        j                  d      j                  d             t        dt         fd      dd d	 d
 fdddt        j
                  	      S )Nr3   r   rQ   r7   HingeEmbeddingLoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   hinge_embedding_lossr   r   s    r+   rB   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>_  r   r-   zvF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().reduction(torch::kNone))c                  ,    t        j                  d      S r   r/  rl   r-   r+   rB   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>b  rB  r-   r   r   c                 D    t        d   | j                  |       d      S )NHingeEmbeddingLossr}   r~   r   r   s     r+   rB   z3hingeembeddingloss_no_reduce_test.<locals>.<lambda>d  s    34Q		!PVWr-   TF	r   r   r   r   r   rH   r  r   rK   
r   r9   r   r   r   rc   mul_subr   rx   r   s   @r+   !hingeembeddingloss_no_reduce_testr6  Z  s    R##A&))%,,7<<Q?CCAFGA/#OQa((q1X ll$ $r-   c                  >    t        t        j                  d      j                  d      j	                  t        j
                        j                  d      j                  d             t        dt         fd      dd d	 d
 fdddt        j
                  	      S )Nr3   r   rQ   r7   #HingeEmbeddingLoss_margin_no_reducec                 T    t        j                  | j                  |       dd      S Nr  r}   marginr"   r-  r   s    r+   rB   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>p  s    a,,Q		!STZ[r-   zF::hinge_embedding_loss(
            i, t.to(i.options()), F::HingeEmbeddingLossFuncOptions().margin(0.5).reduction(torch::kNone))c                  ,    t        j                  d      S r   r/  rl   r-   r+   rB   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>s  rB  r-   r   r   c                 F    t        d   | j                  |       dd      S )Nr1  r  r}   r;  r   r   s     r+   rB   z:hingeembeddingloss_margin_no_reduce_test.<locals>.<lambda>u  s     34Q		!S\bcr-   TFr2  r3  r   s   @r+   (hingeembeddingloss_margin_no_reduce_testr?  k  s    R##A&))%,,7<<Q?CCAFGA6#[]m((q1d ll$ $r-   c                       t        j                  ddt         j                         t        dt	         fd      dd d d fd	d
dt         j                  	      S )NrT   r   SoftMarginLoss_no_reducec                 R    t        j                  | j                  |       d      S r|   )r   soft_margin_lossr   r   s    r+   rB   z/softmarginloss_no_reduce_test.<locals>.<lambda>  r   r-   znF::soft_margin_loss(
            i, t.to(i.options()), F::SoftMarginLossFuncOptions().reduction(torch::kNone))c                  .    t        j                  dd      S NrT   r/  rl   r-   r+   rB   z/softmarginloss_no_reduce_test.<locals>.<lambda>  s    Q*r-   r   r   c                 D    t        d   | j                  |       d      S )NSoftMarginLossr}   r~   r   r   s     r+   rB   z/softmarginloss_no_reduce_test.<locals>.<lambda>  s    /0AIIaLFSr-   TFr   r5  r   s   @r+   softmarginloss_no_reduce_testrH  |  sY    Aq-A+#KM]*(q1T ll$ $r-   c                       t        j                  dd      j                  d      j                          t	        dt         fd      dd d d	 fd
ddt         j                  	      S )NrT   r3   rQ   "MultiLabelSoftMarginLoss_no_reducec                 R    t        j                  | j                  |       d      S r|   r   multilabel_soft_margin_lossr   r   s    r+   rB   z9multilabelsoftmarginloss_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                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                     | j                         j                         z  dz
  |  j                         j                         z  z    j                  d      | j                  d      z  S Nr7   dimr   r   sumrd   r   s     r+   rB   z9multilabelsoftmarginloss_no_reduce_test.<locals>.<lambda>  s[    199;??$$A1"1C1C1E'EEFKKPQKRUVU[U[\]U^^r-   Fr   r9   r   r	   rq  r   rx   rc   r   s   @r+   'multilabelsoftmarginloss_no_reduce_testrV    sg    

1ba &&(A5#VXg+(q1_ll$ $r-   c                      t        j                  dd      j                  d      j                          t        j                  d      t	        dt         fd      dd d d	 fd
dddt         j                  
      S )NrT   r3   rQ   *MultiLabelSoftMarginLoss_weights_no_reducec                 r    t        j                  | j                  |       j                  |       d      S r   rL  r   s    r+   rB   zAmultilabelsoftmarginloss_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                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                     | j                         j                         z  dz
  |  j                         j                         z  z    z  j                  d      | j                  d      z  S rP  rS  r   s     r+   rB   zAmultilabelsoftmarginloss_weights_no_reduce_test.<locals>.<lambda>  s`    199;??$$A1"1C1C1E'EEFPUUZ[U\_`_e_efg_hhr-   TFr  rU  r   s   @@r+   /multilabelsoftmarginloss_weights_no_reduce_testr\    s~    

1ba &&(AjjnG=#abq ,(qWEi ll$ $r-   c                       t        j                  d      j                  d      j                         j	                          t        dt         fd      dd d d fd	d
ddt         j                  
      S )NrT   r4   MultiMarginLoss_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r   multi_margin_lossr   rb  r   s    r+   rB   z0multimarginloss_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                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   z0multimarginloss_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S NMultiMarginLossr}   r~   r  r   s     r+   rB   z0multimarginloss_no_reduce_test.<locals>.<lambda>  ,    01!QVV^^A5F5K5K5MY_`r-   TFr  r9   r   r	   rq  rb  r   rx   rc   r   s   @r+   multimarginloss_no_reduce_testrj    sp    

1!""$))+A,#SUo+(q1a ll$ $r-   c                       t        j                  d      j                  d      j                         j	                          t        dt         fd      dd d d fd	d
ddt         j                  
      S )Nr7   r4   MultiMarginLoss_1d_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r`  r   s    r+   rB   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rb  r-   rc  c                  ,    t        j                  d      S r   r/  rl   r-   r+   rB   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rB  r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S rf  r  r   s     r+   rB   z3multimarginloss_1d_no_reduce_test.<locals>.<lambda>  rh  r-   TFr  ri  r   s   @r+   !multimarginloss_1d_no_reduce_testrp    sp    

1!""$))+A/#SUo((q1a ll$ $r-   c                       t        j                  d      j                  d      j                         j	                          t        dt         fd      dd d d fd	d
ddt         j                  
      S )Nrl   r4   ,multimarginloss_1d_input_0d_target_no_reducec                 n    t        j                  | j                  |       j                         d      S r|   r`  r   s    r+   rB   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rb  r-   rc  c                  ,    t        j                  d      S r   r/  rl   r-   r+   rB   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rB  r-   r   r   c                 t    t        d   | j                  j                  |       j                         d      S rf  r  r   s     r+   rB   zCmultimarginloss_1d_input_0d_target_no_reduce_test.<locals>.<lambda>  rh  r-   TFr  ri  r   s   @r+   1multimarginloss_1d_input_0d_target_no_reduce_testrv    sp    

21##%**,A?#SUo((q1a ll$ $r-   c                       t        j                  d      j                  d      j                         j	                          t        dt         fd      dd d d fd	d
ddt         j                  
      S )NrT   r4   MultiMarginLoss_p_no_reducec                 p    t        j                  | j                  |       j                         dd      S )NrQ   r}   r@   r"   r`  r   s    r+   rB   z2multimarginloss_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                  N    t        j                  dd      j                  dd      S NrT   r3   r  Gz?)r9   r   r   rl   r-   r+   rB   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s    Q+224Br-   r   r   c                 v    t        d   | j                  j                  |       j                         dd      S )Nrg  rQ   r}   rz  r  r   s     r+   rB   z2multimarginloss_p_no_reduce_test.<locals>.<lambda>  s/    01!QVV^^A5F5K5K5MQR^der-   TFr  ri  r   s   @r+    multimarginloss_p_no_reduce_testr    sp    

1!""$))+A.#XZtB(q1f ll$ $r-   c                       t        j                  d      j                  d      j                         j	                          t        dt         fd      dd d d fd	d
ddt         j                  
      S )NrT   r4    MultiMarginLoss_margin_no_reducec                 p    t        j                  | j                  |       j                         dd      S r:  r`  r   s    r+   rB   z7multimarginloss_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                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                 v    t        d   | j                  j                  |       j                         dd      S )Nrg  r  r}   r;  r  r   s     r+   rB   z7multimarginloss_margin_no_reduce_test.<locals>.<lambda>  s1    01!QVV^^A5F5K5K5M9<Pr-   TFr  ri  r   s   @r+   %multimarginloss_margin_no_reduce_testr    st    

1!""$))+A3#_aT ,(q1P !ll$ $r-   c                  B    t        j                  d      j                  d      j                         j	                          t        j                  dt         j
                        t        dt         fd      dd d	 d
 fddddt         j
                  
      S )NrT   r4   r3   r   !MultiMarginLoss_weights_no_reducec                     t        j                  | j                  |       j                         j                  |       d      S r   r`  r   s    r+   rB   z8multimarginloss_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                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  r   r-   r   r   c                 v    t        d   | j                  j                  |       j                         d      S )Nrg  r}   r   r  r   s     r+   rB   z8multimarginloss_weights_no_reduce_test.<locals>.<lambda>  s1    01!QVV^^A5F5K5K5M9@FTr-   TFr  )r9   r   r	   rq  rb  rc   r   rx   r   s   @@r+   &multimarginloss_weights_no_reduce_testr    s    

1!""$))+Ajj5<<0G4#<=h ,(qWET !ll!$ $r-   c                     d } ||       }t        |t        j                        r|gn|}t               5   || j	                  d      cddd       S # 1 sw Y   yxY w)zReference function for modules supporting no batch dimensions.

    The module is passed the input and target in batched form with a single item.
    The output is squeezed to compare with the no-batch input.
    c                     t        | t        t        f      r| D cg c]  }|j                  d       c}S | j                  d      S c c}w rN   
isinstancelisttuple	unsqueezeinpr;   s     r+   unsqueeze_inpz0single_batch_reference_fn.<locals>.unsqueeze_inp+  A    cD%=),/0CqAKKNC00}}Q 1   Ar   N)r  r9   Tensorr   squeeze)r  
parametersmoduler  single_batch_inputs        r+   single_batch_reference_fnr  %  sX     
 'u-1;<NPUP\P\1],-cu		)*2215 
		s   AAConv1d)r5   rT   rX   z!torch::nn::Conv1dOptions(4, 5, 3))rQ   r5   r3   )rD   rE   rF   rG   cudnnrI   rJ   rK   )r5   rT   rX   rQ   z+torch::nn::Conv1dOptions(4, 5, 3).stride(2)stride)	rD   rE   rF   rG   r  rO   rI   rJ   rK   )r5   rT   rX   r7   r7   z6torch::nn::Conv1dOptions(4, 5, 3).stride(1).padding(1)pad1r  )r5   rT   rT   r7   rQ   z6torch::nn::Conv1dOptions(4, 5, 5).stride(1).padding(2)pad2)r5   r5   rX   r7   r7   z6torch::nn::Conv1dOptions(4, 4, 3).stride(1).padding(1))r7   r5   r7   	pad1size1)r5   r5   rT   r7   rQ   z6torch::nn::Conv1dOptions(4, 4, 5).stride(1).padding(2)	pad2size1)r   r5   r3   
zero_batch)rD   rE   rF   rG   r  rO   rI   rJ   Conv1d_dilatedc                  4    t        j                  dddd      S )Nr5   rT   rX   rQ   kernel_sizedilationrv   r  rl   r-   r+   rB   rB         BIIaAFr-   z-torch::nn::Conv1dOptions(4, 5, 3).dilation(2))r   r   rF   rG   rI   rJ   rK   Conv1d_groupsc                  4    t        j                  dddd      S )Nr5   r^   rX   rQ   r  groupsr  rl   r-   r+   rB   rB         BIIa!Dr-   z+torch::nn::Conv1dOptions(4, 6, 3).groups(2))rQ   r5   r^   )r   r   rF   rG   r  rI   rJ   rK   Conv1d_pad_validc                  4    t        j                  dddd      S )Nr5   rT   rX   validpaddingr  rl   r-   r+   rB   rB     s    BIIaAw?r-   z8torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kValid)Conv1d_pad_samec                  4    t        j                  dddd      S )Nr5   rT   rX   samer  r  rl   r-   r+   rB   rB         BIIaAv>r-   z7torch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame)Conv1d_pad_same2c                  4    t        j                  dddd      S )Nr5   rT   r  r  r  rl   r-   r+   rB   rB     r  r-   z7torch::nn::Conv1dOptions(4, 5, 4).padding(torch::kSame)Conv1d_pad_same_dilatedc                  6    t        j                  ddddd      S )Nr5   rT   r  rQ   r  r  r  rl   r-   r+   rB   rB     s    BIIaAvJr-   zCtorch::nn::Conv1dOptions(4, 5, 3).padding(torch::kSame).dilation(2)ConvTranspose1dc                  8    t        j                  dddddd      S )NrX   r5   rX   r7   r7   )r  r  r  output_paddingrv   r  rl   r-   r+   rB   rB     s    B..q!4YZkopr-   zQtorch::nn::ConvTranspose1dOptions(3, 4, 3).stride(3).padding(1).output_padding(1))r7   rX      )r   r   rF   r  rG   rI   rJ   rK   )rX   r5   rX   rQ   r7   r7   r7   Fztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                .stride(2).padding(1).output_padding(1).groups(1).bias(false))r7   rX   r^   )	rX   r5   rX   rQ   r7   r7   r7   TrQ   ztorch::nn::ConvTranspose1dOptions(3, 4, 3)
                                .stride(2).padding(1).output_padding(1).groups(1).bias(true).dilation(2)dilatedConvTranspose1d_groupsc            	      :    t        j                  ddddddd      S )	Nr5   r^   rX   r  r7   r  rQ   )r  r  r  r  r  rl   r-   r+   rB   rB     s    B..q!QtQ_clmnr-   z|torch::nn::ConvTranspose1dOptions(4, 6, 3)
                                .stride(3).padding(1).output_padding(1).groups(2))rQ   r5   r  Conv2d)rX   r5   rX   rQ   z&torch::nn::Conv2dOptions(3, 4, {3, 2}))rQ   rX   r  rT   )	rD   rE   rF   rG   r  check_with_long_tensorrI   rJ   rK   )rX   r5   rX   rX   rQ   rQ   z5torch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2})strided)
rD   rE   rF   rG   r  rO   r  rI   rJ   rK   )rX   r5   r  r  r7   r7   zEtorch::nn::Conv2dOptions(3, 4, {3, 3}).stride({2, 2}).padding({1, 1})r  )rX   rQ   r  r  r  r  zVtorch::nn::Conv2dOptions(3, 2, {3, 3}).stride({2, 2}).padding({1, 1}).dilation({2, 2}))rQ   rX   r4   r4   )rX   r5   r  r7   r   r7   r7   Fz~torch::nn::Conv2dOptions(3, 4, {3, 2})
                                .stride(1).padding(0).dilation(1).groups(1).bias(false))rQ   rX   r^   rT   gQ?)r   rX   r  rT   )rD   rE   rF   rG   r  rO   r  rI   Conv2d_groupsc                  4    t        j                  dddd      S Nr5   r^   r  rQ   r  rv   r  rl   r-   r+   rB   rB   d      BIIaF1=r-   z0torch::nn::Conv2dOptions(4, 6, {3, 2}).groups(2))rQ   r5   r^   rT   )	r   r   rF   rG   r  r  rI   rJ   rK   Conv2d_groups_thnnc                  4    t        j                  dddd      S r  r  rl   r-   r+   rB   rB   o  r  r-   )r   r   rF   rG   r  rI   rJ   rK   Conv2d_pad_validc                  4    t        j                  dddd      S )NrQ   r5   rX   r5   r  r  r  rl   r-   r+   rB   rB   y  s    BIIaFGDr-   z=torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kValid))rQ   rQ   r^   rT   Conv2d_pad_samec                  4    t        j                  dddd      S )NrQ   r5   r  r  r  r  rl   r-   r+   rB   rB     s    BIIaFFCr-   z<torch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame)Conv2d_pad_same_dilatedc                  6    t        j                  ddddd      S )NrQ   r5   r  r  r  r  rl   r-   r+   rB   rB     s    BIIaFFQOr-   zHtorch::nn::Conv2dOptions(2, 4, {3, 4}).padding(torch::kSame).dilation(2)ConvTranspose2d)rX   r5   rX   r  r7   r  z|torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                .stride({3, 2}).padding(1).output_padding({1, 1}))r7   rX   r  r^   )	rD   rE   rF   r  rG   r  rI   rJ   rK   )	rX   r5   rX   rQ   rX   r7   r  r7   Fr  aH  torch::nn::ConvTranspose2dOptions(3, 4, 3)
                                .stride({2, 3})
                                .padding(1)
                                .output_padding({1, 1})
                                .groups(1)
                                .bias(false)
                                .dilation({2, 2}))r7   rX   r^   r  )rX   r5   rX   r  r7   r  r7   Fztorch::nn::ConvTranspose2dOptions(3, 4, 3)
                                .stride({2, 3}).padding(1).output_padding({1, 1}).groups(1).bias(false)ConvTranspose2d_groupsc                  4    t        j                  dddd      S )NrQ   r5   r  r  )rv   r  rl   r-   r+   rB   rB     s    B..q!VAFr-   z9torch::nn::ConvTranspose2dOptions(2, 4, {2, 3}).groups(2))r7   rQ   r5   rT   Conv2d_depthwisec                  4    t        j                  dddd      S )Nr5   r  r  r  rl   r-   r+   rB   rB     r  r-   z0torch::nn::Conv2dOptions(4, 4, {3, 3}).groups(4))rQ   r5   r^   r^    Conv2d_depthwise_with_multiplierc                  4    t        j                  dddd      S )Nr5   r4   r  r  r  rl   r-   r+   rB   rB     r  r-   z0torch::nn::Conv2dOptions(4, 8, {3, 3}).groups(4)Conv2d_depthwise_stridedc                  6    t        j                  ddddd      S )Nr5   r  r  )r  r  r  rl   r-   r+   rB   rB     s    BIIaF6!Lr-   z?torch::nn::Conv2dOptions(4, 4, {3, 3}).stride({2, 2}).groups(4)Conv2d_depthwise_paddedc                  6    t        j                  ddddd      S )Nr5   r  r  )r  r  r  rl   r-   r+   rB   rB     s    BIIaFF1Mr-   z@torch::nn::Conv2dOptions(4, 4, {3, 3}).padding({1, 1}).groups(4)Conv2d_depthwise_dilatedc                  6    t        j                  ddddd      S )Nr5   r  )r  r  r  rl   r-   r+   rB   rB     s    BIIaFVANr-   zAtorch::nn::Conv2dOptions(4, 4, {2, 2}).dilation({2, 2}).groups(4))rQ   r5   rT   rT   Conv3d)rQ   rX   rQ   rX   rQ   z)torch::nn::Conv3dOptions(2, 3, {2, 3, 2}))r7   rQ   r5   rT   r5   g?)rQ   rX   rQ   rX   r5   r7   r   r7   r7   Fztorch::nn::Conv3dOptions(2, 3, {2, 3, 4})
                                .stride(1).padding(0).dilation(1).groups(1).bias(false))r7   rQ   rX   r5   rT   )rQ   rX   )r7   r7   r7   r7   r   r7   r7   F1x1x1_no_bias)rX   r5   rQ   rQ   z+torch::nn::Conv3dOptions(3, 4, 2).stride(2))rQ   rX   rT   rT   rT   )rX   r5   rQ   rQ   r7   z6torch::nn::Conv3dOptions(3, 4, 2).stride(2).padding(1)stride_padding)rX   r5   r  z)torch::nn::Conv3dOptions(3, 4, {2, 3, 4}))r   rX   rX   r5   rT   )rD   rE   rF   rG   r  r  rO   rI   Conv3d_groupsc                  4    t        j                  dddd      S )NrQ   r5   rX   r  rv   r  rl   r-   r+   rB   rB   A  r  r-   z+torch::nn::Conv3dOptions(2, 4, 3).groups(2)Conv3d_dilatedc                  4    t        j                  dddd      S )NrX   r5   rQ   r  r  rl   r-   r+   rB   rB   L  r  r-   z-torch::nn::Conv3dOptions(3, 4, 2).dilation(2)Conv3d_dilated_stridedc                  6    t        j                  ddddd      S )NrX   r5   rQ   )r  r  r  r  rl   r-   r+   rB   rB   U  s    BIIaAaPr-   z7torch::nn::Conv3dOptions(3, 4, 2).dilation(2).stride(2)Conv3d_pad_validc                  4    t        j                  dddd      S )NrX   r5   r  r  r  r  rl   r-   r+   rB   rB   ^  s    BIIaIwGr-   z@torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kValid))rQ   rX   r^   rT   r5   Conv3d_pad_samec                  4    t        j                  dddd      S )NrX   r5   r  r  r  r  rl   r-   r+   rB   rB   h  s    BIIaIvFr-   z?torch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame)Conv3d_pad_same_dilatedc                  6    t        j                  ddddd      S )NrX   r5   r  r  rQ   r  r  rl   r-   r+   rB   rB   r  s    BIIaIvPQRr-   zKtorch::nn::Conv3dOptions(3, 4, {2, 3, 4}).padding(torch::kSame).dilation(2)ConvTranspose3dz2torch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2}))rD   rE   rF   r  rG   rI   rJ   rK   )	rQ   rX   r  r7   r   r   r7   T)rQ   rQ   rQ   ztorch::nn::ConvTranspose3dOptions(2, 3, {2, 3, 2})
                                .stride(1).padding(0).output_padding(0).groups(1).bias(true).dilation({2, 2, 2}))	rD   rE   rF   r  rG   rO   rI   rJ   rK   ReplicationPad3d))r7   rQ   rX   rX   rQ   r7   z6torch::nn::ReplicationPad3dOptions({1, 2, 3, 3, 2, 1}))rQ   rX   rQ   rQ   rQ   )rD   rE   rF   rG   rK   )rX   rQ   rQ   rQ   no_batch_dim)rD   rE   rF   rG   rH   rO   rK   c            	      V    t        j                  dddddt         j                  d      S )NrQ   rX   Tr   requires_grad)r9   r   
complex128rl   r-   r+   rB   rB     s     Aq!Q9I9IY]^r-   complex)rD   rE   rF   r   	skip_halfrO   	Embedding)r5   rX   z!torch::nn::EmbeddingOptions(4, 3)c                  l    t        j                  ddt         j                        j                  d      S NrQ   rX   r   r5   r9   ro  rb  random_rl   r-   r+   rB   rB          Q<DDQGr-   )rD   rE   rF   r   r_   rK   c                      t        j                  ddt         j                        j                  d      j	                  dd      S Nr7   i   r   r5   r  r9   ro  rb  r  r=   rl   r-   r+   rB   rB     /    Q5::>FFqIPPQRTWXr-   discontiguous)rD   rE   rF   r   r_   rO   rK   EmbeddingBagz$torch::nn::EmbeddingBagOptions(4, 3)c                  l    t        j                  ddt         j                        j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   meanc                      t        j                  ddt         j                        j                  d      j	                  dd      S r  r  rl   r-   r+   rB   rB     r  r-   )r5   rX   N       @FrT  ztorch::nn::EmbeddingBagOptions(4, 3)
                                .max_norm(c10::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum)c                  l    t        j                  ddt         j                        j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   rT  )r5   rX   Nr  Fmaxztorch::nn::EmbeddingBagOptions(4, 3)
                                .max_norm(c10::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax)c                  l    t        j                  ddt         j                        j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   r  EmbeddingBag_mean_padding_idxc                  2    t        j                  ddd      S )Nr5   rX   r7   padding_idxrv   r  rl   r-   r+   rB   rB     s    BOOAqa@r-   z3torch::nn::EmbeddingBagOptions(4, 3).padding_idx(1)c                  |    t        j                  t        j                  d      t        j                  d      g      S NrX   r9   stackrb   rl   r-   r+   rB   rB     $    ennQ&79J%KLr-   )r   r   rF   r   r_   rK   EmbeddingBag_sum_padding_idxc            	      :    t        j                  ddd dddd      S )Nr5   rX   r  FrT  r7   r  r   rl   r-   r+   rB   rB         BOOAq$E5VWXr-   ztorch::nn::EmbeddingBagOptions(4, 3)
                                .max_norm(c10::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kSum).padding_idx(1)c                  |    t        j                  t        j                  d      t        j                  d      g      S r"  r#  rl   r-   r+   rB   rB     r%  r-   EmbeddingBag_max_padding_idxc            	      :    t        j                  ddd dddd      S )Nr5   rX   r  Fr  r7   r  r   rl   r-   r+   rB   rB     r(  r-   ztorch::nn::EmbeddingBagOptions(4, 3)
                                .max_norm(c10::nullopt).norm_type(2.).scale_grad_by_freq(false).mode(torch::kMax).padding_idx(1)c                  |    t        j                  t        j                  d      t        j                  d      g      S r"  r#  rl   r-   r+   rB   rB     r%  r-   EmbeddingBag_sparsec                  P    t        j                  dddt        j                        S )Nr5   rX   T)sparser   )rv   r  r9   rc   rl   r-   r+   rB   rB     s    BOOAqU\\Rr-   zbtorch::nn::EmbeddingBagOptions(4, 3).sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  L    t        j                  d      j                  dd      S NrQ   r7   r9   rb   repeatrl   r-   r+   rB   rB         *11!Q7r-   )r   r   rF   r   r_   has_sparse_gradientsc                  P    t        j                  ddt        j                  d      S )Nr5   rX   T)r   r/  )rv   r	  r9   rc   rl   r-   r+   rB   rB     s    BLLAU\\$Or-   z_torch::nn::EmbeddingOptions(4, 3).sparse(true)._weight(torch::rand({4, 3}).to(torch::kFloat64))c                  L    t        j                  d      j                  dd      S r1  r2  rl   r-   r+   rB   rB     r4  r-   Embedding_sparse)r   rF   r   r   r_   r5  PixelShuffler  z!torch::nn::PixelShuffleOptions(3))r7   	   r5   r5   PixelUnshufflez#torch::nn::PixelUnshuffleOptions(3))r7   r7      r<  r<  nearest)rd   scale_factormodezF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12})).scale_factor(c10::nullopt).mode(torch::kNearest))r7   rQ   r5   interpolate_nearest_1d)r   cpp_options_argsrG   r   r   rK   )r   rQ   r5   interpolate_nearest_1d_zero_dim)r   rA  rG   r   r   )r<  )r7   rQ   rX   interpolate_nearest_tuple_1dg      @zF::InterpolateFuncOptions()
                            .size(c10::nullopt).scale_factor(std::vector<double>({4.})).mode(torch::kNearest)interpolate_nearest_scale_1dlinear)rd   r>  r?  align_cornerszF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kLinear)
                            .align_corners(false)interpolate_linear_1d)r5   zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kLinear)
                            .align_corners(false)interpolate_linear_tuple_1dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({4.}))
                            .mode(torch::kLinear)
                            .align_corners(false)interpolate_linear_scale_1dinterpolate_linear_1d_zero_dimzF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kLinear)
                            .align_corners(true)#interpolate_linear_1d_align_cornerszF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({4.}))
                            .mode(torch::kLinear)
                            .align_corners(true))interpolate_linear_scale_1d_align_cornersrQ   zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({2, 2}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kNearest))r7      r7   r7   %interpolate_nearest_2d_launch_configszF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12, 12}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kNearest))r7   rQ   r5   r5   interpolate_nearest_2d)r<     zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12, 16}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kNearest))r7   rQ   rX   r5   interpolate_nearest_tuple_2dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({4., 4.}))
                            .mode(torch::kNearest)interpolate_nearest_scale_2d)r   rQ   r5   r5   interpolate_nearest_2d_zero_dimbilinearzF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12, 12}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBilinear)
                            .align_corners(false)interpolate_bilinear_2d interpolate_bilinear_2d_zero_dim)r5   r^   zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBilinear)
                            .align_corners(false))r7   rQ   rQ   rX   interpolate_bilinear_tuple_2dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({4., 4.}))
                            .mode(torch::kBilinear)
                            .align_corners(false)interpolate_bilinear_scale_2d)r  r  zF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({2., 2.}))
                            .mode(torch::kBilinear)
                            .align_corners(false)*interpolate_bilinear_scale_tuple_shared_2d)r        ?zF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({2., 1.}))
                            .mode(torch::kBilinear)
                            .align_corners(false)*interpolate_bilinear_scale_tuple_skewed_2dzF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBilinear)
                            .align_corners(true)+interpolate_bilinear_tuple_2d_align_cornerszF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({2., 1.}))
                            .mode(torch::kBilinear)
                            .align_corners(true)8interpolate_bilinear_scale_tuple_skewed_2d_align_cornersbicubiczF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12, 12}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBicubic)
                            .align_corners(false)interpolate_bicubic_2dinterpolate_bicubic_2d_zero_dimzF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBicubic)
                            .align_corners(false)interpolate_bicubic_tuple_2dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({4., 4.}))
                            .mode(torch::kBicubic)
                            .align_corners(false)interpolate_bicubic_scale_2dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({2., 2.}))
                            .mode(torch::kBicubic)
                            .align_corners(false))interpolate_bicubic_scale_tuple_shared_2dzF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({2., 1.}))
                            .mode(torch::kBicubic)
                            .align_corners(false))interpolate_bicubic_scale_tuple_skewed_2dzF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kBicubic)
                            .align_corners(true)*interpolate_bicubic_tuple_2d_align_cornerszF::InterpolateFuncOptions()
                            .size(c10::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(c10::nullopt)
                            .mode(torch::kNearest))r7   rQ   r5   r5   r5   interpolate_nearest_3d)r   rQ   r5   r5   r5   interpolate_nearest_3d_zero_dim)r<  rP  rP  zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({12, 16, 16}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kNearest))r7   rQ   rX   r5   r5   interpolate_nearest_tuple_3dzF::InterpolateFuncOptions()
                            .size(c10::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(c10::nullopt)
                            .mode(torch::kTrilinear)
                            .align_corners(false)interpolate_trilinear_3d!interpolate_trilinear_3d_zero_dim)r5   r^   r^   zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kTrilinear)
                            .align_corners(false))r7   rQ   rQ   rX   rX   interpolate_trilinear_tuple_3dg      @zF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({3., 3., 3.}))
                            .mode(torch::kTrilinear)
                            .align_corners(false)interpolate_trilinear_scale_3dr   )r   rA  rG   r   r   r   rK   zF::InterpolateFuncOptions()
                            .size(std::vector<int64_t>({4, 6, 6}))
                            .scale_factor(c10::nullopt)
                            .mode(torch::kTrilinear)
                            .align_corners(true),interpolate_trilinear_tuple_3d_align_cornerszF::InterpolateFuncOptions()
                            .size(c10::nullopt)
                            .scale_factor(std::vector<double>({3., 3., 3.}))
                            .mode(torch::kTrilinear)
                            .align_corners(true),interpolate_trilinear_scale_3d_align_cornersr8   rQ  zF::SoftmaxFuncOptions(-1))rQ   rM  softmax_lastdimr7   )rR  r   z/F::SoftmaxFuncOptions(1).dtype(torch::kFloat64)softmax_lastdim_dtype)r   rA  rG   r   r   rR   rK   zF::SoftmaxFuncOptions(1))rQ   rM  rQ   rQ   softmax_spatial_special)rQ   rQ   r5   r5   softmax_spatialsoftmax_spatial_dtypezF::SoftmaxFuncOptions(0)softmax_functional_dim0)r   rA  rG   r   rR   r   rK   rX   zF::SoftmaxFuncOptions(3)softmax_functional_dim3rl   softmax_functional_scalar)r   rA  rG   r   rR   r   zF::LogSoftmaxFuncOptions(-1)log_softmax_lastdimzF::LogSoftmaxFuncOptions(1)log_softmax_spatial_speciallog_softmax_spatialzF::LogSoftmaxFuncOptions(0)log_softmax_dim0zF::LogSoftmaxFuncOptions(3)log_softmax_dim3log_softmax_scalarUnfoldc                  2    t        j                  dddd      S )Nr  r  r   r   rv   r  rl   r-   r+   rB   rB   k	  s    BIIffffEr-   zPtorch::nn::UnfoldOptions({2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rQ   r5   rX   rX   )r   r   rF   rG   r_   rR   rK   Foldc                  4    t        j                  ddddd      S Nr  r  r  r  rv   r  rl   r-   r+   rB   rB   t	      BGGFFFFFKr-   zVtorch::nn::FoldOptions({3, 3}, {2, 2}).dilation({1, 1}).padding({0, 0}).stride({1, 1}))rQ   rP  r5   Fold_no_batch_dim_inputc                  4    t        j                  ddddd      S r  r  rl   r-   r+   rB   rB   }	  r  r-   )rP  r5   )r   r   rF   rG   r_   refrR   rK   Unfold_int_inputc                  2    t        j                  dddd      S )NrQ   r7   r   r  rl   r-   r+   rB   rB   	  s    BIIaAq1r-   z<torch::nn::UnfoldOptions(2).dilation(1).padding(0).stride(1)Fold_int_inputc                  4    t        j                  ddddd      S NrX   rQ   r7   r   r  rl   r-   r+   rB   rB   	      BGGAq!Q2r-   z=torch::nn::FoldOptions(3, 2).dilation(1).padding(0).stride(1)Fold_no_batch_dim_int_inputc                  4    t        j                  ddddd      S r  r  rl   r-   r+   rB   rB   	  r  r-   )r   r   rF   rG   r  r_   rR   rK   with_up_down_scalarPairwiseDistancec                  Z    t        j                  dd      t        j                  dd      fS Nr3   r4   r/  rl   r-   r+   rB   rB   	      %++b!,ekk"a.@Ar-   )rD   r   rK   c                  Z    t        j                  dd      t        j                  dd      fS )Nr3   r7   r4   r/  rl   r-   r+   rB   rB   	  r  r-   broadcast_lhs)rD   r   rO   rK   c                  Z    t        j                  dd      t        j                  dd      fS )Nr3   r4   r7   r/  rl   r-   r+   rB   rB   	  s    %++b!,ekk!Q.?@r-   broadcast_rhs)g      ?r    TzDtorch::nn::PairwiseDistanceOptions().p(1.5).eps(1e-05).keepdim(true)c                  Z    t        j                  dd      t        j                  dd      fS r  r/  rl   r-   r+   rB   rB   	  r  r-   with_non_default_args)rD   rE   rF   r   rO   rK   c                  V    t        j                  d      t        j                  d      fS )Nr4   r/  rl   r-   r+   rB   rB   	  s    %++a.%++a.9r-   )rD   r   rH   rO   rK   TransformerEncoderLayer)r5   rQ   rP          ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                .dim_feedforward(16)
                                .dropout(0.0)r  relu_activationrS   )
rD   rE   rF   rG   rO   rI   rJ   r`   r_   rK   r5   r4   r  ztorch::nn::TransformerEncoderLayerOptions(4, 2)
                                .dim_feedforward(8)
                                .dropout(0.0)
                                .activation(torch::kGELU)gelu_activationg{Gz?)	rD   rE   rF   rG   r_   rO   rI   rJ   rK   TransformerDecoderLayer)r5   rQ   r4   r  ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                .dim_feedforward(8)
                                .dropout(0.0)c                  ^    t        j                  ddd      t        j                  ddd      fS NrX   r5   rQ   r   rl   r-   r+   rB   rB   	  #    %**Q1-uzz!Q/BCr-   )	rD   rE   rF   r   r_   rO   rI   rJ   rK   ztorch::nn::TransformerDecoderLayerOptions(4, 2)
                                .dim_feedforward(8)
                                .dropout(0.0)
                                .activation(torch::kGELU)c                  ^    t        j                  ddd      t        j                  ddd      fS r  r   rl   r-   r+   rB   rB   	  r  r-   Transformera  torch::nn::TransformerOptions()
                                .d_model(4)
                                .nhead(2)
                                .num_encoder_layers(2)
                                .num_decoder_layers(2)
                                .dim_feedforward(8)
                                .dropout(0.0)
                                .activation(torch::kReLU)c                      t        j                  ddd      t        j                  ddd      t        j                  dd      fS r  r   rl   r-   r+   rB   rB   
  s1    Aq!,ejjAq.A5::aQRCSTr-   multilayer_codergQ?)rX   rT   ztorch::nn::LinearOptions(3, 5)c                  ,    t        j                  d      S r"  r   rl   r-   r+   rB   rB   
  s    Ar-   c                     t        j                  | j                  dd      |d   j                               j                  d      |d   z   S )Nr7   r8   r   )r9   r:   r<   r;   r>   s      r+   rB   rB   
  s:    UXXaffQmQqTVVX%F%K%KB%ORSTURV%Vr-   )	rD   rE   rF   r   rH   rO   rI   rJ   rK   z5torch::nn::FlattenOptions().start_dim(-3).end_dim(-1))r8   )rX   r5   rT   )rD   rF   rE   rG   rH   rO   rK   	Unflattenz'torch::nn::UnflattenOptions(-2, {2, 2})	LayerNorm)8   r  r  zMtorch::nn::LayerNormOptions({56, 56, 56}).eps(1e-5).elementwise_affine(false))r5   r  r  r  3d_no_affine_large_feature)	rD   rE   rF   rG   r  
check_evalgradcheck_fast_mode
check_halfrO   )reflectcircular	replicater  )ztorch::kReflectztorch::kCircularztorch::kReplicateztorch::kZerosr  {z, }r  r  c              #   &   K   | ]	  }|d z     ywr7   Nrl   .0r@   s     r+   	<genexpr>r  P
  s     $<GqQUGs   Convdztorch::nn::ConvzvdOptions(2, 3, 3)
                                        .stride(2)
                                        .padding(z)
                                        .dilation(1)
                                        .groups(1)
                                        .bias(true)
                                        .padding_mode()_stride2_pad2)
rD   rE   rF   rG   output_sizer  rO   rI   rJ   rK   )ELU
HardshrinkHardsigmoidHardtanh	Hardswish	LeakyReLU
LogSigmoidPReLUReLUReLU6rP   SELUCELUGELUGLUr   SiLUMishSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	Thresholdr  )r  )rE   rK   r  rE   r  )r_   	check_jitrK   r  )rR   rK   r  rK   r  r  r  r  r  r  r  r  r  r  r  )r  r   r  r  r  r  r  !non_linear_activations_extra_info)rD   rG   rH   rO   test_cpp_api_parityc                     ||j                         | z
  z  }|dk(  r|j                         S |dk(  r|j                         S |dk(  r5|j                         dk7  r"|j                         |j	                  d      z  S |S Nr  rT  	batchmeanr   )r   r  rT  rR  rd   r  rK  r"   r*   s       r+   kldivloss_referencer  
  sr    vzz|e+,FF{{}	e	zz|	k	!fjjla&7zz|fkk!n,,Mr-   c                    t        j                  |      || z
  z  }|dk(  r|j                         S |dk(  r|j                         S |dk(  r5|j	                         dk7  r"|j                         |j                  d      z  S |S r  )r9   r   r  rT  rR  rd   r  s       r+   kldivloss_log_target_referencer  
  st    YYv&5.1FF{{}	e	zz|	k	!fjjla&7zz|fkk!n,,Mr-   c                    | j                         dk\  sJ | j                  d      }| j                  d      }|f| j                         dd  z   }t        j                  |      j	                  |       }|$t        j
                  |      j	                  |       }d}	t        |D 
cg c]  }
t        |
       c}
 D ]X  }||   }||k(  rdn||   j                         }t        |      }|j                  d|       | t        |          |z  ||<   |	|z  }	Z |dk(  r|j                         |	z  S |dk(  r|j                         S |S c c}
w )NrX   r   r7   rQ   r  r  rT  )rR  rd   r9   r  r   onesr   rangeitemr  insertr  rT  )r  rK  r/   rv  r"   NCout_sizeoutputtotal_weightrd   tupt_nxnorminput_indexs                  r+   nlllossNd_referencer  
  sA   99;!

1A

1Atejjl12&&H[["**51F~A&&u-L:t:;c{!T)rvd|/@/@/B3i1d#U;/0047s < Fzz|l**	e	zz|M ;s   $Ec                    | j                         dk\  sJ t        j                  | d      } | j                  d      }|$t        j                  |      j                  |       } |j                  d|gd | j                  dd  D         }|dkD  r|dk  sJ |d|z
  z  ||z  z   }| |z  |z  j                  d       }|dk(  r|j                         S |dk(  r|j                         S |S )	NrQ   r7   c              3       K   | ]  }d   ywr  rl   r  rA   s     r+   r  z;cross_entropy_loss_prob_target_reference.<locals>.<genexpr>
  s      <OqO   r  rZ  rQ  r  rT  )
rR  r9   log_softmaxrd   r  r   r<   shaperT  r  )r  rK  r/   r"   label_smoothingr  r  s          r+   (cross_entropy_loss_prob_target_referencer  
  s    99;!eQ'E

1A~A&&u-V[[A= <EKKO <=F#%%%A/0?Q3FFv~&+++22FF{{}	e	zz|Mr-   c                 (   t        j                  | d      }t        j                  |||||      }|dk(  r|S d|cxk  rdk  sJ  J t        j                  | d      } | j	                  d      }|+|  |j
                  d|gd | j                  dd  D         z  } t        j                  | d       }	||k(  }
|	j                  |
d       |dk(  r|bt        j                  |	      |j                  d|j                  |
j                               j                               j                         z  }nPt        j                  |	j                  |
j                                     }n|d	k(  rt        j                  |	      }n|	}d|z
  |z  |||z  z  z   S )
Nr7   ru  r  rZ  c              3       K   | ]  }d   ywr  rl   r  s     r+   r  z>cross_entropy_loss_indices_target_reference.<locals>.<genexpr>
  s     +G!Ar  rQ   r  r   rT  )r9   r  r   ra  rd   r<   r  rT  masked_fill_gathermasked_selectlogical_notr[   r  )r  rK  r/   rv  r"   r  log_softmax_inputnlllossr  smooth_lossignore_maskrets               r+   +cross_entropy_loss_indices_target_referencer  
  s   ))%3jj!G #'C'''''eQ'E

1AAqH+Gu{{12+GHH99UA&&KL(K[#.F ))K(6==F<P<PQ\QhQhQj<k<s<s<u+v+z+z+||C**[66{7N7N7PQRC	e	ii$7*SOa4G-HHHr-   c                 v    | j                   |j                   k(  rt        | ||||      S t        | |||||      S )N)r/   r"   r  )r/   r"   rv  r  )r  r  r  )r  rK  r/   rv  r"   r  s         r+   cross_entropy_loss_referencer
    sK    {{fll"7+- 	- ;6&I%
 	
r-   c           
          d }t        | |      D cg c]  \  }} |||||       }}}t        | \  }	}
| j                  |	      }|dk(  rt        |      t        |
      z  S |dk(  rt        |      S |S c c}}w )Nc                 :    ||k(  ry|dn||   }| |    |z  }||fS )Nr  r7   rl   )r  rK  r/   rv  r  r*   s         r+   nll_loss_helperz*nllloss_reference.<locals>.nll_loss_helper  s6    \!Nqv-$&~r-   r  rT  )zip
new_tensorrT  )r  rK  r/   rv  r"   r  r?   r;   losses_and_weightslossesr0   losses_tensors               r+   nllloss_referencer    s     '*%&8:&8da *!QE&8  :-.OFG$$V,MF=!CL00	e	=!!:s   A5rZ  c                    | |z
  j                         }||k\  j                  |      }||k  j                  |      }|dk(  r|}n||d|z  z
  z  |dz  |dz  z  |z  z   }|dk(  r|j                         S |dk(  r|j                         S |S )Nr   r  rQ   r  rT  )r3  r   r  rT  )r  rK  r"   r  abs_diffge_beta_masklt_beta_maskr  s           r+   smoothl1loss_referencer  *  s    ##%H$--h7LtO,,X6LqyC$J!67,:LPX\]P]:^ae:eeF{{}	e	zz|Mr-   c                     | |z
  j                         }||k\  }||k  }||z  |d|z  z
  z  |dz  |dz  z  z   }|dk(  r|j                         S |dk(  r|j                         S |S )Nr  rQ   r  rT  )r3  r  rT  )r  rK  r"   r  r  ge_delta_masklt_delta_maskr  s           r+   huberloss_referencer  :  s    ##%H&M%MU"hu&<=PS@SW_cdWd@eeFF{{}	e	zz|Mr-   c           	          g }|D ]  }|dk  r n|j                  |        d}|D ]<  }t        dt        |             D ]"  }||vs|t        dd| |   z
  | |   z         z  }$ > |S )Nr   r7   )appendr  lenr  )r  rK  targetstarget_indexrT  r?   s         r+   _multilabelmarginloss_referencer"  F  s    G!|$ 
 Cq#e*%As1a%"55a@AA &  
 Jr-   c                    | j                         }| j                         dk  r|j                         dk  sJ | j                         dk(  r| j                  d      n| j                  d      j                  d      } |j                         dk(  r|j                  d      n|j                  d      j                  d      }| j                  d      }| j                  d      }| j                  |      j	                         }t        d|      D ]  }t        | |   ||         ||<    |dk(  r|j                         |z  S |dk(  r|j                         |z  S |dk  r|j                         |z  S ||z  S NrQ   r7   r   r  rT  )
rR  r  rd   newzero_r  r"  r  rT  r  )r  rK  r"   	input_dimnrR  r  r?   s           r+   multilabelmarginloss_referencer)  V  sH   		Iyy{Qzz|a&+iikQ&6"EOOA<N<X<XYZ<[(.

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

1A
**Q-CYYq\!F1a[3E!HfQiHq	  F{{}s""	e	zz|c!!	Q ~~#%%|r-   c                     || z
  j                  d      j                  |       }t        j                  |dk(  | |      }|dk(  r|j	                         S |dk(  r|j                         S |S )Nr   r  r7   r  rT  )r"  r   r9   wherer  rT  )r  rK  r<  r"   margin_clampr  s         r+   hingeembeddingloss_referencer-  p  sg    UN))a)088?L[[1e\:FF{{}	e	zz|Mr-   c                     d|  |z  j                         z   j                         }|dk(  r|j                         S |dk(  r|j                         S |S Nr7   r  rT  )r   r   r  rT  )r  rK  r"   r  s       r+   softmarginloss_referencer0  {  sQ    E6F?''))..0FF{{}	e	zz|Mr-   c           	          |)| j                  t        |             j                  d      }d}t        dt        |             D ],  }||k7  s	|t	        d||   || |   z
  | |   z   |z  z        z  }. |S )Nr7   r   )r%  r  fill_r  r  )r  
target_idxr@   r<  r/   r  r?   s          r+   _multimarginloss_referencer4    s    ~3u:&,,Q/F1c%j!
?c!VJ/6E*<M3MPUVWPX3X]^2^^__F " Mr-   c                 l   | j                         dk  rD| j                         dk(  r| j                  d      n| j                  d      j                  d      } |j                         }|j                         dk(  r|j                  d      }| j                  d      }| j                  d      }| j                  |      }	t	        d|      D ]  }
t        | |
   ||
   |||      |	|
<    |dk(  r|	j                         |z  S |dk(  r|	j                         |z  S |dk(  r|	j                  d      |z  S |	|z  S r$  )	rR  r  rd   r%  r  r4  r  rT  r  )r  rK  r@   r<  r/   r"   
target_dimr(  rR  r  xs              r+   multimarginloss_referencer8    s   yy{Q&+iikQ&6"EOOA<N<X<XYZ<[Jzz|q!!!$

1A
**Q-CYYq\F1a[.uQxAvvVq	  F{{}s""	e	zz|c!!	q~~a 3&&C<r-   c                     d }t        j                  |dk(  d || |      z
   || |      |z
  j                  d            }|dk(  r|j                         S |dk(  r|j	                         S |S )Nc                 8   | j                  | j                  d            }t        d| j                  d            D ][  }| |   ||   z  j                         | |   | |   z  j                         dz   ||   ||   z  j                         dz   z  dz  z  ||<   ] |S )Nr   g-q=r  )r%  rd   r  rT  )abcosr?   s       r+   _cosz+cosineembeddingloss_reference.<locals>._cos  s    eeAFF1Iq!&&)$AdQqTk&&(qtad{.?.?.AE.IqQRtVWXYVZ{N_N_NadiNi-jor,rsCF %
r-   r7   r   r  r  rT  )r9   r+  r"  r  rT  )input1input2rK  r<  r"   r>  r  s          r+   cosineembeddingloss_referencerA    st     [[1a$vv*>&>ffAUX^A^@e@ejk@e@lmFF{{}	e	zz|Mr-   c                 T   t        j                  | |||      }t        j                  | |||      }	|r.t        j                  ||||      }
t        j                  |	|
      }	t        j                  ||z   |	z
  d      }|dk(  r|j	                         S |dk(  r|j                         S |S )Nr  r  r  rT  )r9   pairwise_distancer  r"  r  rT  )anchorpositivenegativer<  r@   epsswapr"   d_pd_nd_sr  s               r+   tripletmarginloss_referencerL    s    

!
!&(As
;C

!
!&(As
;C%%h!SAiiS![[#+5FF{{}	e	zz|Mr-   c                     | | |z
  z  |z   j                  d      }|dk(  r|j                         S |dk(  r|j                         S |S )Nr   r  r  rT  )r"  r  rT  )r?  r@  rK  r<  r"   r  s         r+   marginrankingloss_referencerN    sR    g&)F299a9@FF{{}	e	zz|Mr-   c                 >   t        j                  |t         j                        }t        j                  |t         j                        }| j                  }| j	                         } |j                         }|j                  d      }g }t        | j                  d            D ]|  }	||	   j                         }
||	   j                         }||	   j                         }|j                  d|z  dz   f|      }|j                         dk(  r||	d |f   |dd d<   n|||z
  | |dd d<   | d |
|	f   j                         }| j                  |dz  dz   f      }|d|f   |d<   |d|d   f   |d<   |d d |dd  k7  }t        d|
      D ]b  }|j                         }|dd xxx |d d z  ccc |dd xxx t        j                  ||d d |j                  d            z  ccc |||f   |z  }d |j                  |dd  j!                         j#                         d             t        j$                  |d      }|dk(  r8||j'                  |j                  |j(                        z  j+                         S |d	k(  r|j!                         S |j'                  |      }|S )
Nr   r   r7   rQ   r  r8   r  r   devicerT  )r9   	as_tensorrb  r   rc   cumsumr  rd   r  new_fullrR  r   	new_zeroscloner+  r  rT  r   catr   rQ  r  )	log_probsr   input_lengthstarget_lengthsblankr"   dtcum_target_lengthsr  r?   input_lengthtarget_lengthcum_target_lengthtargets_primeprobsalpha
mask_thirdr;   
alpha_nextr  s                       r+   ctcloss_referencerf    s   OOMDM__^5::FN	B  "IllnG'..q1F9>>!$%$Q',,.&q)..0.q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**fmm*TTZZ\\	e	zz|YYr]FMr-   )r   r  rj  r  r  r  r  r1  rG  rg  CosineEmbeddingLossTripletMarginLossMarginRankingLossCTCLossCrossEntropyLossr|  r   L1Lossc                  0    t        j                  dd      S )Nr  Tr  r/  rl   r-   r+   rB   rB     s    %++itDr-   c                 b    d| j                         z  t        d t        | |      D              z  S )NrZ  c              3   d   K   | ](  \  }}||z
  j                         j                          * y wrk   )r3  rT  )r  r;  r<  s      r+   r  z<lambda>.<locals>.<genexpr>  s(     6IDAqQUKKMIs   .0)numelrT  r  r?   r;   rA   s      r+   rB   rB     s'    R!'')^6C1I66&7r-   )rD   rG   	target_fnrH   check_complexrK   rj  c                  J    t        j                  dd      j                         S rg  r   rl   r-   r+   rB   rB     r   r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  r9   ro  rp  r	   rq  rb  rl   r-   r+   rB   rB     2    %++b/22488<BBDIIKr-   c                 0    t        | |t        |            S Nr~   )r  r,   r?   r;   r)   s      r+   rB   rB     s    amA.>?r-   )rD   r   rs  rH   r  check_bfloat16rK   )NNrQ   z6torch::nn::NLLLossOptions().weight({}).ignore_index(2)c                  J    t        j                  dd      j                         S rg  r   rl   r-   r+   rB   rB   !  r   r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   "  rx  r-   c                     t        | |d      S )NrQ   rv  )r  rr  s      r+   rB   rB   #  s    %6q!!%Lr-   rv  )	rD   rE   rF   r   rs  rH   rO   r|  rK   c                  .    t        j                  d      fS r   r   rl   r-   r+   rB   rB   *      UZZ^$5r-   z3torch::nn::NLLLossOptions().weight(torch::rand(10))c                  h    t        j                  dd      j                  d      j                         S r  r  rl   r-   r+   rB   rB   ,  r  r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   -  rx  r-   c                 0    t        | |t        |            S )Nr/   r  r1   r{  s      r+   rB   rB   .  s    a:a=9r-   r0   )	rD   constructor_args_fnrF   r   rs  rH   rO   r|  rK   c                  2    t        j                  d      d dfS )Nr3   rQ   r   rl   r-   r+   rB   rB   6  s    UZZ^T1$=r-   zCtorch::nn::NLLLossOptions().weight(torch::rand(10)).ignore_index(2)c                  h    t        j                  dd      j                  d      j                         S r  r  rl   r-   r+   rB   rB   8  r  r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   9  rx  r-   c                 2    t        | |t        |      d      S )NrQ   r/   rv  r  r{  s      r+   rB   rB   :  s    a:a=qIr-   weights_ignore_indexc                  2    t        j                  d      d dfS )Nr3   r8   r   rl   r-   r+   rB   rB   B  s    UZZ^T2$>r-   zDtorch::nn::NLLLossOptions().weight(torch::rand(10)).ignore_index(-1)c                  h    t        j                  dd      j                  d      j                         S r  r  rl   r-   r+   rB   rB   D  r  r-   c                      t        j                  d      j                         j                  d      j	                         j                         dz
  S )Nr      r7   rw  rl   r-   r+   rB   rB   E  s8    %++b/22488@FFHMMORSSr-   c                 2    t        | |t        |      d      S )Nr8   r  r  r{  s      r+   rB   rB   F  s    a:a=rJr-   weights_ignore_index_negr   c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   rB   N  r   r-   c                  .    t        j                  dd      S r   r   rl   r-   r+   rB   rB   O  s    %**R,r-   c                 .    t        | |t        |            S rk   r  r,   r{  s      r+   rB   rB   P      1mA&67r-   )rD   r   rs  rH   r  rK   )r  z.torch::nn::KLDivLossOptions().log_target(true)c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   rB   Y  r   r-   c                  J    t        j                  dd      j                         S r   r   rl   r-   r+   rB   rB   Z  s    %**R,002r-   c                 .    t        | |t        |            S rk   r  r,   r{  s      r+   rB   rB   [      *1aq1ABr-   r  )	rD   r   rF   r   rs  rH   r  rO   rK   MSELossc                  L    t        j                  dt         j                        S )NrW   r   r9   r   rc   rl   r-   r+   rB   rB   c  s    LEr-   c                  N    t        j                  dt         j                  d      S )NrW   Tr  r9   r   rc   rl   r-   r+   rB   rB   d  s    %++l%,,VZ[r-   c                     | |z
  j                         j                  d      j                         t        |      dk(  r| j	                         z  S dz  S NrQ   r  r7   r3  rQ  rT  r,   rq  r{  s      r+   rB   rB   e  sK    q1ukkm&7&7&:&>&>&@)6q)9V)C EFGGI 'LIJ'Lr-   BCELossc                  N    t        j                  dd      j                  dd      S Nr   r3   r  r}  r   rl   r-   r+   rB   rB   l      B+224Br-   c                      t        j                  dd      j                  d      j                  t        j                               S Nr   r3   r   r9   r   r   r   get_default_dtyperl   r-   r+   rB   rB   m  .    %++b"-00366u7N7N7PQr-   c                     || j                         z  d|z
  d| z
  j                         z  z   j                          t        |      r| j                         z  S dz  S rZ   )r   rT  r,   rq  r{  s      r+   rB   rB   n  sO    q1557{a!eA{{}5L'L&Q&Q&S%S'*QWWY&301&3r-   )rD   r   rs  rH   r|  rK   c                  .    t        j                  d      fS r   r   rl   r-   r+   rB   rB   u  r  r-   z3torch::nn::BCELossOptions().weight(torch::rand(10))c                  N    t        j                  dd      j                  dd      S r  r   rl   r-   r+   rB   rB   w  r  r-   c                      t        j                  dd      j                  d      j                  t        j                               S r  r  rl   r-   r+   rB   rB   x  r  r-   c                     || j                         z  d|z
  d| z
  j                         z  z   t        |      z  j                          t        |      r| j	                         z  S dz  S rZ   r   r1   rT  r,   rq  r{  s      r+   rB   rB   y  s[    AEEGq1uQ6M(MQ[\]Q^'^&c&c&e%e'*QWWY&301&3r-   rk  )r   r3   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB     rx  r-   )rD   rG   rs  rK   c                  .    t        j                  d      fS r   r   rl   r-   r+   rB   rB     r  r-   z<torch::nn::CrossEntropyLossOptions().weight(torch::rand(10))c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB     rx  r-   )rD   r  rF   rG   rs  rO   rK   r1  )r3   c                      t        j                  d      j                  d      j                  t        j                               j                  d      j                  d      S Nr3   r   rQ   r7   r9   r   r   r   r  r4  r5  rl   r-   r+   rB   rB     C    %++b/,,Q/2253J3J3LMRRSTUYYZ[\r-   c                 0    t        | |t        |            S rz  r-  r,   r{  s      r+   rB   rB     s    (Aq9IJr-   )rD   rG   rs  rH   r  rK   )r  z2torch::nn::HingeEmbeddingLossOptions().margin(0.5)c                      t        j                  d      j                  d      j                  t        j                               j                  d      j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   c                 2    t        | |dt        |            S Nr  r;  r  r{  s      r+   rB   rB     s    (Ac]STEUVr-   r<  )	rD   rE   rF   rG   rs  rH   rO   r  rK   r  c                      t        j                  d      j                  d      j                         j	                         S r   r9   r   r	   rq  rb  rl   r-   r+   rB   rB     s)    %**R.,,R0668==?r-   c                 0    t        | |t        |            S rz  r)  r,   r{  s      r+   rB   rB         *1a=;KLr-   1d)	rD   rG   rs  rH   rO   r  r_   r|  rK   rT   r3   c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     s,    %**Q+//399;@@Br-   c                 0    t        | |t        |            S rz  r  r{  s      r+   rB   rB     r  r-   )rD   rG   rs  rH   r  r_   r|  rK   MultiLabelSoftMarginLossc                  h    t        j                  dd      j                  d      j                         S NrT   r3   rQ   r9   r   r	   rq  rl   r-   r+   rB   rB     #    %**Q+//288:r-   c                     || j                         j                         z  d|z
  |  j                         j                         z  z   j                          | j                         z  S rZ   )r   r   rT  rq  r{  s      r+   rB   rB     sP    q199;??+<'<A1"I[I[I]?]']&b&b&d%dghgngngp%pr-   )rD   rG   rs  rH   r_   rK   rg  c                      t        j                  d      j                  d      j                         j	                         S NrT   r4   r  rl   r-   r+   rB   rB     )    %**Q-++A.446;;=r-   c                 0    t        | |t        |            S rz  r8  r,   r{  s      r+   rB   rB         %amA6FGr-   )rD   rG   rs  rH   r  r_   rK   c                      t        j                  d      j                  d      j                         j	                         S )Nr7   r4   r  rl   r-   r+   rB   rB     r  r-   c                 0    t        | |t        |            S rz  r  r{  s      r+   rB   rB     r  r-   )rD   rG   rs  rH   rO   r  r_   rK   )rQ   z(torch::nn::MultiMarginLossOptions().p(2)c                  N    t        j                  dd      j                  dd      S r|  r   rl   r-   r+   rB   rB     s    Ar*11$Ar-   c                      t        j                  d      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 2    t        | |dt        |            S )NrQ   rz  r  r{  s      r+   rB   rB     s    %aa=;KLr-   r@   )
rD   rE   rF   r   rs  rH   rO   r  r_   rK   )r7   r  z4torch::nn::MultiMarginLossOptions().p(1).margin(0.5))r7   Nr  c                      t        j                  d      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 2    t        | |dt        |            S r  r  r{  s      r+   rB   rB     s    %a3-PQBRSr-   )rD   rE   rF   legacy_constructor_argsrG   rs  rH   rO   r  r_   rK   r3   r   z_torch::nn::MultiMarginLossOptions().p(1).margin(1.).weight(torch::rand(10).to(torch::kFloat64))c                  N    t        j                  ddt         j                        S )NrT   r3   r   r  rl   r-   r+   rB   rB     s    Ar>r-   c                      t        j                  d      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 D    t        | |t        |      t        |            S )Nr   )r8  r1   r,   r{  s      r+   rB   rB     s    %a:a=MZ[L\]r-   )rD   rE   rF   r  r   rs  rH   rO   r  r_   rK   r  c                  0    t        j                  dd      S Nr  Trn  r/  rl   r-   r+   rB   rB         %++gTBr-   c                 2    t        | |t        |      |      S Nr  r  r,   r?   r;   r)   r<  s       r+   rB   rB         "1a=3C!Lr-   )rD   rG   rs  r  rH   rK   r  c                  0    t        j                  dd      S r  r/  rl   r-   r+   rB   rB     r  r-   c                 0    t        | |t        |            S rz  )r  r,   r{  s      r+   rB   rB     s    1a0@Ar-   )rD   rG   rs  r  r  r|  rH   rK   rG  )rT   rT   c                  J    t        j                  dd      j                         S rE  r9   r   signrl   r-   r+   rB   rB     s    %++a+002r-   c                 0    t        | |t        |            S rz  )r0  r,   r{  s      r+   rB   rB     s    $Q]15EFr-   rg  c                      t        j                  ddt         j                        t        j                  ddt         j                        fS Nr   r3   r   r  rl   r-   r+   rB   rB     /    %**R5<<@%**RQS[`[g[gBhir-   c                  h    t        j                  dt         j                        j                         S Nr   r   r9   r   rc   r  rl   r-   r+   rB   rB          %++b=BBDr-   c                 >    t        | d   | d   |t        |            S Nr   r7   r~   rA  r,   r{  s      r+   rB   rB   !  s    )!A$!a=QRCSTr-   )rD   r   rs  rH   r  )ffffff?z3torch::nn::CosineEmbeddingLossOptions().margin(0.7)c                      t        j                  ddt         j                        t        j                  ddt         j                        fS r  r  rl   r-   r+   rB   rB   )  r  r-   c                  h    t        j                  dt         j                        j                         S r  r  rl   r-   r+   rB   rB   *  r  r-   c           	      @    t        | d   | d   |dt        |            S )Nr   r7   r  r;  r  r{  s      r+   rB   rB   +  s     )!A$!a}]^O_`r-   )rD   rE   rF   r   rs  rH   rO   r  ri  c                      t        j                  d      j                  d      t        j                  d      j                  d      fS N2   r3   r9   r   r	   rl   r-   r+   rB   rB   2  /    %++b/--b15;;r?3F3Fr3JKr-   c                  H    t        j                  d      j                         S Nr   r  rl   r-   r+   rB   rB   3      %++b/..0r-   c                 >    t        | d   | d   |t        |            S r  rN  r,   r{  s      r+   rB   rB   4  s    '!adAqAQRr-   z1torch::nn::MarginRankingLossOptions().margin(0.5)c                      t        j                  d      j                  d      t        j                  d      j                  d      fS r  r  rl   r-   r+   rB   rB   =  r  r-   c                  H    t        j                  d      j                         S r  r  rl   r-   r+   rB   rB   >  r  r-   c           	      @    t        | d   | d   |dt        |            S )Nr   r7   r  r;  r  r{  s      r+   rB   rB   ?  s     '!adAc][\M]^r-   )	rD   rE   rF   r   rs  rH   rO   r  rK   BCEWithLogitsLossc                  N    t        j                  dd      j                  dd      S r  r   rl   r-   r+   rB   rB   G  r  r-   c                      t        j                  dd      j                  d      j                  t        j                               S r  r  rl   r-   r+   rB   rB   H  r  r-   )rD   r   rs  rK   zQtorch::nn::BCEWithLogitsLossOptions().weight(torch::rand(10).to(torch::kFloat64))c                  N    t        j                  dd      j                  dd      S r  r   rl   r-   r+   rB   rB   O  r  r-   c                      t        j                  dd      j                  d      j                  t        j                               S r  r  rl   r-   r+   rB   rB   P  r  r-   )rD   rE   rF   r   rs  rO   rK   zQtorch::nn::BCEWithLogitsLossOptions().weight(torch::rand({}).to(torch::kFloat64))c                  L    t        j                  d      j                  dd      S Nrl   r  r}  r   rl   r-   r+   rB   rB   X      B..tX>r-   c                      t        j                  d      j                  d      j                  t        j                               S Nrl   r   r  rl   r-   r+   rB   rB   Y  s+    %++b/,,Q/2253J3J3LMr-   scalar_weights)rQ   rX   rT   rT   c                      t        j                  ddd      j                  d      j                         j	                         S NrQ   rT   rX   r  rl   r-   r+   rB   rB   `  .    %**Q1-11!4::<AACr-   c                 6    t        d   | |t        |            S Nr  r~   r   r,   r{  s      r+   rB   rB   a      {+AqM!<LMr-   2d)rD   rG   rs  rH   r  rO   r|  rK   c                  .    t        j                  d      fS r"  r   rl   r-   r+   rB   rB   j      UZZ]$4r-   z2torch::nn::NLLLossOptions().weight(torch::rand(3))rT   c                 6    t        d   | |t        |            S )Nr  r  r   r1   r{  s      r+   rB   rB   n  s    {+AqAGr-   
2d_weights)	rD   r  rF   rG   rK  rH   rO   r|  rK   )NNr7   z6torch::nn::NLLLossOptions().weight({}).ignore_index(1)c                      t        j                  ddd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB   y  r  r-   c                 $    t        d   | |d      S )Nr  r7   r  r   r{  s      r+   rB   rB   z  s    {+AqqAr-   2d_ignore_index)	rD   rE   rF   rG   rs  rH   rO   r|  rK   )rQ   rX   rT   rT   rQ   rQ   c                      t        j                  ddddd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     2    %**Q1a377:@@BGGIr-   c                 6    t        d   | |t        |            S r  r  r{  s      r+   rB   rB     r  r-   
higher_dim)rQ   rX   rT   c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     ,    %**Q*..q1779>>@r-   c                 6    t        d   | |t        |            S r  r  r{  s      r+   rB   rB     r  r-   dim_is_3c                      t        j                  ddd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 6    t        d   | |t        |            S Nrk  r~   r  r{  s      r+   rB   rB         121a=QRCSTr-   c                  .    t        j                  d      fS r"  r   rl   r-   r+   rB   rB     r  r-   z;torch::nn::CrossEntropyLossOptions().weight(torch::rand(3))c                 6    t        d   | |t        |            S )Nrk  r  r!  r{  s      r+   rB   rB     s    121a
1Nr-   z?torch::nn::CrossEntropyLossOptions().weight({}).ignore_index(1)c                      t        j                  ddd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 $    t        d   | |d      S )Nrk  r7   r  r%  r{  s      r+   rB   rB     s    121aaHr-   c                      t        j                  ddddd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r(  r-   c                 6    t        d   | |t        |            S r1  r  r{  s      r+   rB   rB     r2  r-   c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB     r,  r-   c                 6    t        d   | |t        |            S r1  r  r{  s      r+   rB   rB     r2  r-   )rT   rX   c                  N    t        j                  dd      j                  d      S NrT   rX   r7   rQ  r9   r   softmaxrl   r-   r+   rB   rB         %**Q*22q29r-   c                 6    t        d   | |t        |            S r1  r  r{  s      r+   rB   rB     r2  r-   2d_prob_target)rT   rX   r5   c                  P    t        j                  ddd      j                  d      S NrT   rX   r5   r7   rQ  r=  rl   r-   r+   rB   rB         %**Q1-55!5<r-   c                 6    t        d   | |t        |            S r1  r  r{  s      r+   rB   rB     r2  r-   3d_prob_target)rT   rX   r5   rQ   c                  R    t        j                  dddd      j                  d      S NrT   rX   r5   rQ   r7   rQ  r=  rl   r-   r+   rB   rB     !    %**Q1a088Q8?r-   c                 6    t        d   | |t        |            S r1  r  r{  s      r+   rB   rB     r2  r-   4d_prob_target7CrossEntropyLoss_2d_prob_target_smoothing_sum_reductionc                  0    t        j                  dd      S NrT  333333?r"   r  rv   rk  )rn   rp   s     r+   rB   rB     s    B,?,?%PT-Vr-   zQtorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).reduction(torch::kSum)c                  N    t        j                  dd      j                  d      S r<  r=  rl   r-   r+   rB   rB     r?  r-   c                 8    t        d   | |t        |      d      S Nrk  rO  rP  r  r{  s      r+   rB   rB         121a=QRCSeijr-   )r   r   rF   rG   rs  rH   r|  rK   )CrossEntropyLoss_2d_prob_target_smoothingc                  .    t        j                  d      S NrO  )r  rQ  rn   s    r+   rB   rB         ""5"5d"Kr-   z:torch::nn::CrossEntropyLossOptions().label_smoothing(0.15)c                  N    t        j                  dd      j                  d      S r<  r=  rl   r-   r+   rB   rB     r?  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB     rU  r-   0CrossEntropyLoss_2d_prob_target_smoothing_weightc                  J    t        j                  d      j                         fS r"  r9   r   r3  rl   r-   r+   rB   rB   	  s    UZZ]%6%6%8$:r-   c                 0    t        j                  | d      S rX  rQ  r  s    r+   rB   rB   
      2#6#6vt#Tr-   zWtorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).weight(torch::rand(3).abs())c                  N    t        j                  dd      j                  d      S r<  r=  rl   r-   r+   rB   rB     r?  r-   c                 L    t        d   | |t        |      t        |      d      S Nrk  rO  )r"   r/   r  r   r,   r1   r{  s      r+   rB   rB     )    121a=QRCS\fgh\i{  Ar-   )	r   r  r   rF   rG   rs  rH   r|  rK   7CrossEntropyLoss_3d_prob_target_smoothing_sum_reductionc                  0    t        j                  dd      S rN  rQ  rY  s    r+   rB   rB     s    ""5"5PT#Vr-   c                  P    t        j                  ddd      j                  d      S rC  r=  rl   r-   r+   rB   rB     rD  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB     rU  r-   )CrossEntropyLoss_3d_prob_target_smoothingc                  .    t        j                  d      S rX  rQ  rY  s    r+   rB   rB   !  rZ  r-   c                  P    t        j                  ddd      j                  d      S rC  r=  rl   r-   r+   rB   rB   $  rD  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB   %  rU  r-   ,CrossEntropyLoss_3d_indices_target_smoothingc                  .    t        j                  d      S rX  rQ  rY  s    r+   rB   rB   ,  rZ  r-   c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB   /  r,  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB   0  rU  r-   9CrossEntropyLoss_3d_indices_target_smoothing_ignore_indexc                  0    t        j                  dd      S )NrO  r7   r  rv  rQ  rY  s    r+   rB   rB   7      ""5"5dYZ"[r-   zJtorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).ignore_index(1)c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB   :  r,  r-   c                 :    t        d   | |t        |      dd      S Nrk  rO  r7   r"   r  rv  r  r{  s      r+   rB   rB   ;       121a=QRCSeixyzr-   :CrossEntropyLoss_3d_indices_target_smoothing_sum_reductionc                  0    t        j                  dd      S rN  rQ  rY  s    r+   rB   rB   B      ""5"5W["\r-   c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB   E  r,  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB   F  rU  r-   GCrossEntropyLoss_3d_indices_target_smoothing_sum_reduction_ignore_indexc                  2    t        j                  ddd      S )NrT  rO  r7   rz  rQ  rY  s    r+   rB   rB   M  s    ""5"5W[CD#Fr-   zatorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).reduction(torch::kSum).ignore_index(1)c                      t        j                  dd      j                  d      j                         j	                         S r  r  rl   r-   r+   rB   rB   Q  r,  r-   c                 :    t        d   | |t        |      dd      S ry  r  r{  s      r+   rB   rB   R  r{  r-   ,CrossEntropyLoss_2d_indices_target_smoothingc                  .    t        j                  d      S rX  rQ  rY  s    r+   rB   rB   Y  rZ  r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   \  rx  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB   ]  rU  r-   :CrossEntropyLoss_2d_indices_target_smoothing_sum_reductionc                  0    t        j                  dd      S rN  rQ  rY  s    r+   rB   rB   d  r~  r-   c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   g  rx  r-   c                 8    t        d   | |t        |      d      S rT  r  r{  s      r+   rB   rB   h  rU  r-   9CrossEntropyLoss_2d_indices_target_smoothing_ignore_indexc                  0    t        j                  dd      S )NrO  rX   ru  rQ  rY  s    r+   rB   rB   o  rv  r-   zJtorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).ignore_index(3)c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   r  rx  r-   c                 :    t        d   | |t        |      dd      S )Nrk  rO  rX   rz  r  r{  s      r+   rB   rB   s  r{  r-   3CrossEntropyLoss_2d_indices_target_smoothing_weightc                  J    t        j                  d      j                         fS r   r_  rl   r-   r+   rB   rB   z  s    UZZ^%7%7%9$;r-   c                 0    t        j                  | d      S rX  rQ  r  s    r+   rB   rB   {  ra  r-   zXtorch::nn::CrossEntropyLossOptions().label_smoothing(0.15).weight(torch::rand(10).abs())c                      t        j                  d      j                         j                  d      j	                         j                         S rg  rw  rl   r-   r+   rB   rB   ~  rx  r-   c                 L    t        d   | |t        |      t        |      d      S rd  re  r{  s      r+   rB   rB     rf  r-   c                  .    t        j                  d      fS r"  r   rl   r-   r+   rB   rB     r  r-   c                  N    t        j                  dd      j                  d      S r<  r=  rl   r-   r+   rB   rB     r?  r-   c                 J    t        d   | |t        |      t        |            S Nrk  )r"   r/   re  r{  s      r+   rB   rB     #    121a=QRCS\fgh\ijr-   2d_prob_target_weights)
rD   r  rF   rG   rs  rH   r  rO   r|  rK   c                  .    t        j                  d      fS r"  r   rl   r-   r+   rB   rB     r  r-   c                  P    t        j                  ddd      j                  d      S rC  r=  rl   r-   r+   rB   rB     rD  r-   c                 J    t        d   | |t        |      t        |            S r  re  r{  s      r+   rB   rB     r  r-   3d_prob_target_weightsc                  .    t        j                  d      fS r"  r   rl   r-   r+   rB   rB     r  r-   c                  R    t        j                  dddd      j                  d      S rH  r=  rl   r-   r+   rB   rB     rI  r-   c                 J    t        d   | |t        |      t        |            S r  re  r{  s      r+   rB   rB     r  r-   4d_prob_target_weightsPoissonNLLLossc                  j    t        j                  dddd      j                         j                         S NrQ   rX   r5   rT   r9   r   floor_abs_rl   r-   r+   rB   rB     %    %++aAq188:??Ar-   c                 b    | j                         |j                  |       z
  j                         S rk   )r   r	   r  rr  s      r+   rB   rB     s     aeega&8%>%>%@r-   no_full_loss)rD   rG   rs  rH   rO   rK   )FFz?torch::nn::PoissonNLLLossOptions().log_input(false).full(false)c                  l    t        j                  dddd      j                         j                  d      S NrQ   rX   r5   rT   r]   r9   r   r  add_rl   r-   r+   rB   rB     '    Q1a0557<<UCr-   c                  j    t        j                  dddd      j                         j                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 h    | |j                  | dz   j                               z
  j                         S )N:0yE>)r	   r   r  rr  s      r+   rB   rB     s&    a!%%T0@*A&A%G%G%Ir-   no_full_loss_no_log_input)rD   rE   rF   r   rs  rH   rO   rK   TTz=torch::nn::PoissonNLLLossOptions().log_input(true).full(true)c                  j    t        j                  dddd      j                         j                         S r  r  rl   r-   r+   rB   rB     r  r-   c                 
   | j                         |j                  |       z
  |j                  |j                               |z
  ddt        z  |z  j                         z  z   j	                  |dk  d      z   j                         S )Nr  r  r7   r   )r   r	   r   r
   masked_fillr  rr  s      r+   rB   rB     si    UUWquuQx155>A#5rBw{>O>O>Q8Q#Q"^"^_`de_egh"iiooqr-   	full_loss)rD   rE   rF   rG   rs  rH   rO   rK   )FTz>torch::nn::PoissonNLLLossOptions().log_input(false).full(true)c                  l    t        j                  dddd      j                         j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   c                  j    t        j                  dddd      j                         j                         S r  r  rl   r-   r+   rB   rB     r  r-   c                    | |j                  | dz   j                               z
  |j                  |j                               |z
  ddt        z  |z  j                         z  z   j                  |dk  d      z   j	                         S )Nr  r  r  r7   r   )r	   r   r
   r  r  rr  s      r+   rB   rB     ss    q4xnn&''155>A+=rBwQR{FWFWFY@Y+Y*f*fghlmgmop*qq
$&&r-   full_loss_no_log_inputc                  0    t        j                  dd      S Nrl   Trn  r/  rl   r-   r+   rB   rB         %++b=r-   c                 l    d| j                         z  | |z
  j                         j                         z  S )NrZ  )rq  r3  rT  rr  s      r+   rB   rB     s&    R!'')^q1ukkm6G6G6I%Ir-   scalar)rD   rG   rs  rH   rO   rt  rK   c                  H    t        j                  d      j                         S r  r   rl   r-   r+   rB   rB     r	  r-   c                  ,    t        j                  d      S r  r   rl   r-   r+   rB   rB     s    %**R.r-   c                 .    t        | |t        |            S rk   r  r{  s      r+   rB   rB     r  r-   )rD   r   rs  rH   r  rO   rK   c                  H    t        j                  d      j                         S r  r   rl   r-   r+   rB   rB     r	  r-   c                  H    t        j                  d      j                         S r  r   rl   r-   r+   rB   rB     s    %**R.,,.r-   c                 .    t        | |t        |            S rk   r  r{  s      r+   rB   rB     r  r-   scalar_log_targetc                  L    t        j                  dt         j                        S )Nrl   r   r  rl   r-   r+   rB   rB     s    Bell;r-   c                  N    t        j                  ddt         j                        S )Nrl   T)r  r   r  rl   r-   r+   rB   rB     s    %++bELLQr-   c                     | |z
  j                         j                  d      j                         t        |      dk(  r| j	                         z  S dz  S r  r  r{  s      r+   rB   rB     F    q1ukkm&7&7&:&>&>&@4A!4D4Nqwwy'WTU'Wr-   )rD   r   rs  rH   r  rO   r|  rK   c                  X    t        j                  ddddt         j                        dz  S )NrT   D   @   r   r3   )r9   r  floatrl   r-   r+   rB   rB      s    Ar2rEJr-   c                  R    t        j                  ddddt         j                        S )NrT   r  r  r   )r9   r  r  rl   r-   r+   rB   rB     s    %++aR5;;Gr-   c                     | |z
  j                         j                  d      j                         t        |      dk(  r| j	                         z  S dz  S r  r  r{  s      r+   rB   rB     r  r-   prec)rD   r   rs  rH   check_forward_onlyrO   r|  c                  .    t        j                  d      fS r  r   rl   r-   r+   rB   rB   
  r  r-   z3torch::nn::BCELossOptions().weight(torch::rand({}))c                  L    t        j                  d      j                  dd      S r  r   rl   r-   r+   rB   rB     r  r-   c                      t        j                  d      j                  d      j                  t        j                               S r  )r9   r   r   r   r  rl   r-   r+   rB   rB     s+    %**R.++A.11%2I2I2KLr-   c                     || j                         z  d|z
  d| z
  j                         z  z   t        |      z  j                          t        |      dk(  r| j	                         z  S dz  S )Nr7   r  r  r{  s      r+   rB   rB     s`    AEEGq1uQ6M(MQ[\]Q^'^&c&c&e%e'*f4QWWY&=:;&=r-   c                      t        j                  d      j                  d      j                  t        j                               j                  d      j                  d      S )Nrl   r   rQ   r7   r  rl   r-   r+   rB   rB     r  r-   scalar_margin)rD   rE   rF   rG   rs  rO   r  rK   c                  0    t        j                  dd      S r  r/  rl   r-   r+   rB   rB   !  r  r-   c                 2    t        | |t        |      |      S r  r  r  s       r+   rB   rB   #  r  r-   )rD   rG   rs  r  rH   rO   rK   zDtorch::nn::MultiLabelSoftMarginLossOptions().weight(torch::rand(10))c                  .    t        j                  dd      S r  r/  rl   r-   r+   rB   rB   ,  r   r-   c                  h    t        j                  dd      j                  d      j                         S r  r  rl   r-   r+   rB   rB   -  r  r-   c                 N   || j                         j                         z  d|z
  |  j                         j                         z  z   t        |      z  j                          t	        |      dk(  r| j                         z  S t	        |      dk(  r| j                  d      z  S dz  S r/  )r   r   r1   rT  r,   rq  rd   r{  s      r+   rB   rB   .  s    AIIKOO,=(=QA2,,.J\J\J^@^(^blmnbo'o&t&t&v%v'*f4QWWY&iGTUVGW[`G`!&&)&ifg&ir-   rj  )   )r   r   r   )      r  c                  N    t        j                  ddd      j                  d      S Nr   rX   r   rQ   r9   r   r  rl   r-   r+   rB   rB   9      RB/;;A>r-   c                  P    t        j                  dddt         j                        S Nr   r  rX   r  r   r9   randintrb  rl   r-   r+   rB   rB   :      %--2wejjIr-   c           
      6    t        | |||dt        |            S Nr  r[  r"   rf  r,   r?   r;   iltlr)   s        r+   rB   rB   ;      aB"a@PQr-   lengths_intlists)rD   rE   
extra_argsr   rs  rH   rO   r  r  r_   r  r  r  rK   z%torch::nn::CTCLossOptions().blank(14)c                  N    t        j                  ddd      j                  d      S r  r  rl   r-   r+   rB   rB   L  r  r-   c                  P    t        j                  dddt         j                        S r  r  rl   r-   r+   rB   rB   M  r  r-   c           
      6    t        | |||dt        |            S r  r  r  s        r+   rB   rB   N  r  r-   lengths_tensors)rD   rE   rF   r  r   rs  rH   rO   r  r  r_   r  rK   2d_int_target_lengths_intlists)r   c                  N    t        j                  ddd      j                  d      S r  r  rl   r-   r+   rB   rB   k  r  r-   c                  P    t        j                  dddt         j                        S Nr7   r   r  r   r9   r  r{  rl   r-   r+   rB   rB   l      %--2weiiHr-   c           
      6    t        | |||dt        |            S Nr   r  r  r  s        r+   rB   rB   m      aB!}Q?OPr-   )rD   rO   rE   r  r   rs  rH   r  r  r_   r  r  r  rK   2d_int_target_lengths_tensorsz$torch::nn::CTCLossOptions().blank(0)c                  N    t        j                  ddd      j                  d      S r  r  rl   r-   r+   rB   rB   ~  r  r-   c                  P    t        j                  dddt         j                        S r   r  rl   r-   r+   rB   rB     r  r-   c           
      6    t        | |||dt        |            S r  r  r  s        r+   rB   rB     r  r-   )rD   rO   rE   rF   r  r   rs  rH   r  r  r_   r  rK   2d_lengths_tensorsc                  N    t        j                  ddd      j                  d      S r  r  rl   r-   r+   rB   rB     r  r-   c                  P    t        j                  dddt         j                        S r   r  rl   r-   r+   rB   rB     r  r-   c           
      6    t        | |||dt        |            S r  r  r  s        r+   rB   rB     r  r-   c                      | d   }d }fd | dd D cg c]
  } ||       c}      } || }t        |      }|dk(  r|j                  d      S |S c c}w )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.
    r8   c                     t        | t        t        f      r| D cg c]  }|j                  d       c}S | j                  d      S c c}w rN   r  r  s     r+   r  z:single_batch_reference_criterion_fn.<locals>.unsqueeze_inp  r  r  c                     g }t        | t        t        f      r | D ]  }|j                   |              |S |j	                  |        |S rk   )r  r  r  extendr  )xsr*   r7  r[   s      r+   r[   z4single_batch_reference_criterion_fn.<locals>.flatten  sJ    b4-(gaj)   MM"r-   Nr}   r   )r,   r  )rn   	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)rl  r  r  r  r  )r}   r  rT  _no_batch_dim_)namec                 8     t        t        |       t              S rz  r%   rv   r"   r  rn   s     r+   rB   rB         ->WR->-Sr-   )r   r   rG   target_sizerH   r  rK   KLDivLoss_no_batch_dim_c                  6    t        j                  t              S rz  )rv   r   r"   rl   r-   r+   rB   rB     s    BLL9=r-   c                  H    t        j                  d      j                         S Nr  r   rl   r-   r+   rB   rB     s    D)--/r-   c                  ,    t        j                  d      S r   r   rl   r-   r+   rB   rB     s    %**T*r-   )r   r   r   rs  rH   r  rK   c                  r    t        j                  t        j                  dt         j                              S Nr:  r   )r9   r   r   rc   rl   r-   r+   rB   rB     s    ekk!5<<@Ar-   c                      t        j                  dt         j                        j                  d      j	                  t         j                        S )Nr:  r   r   )r9   r   rc   r   r   rl   r-   r+   rB   rB     s-    AU\\255a8;;ELLIr-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    %++au||"Dr-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    ekkZ[chcocoNpr-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    5;;q#Er-   c                  6    t        j                  g ddz        S N)r8   r7   r7   rX   r9   tensorrl   r-   r+   rB   rB     s    u||\fij\jOkr-   c                  L    t        j                  dt         j                        S )Nr5   r   r  rl   r-   r+   rB   rB     s    U[[%,,%Gr-   c                  0    t        j                  g d      S )N)rX   r   r8   r7   r*  rl   r-   r+   rB   rB     s    QVQ]Q]^kQlr-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    u{{1ELLAr-   c                  6    t        j                  g ddz        S r)  r*  rl   r-   r+   rB   rB     s    5<<XbefXfKgr-   c                  v    t        j                  t        j                  dt        j                        d      S )NrX   r   r   rQ  )r   r  r9   r   rc   rl   r-   r+   rB   rB     s    ekk!5<<&HaPr-   c                  ,    t        j                  d      S rZ   r*  rl   r-   r+   rB   rB     s    Z_ZfZfghZir-   c                      t        j                  dt         j                        t        j                  dt         j                        fS r#  r  rl   r-   r+   rB   rB     '    Qell3U[[%,,5WXr-   c                  L    t        j                  dt         j                        S )Nr7   r   )r9   r+  rc   rl   r-   r+   rB   rB     s    Qell3r-   c                  V    t        j                  d      t        j                  d      fS r  r/  rl   r-   r+   rB   rB     s    5;;r?EKKO"Dr-   c                  H    t        j                  d      j                         S r  r  rl   r-   r+   rB   rB     s    ekkZ\oNbNbNdr-   rh  c                      t        j                  dt         j                        t        j                  dt         j                        fS r#  r  rl   r-   r+   rB   rB     r3  r-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    AU\\2r-   c                  L    t        j                  dt         j                        S r#  r  rl   r-   r+   rB   rB     s    Qell)Kr-   c                  ,    t        j                  d      S )Nr:  r/  rl   r-   r+   rB   rB     s    UZU`U`abUcr-   r_   ,classification_criterion_no_batch_extra_info)r  r  r1  rj  rG  c                 8     t        t        |       t              S rz  r  r  s     r+   rB   rB     r  r-   c                      |        S rk   rl   fs    r+   rB   rB     s    ACr-   c                      |        S rk   rl   r>  s    r+   rB   rB   	  s    acr-   )r   r   r   rs  rH   r  
has_parityc                   |   e Zd Zed        Zedej                  deeej                     eej                     f   fd       Z
edej                  ddfd       Ze	 ddej                  dedej                  d	eej                  eej                     f   d
ef
d       Zd Zd Zd ZddefdZddefdZddefdZy)
NNTestCasec                     t         rk   NotImplementedError)rm   rn   rp   s      r+   _forwardzNNTestCase._forward      !!r-   r  returnc                     t         rk   rE  rm   r  s     r+   _get_parameterszNNTestCase._get_parameters  rH  r-   Nc                     t         rk   rE  rK  s     r+   _zero_grad_parametersz NNTestCase._zero_grad_parameters  rH  r-   r  r  grad_outputcreate_graphc                     t         rk   rE  )rm   r  r  r  rO  rP  s         r+   	_backwardzNNTestCase._backward"  s
    
 "!r-   c                     t        |t              rt         fd|D              S t        |t              r |D cg c]  } j                  |       c}S t	        j
                  |j                               S c c}w )Nc              3   B   K   | ]  }j                  |        y wrk   )	_jacobian)r  elemnum_outrm   s     r+   r  z'NNTestCase._jacobian.<locals>.<genexpr>+  s     I54g65s   )r  r  r  rU  r9   r  nelement)rm   r  rW  rV  s   ` ` r+   rU  zNNTestCase._jacobian)  sf    eU#I5IIIt$>CDedDNN41eDD;;u~~/99 Es   A<c                      t        |t        j                        r<|j                  r|j	                         j                  d      S |j                  d      S t         fd|D              S )Nr8   c              3   @   K   | ]  }j                  |        y wrk   )_flatten_tensors)r  r;  rm   s     r+   r  z.NNTestCase._flatten_tensors.<locals>.<genexpr>8  s     =1a..q11   )r  r9   r  	is_sparseto_denser<   r  )rm   r7  s   ` r+   r[  zNNTestCase._flatten_tensors1  sN    a&{{zz|((,,vvbz!=1===r-   c                    t        |t        j                        rO|j                  rB|j                  5|j                  j                          |j                  j                          y y y |D ]  }| j                  |        y rk   )r  r9   r  r  gradr&  detach__zero_grad_input)rm   r  r?   s      r+   rb  zNNTestCase._zero_grad_input:  sd    eU\\*""uzz'=

  "

""$ (>" %%a( r-   c                    | j                  ||      }|j                         }|r&| j                  ||      }t        t	        |            }|r:t        d | j                  |      d   D              }	t        j                  |	|      }
t        |      D ]%  }| j                  |      \  }}t        ||      D cg c]  \  }}|t        j                  |      n|  }}}t        j                  |      }|j                  d      }d||<   |r| j                  |       |r| j                  |       | j                  ||||      }|rCt        t	        |            D ]+  \  }}|j!                         j                  d      |d d |f<   - |st        j"                  | j%                  |      d      
d d |f<   ( t'               }|r|fz  }|r|
fz  }|S c c}}w )Nc              3   <   K   | ]  }|j                           y wrk   )rq  r  s     r+   r  z2NNTestCase._analytical_jacobian.<locals>.<genexpr>L  s     O/N!AGGI/N   r   r8   r7   )rG  rX  rU  r  r   rT  rL  r9   r  r  r  
zeros_liker<   rN  rb  rR  
contiguousrW  r[  r  )rm   r  r  jacobian_inputjacobian_parametersr  r  jacobian_inpflat_jacobian_input	num_paramjacobian_paramr?   paramd_paramr@   r  d_out
flat_d_outd_input
jacobian_xd_xress                         r+   _analytical_jacobianzNNTestCase._analytical_jacobianC  s   vu-oo'>>%=L"&}\'B"COt/C/CF/KA/NOOI"[[K@N{#A!11&9NE7MPQVX_M`aM`6Aqaiu''*Q>M`Ga$$V,EBJJqM"**62%%e,nnVUFEBG'*+>g@V'WOJ'*~~'7'<'<R'@Jq!t$ (X"',yy1F1Fw1OQR'Sq!t$) $, ).<= C>?"C
3 bs   9#Gc                      fd}t               }|r|t        ||d      fz  }|r] j                        \  }}g }	|D ](  }
t        |||
d      }|	j                  |d   d          * |t	        j
                  |	d      fz  }|S )Nc                  D    j                  |       j                         S rk   )rG  detach)r  r  rm   s    r+   fwz*NNTestCase._numerical_jacobian.<locals>.fwn  s    ==/6688r-   ư>)rG  )rK  rG  r   )r  r   rL  r  r9   rW  )rm   r  r  rh  ri  rz  ru  rn  rA   to_catr@   jacobians   ``          r+   _numerical_jacobianzNNTestCase._numerical_jacobianm  s    	9 ).*2u$?@@C++F3HE1F22uQDQhqk!n-  EIIfa(**C
r-   c                 
   t        | j                  |      d         }| j                  ||||      }| j                  ||||      }t	        t        |            }t	        t        |            }g }	t        ||      D ]W  \  }
}|
j                         dk7  s|	j                  |
j                  |d      j                         j                                Y t        |	      dkD  r | j                  t        |	      t               y y )Nr   r8   )rc  )boolrL  rv  r~  r  r   r  rq  r  r  r3  r  r  assertLessEqual	PRECISION)rm   r  r  rh  ri  
analytical	numericalanalytical_tnumerical_tdifferencesr;  r(  s               r+   check_jacobianzNNTestCase.check_jacobian~  s    "4#7#7#?#BC..vunNab
,,VUNL_`	M*56=34k2DAqwwyA~""155"5#5#9#9#;#?#?#AB 3 {a  [!19=  r-   Fr  T)rr   rs   rt   r   rG  rv   rw   r   r   	ParameterrL  rN  r   r9   r  r   r   r  rR  rU  r[  rb  rv  r~  r  rl   r-   r+   rC  rC    s    " " "bii "E$r||:LdSUS_S_N`:`4a " " "BII "$ " "  (-"		 ")"38<<"$U\\8ELL3I%IJ" !%" ":>)(2B (T1A ">,< >r-   rC  c                   \    e Zd Zh dZddZd Zd Zed        Zed        Z	d Z
dd	Zd
 Zy)TestBase>   r  r  rE   Nc                    || _         || _        || _        || _        | j                  D ]Q  }||vs|dz   |vs|dz   |vs|dv rt               ||<   *t        dj                  | j                         |             || _	        i | _
        y )N_fn_size>   r  rE   zC{}: Specify {} by a value, a function to generate it, or it's size!)rO   r   r   rH   _required_arg_namesr  
ValueErrorformatget_name_extra_kwargs
_arg_cache)rm   r   rO   rH   r   rp   r  s          r+   __init__zTestBase.__init__  s    	 &(,,D6!dUl&&@TG^[aEa==#(7F4L$%j&,fT]]_d&CE E - $r-   c                     | j                   d| j                   z   S d| j                  j                  z   }| j                  r|d| j                  z   z  }|S )Ntest_rA   )r   r   rr   rO   )rm   	test_names     r+   r  zTestBase.get_name  sP    ==$T]]**d..777	99tyy(Ir-   c                      t        |t        j                        r|S t        |      r t	        |       fd|D              S |S )Nc              3   @   K   | ]  }j                  |        y wrk   )_unpack)r  vrm   s     r+   r  z#TestBase._unpack.<locals>.<genexpr>  s     >1t||Ar\  )r  r9   r  r   type)rm   values   ` r+   r  zTestBase._unpack  s:    eU\\*L4;>>>>Lr-   c                 &    | j                  dd      S )NrE   T_get_argrm   s    r+   rE   zTestBase.constructor_args  s    }}/66r-   c                 &    | j                  dd      S )Nr  Tr  r  s    r+   r  zTestBase.extra_args  s    }}\400r-   c           
         || j                   v sJ || j                  vr|dz   }|dz   }|| j                  v r| j                  |   | j                  |<   n|| j                  v r" | j                  |          | j                  |<   nV|| j                  v s!J d| d| d| d| j                                 fd | j                  |         | j                  |<   |r| j	                  | j                  |         S | j                  |   S )Nr  r  z	Missing `z`, `z` or `z` for c                     t        | t              r| D cg c]
  } |       c}S t        | t        j                        r| j	                         S t        j
                  |       S c c}w rk   )r  r  r9   r  rc   r   )sizessmap_tensor_sizess     r+   r  z+TestBase._get_arg.<locals>.map_tensor_sizes  sW    !%.=BCU 0 3UCC#E5<<8$||~-${{511	  Ds   A')r  r  r  r  r  )rm   r  unpackfn_name	size_namer  s        @r+   r  zTestBase._get_arg  s   t/////t&UlGwIt)))(,(:(:4(@%D...(C(:(:7(C(E% D$6$66 \vT)F7)6$--/IZ[\62 )99K9KI9V(W%6<t||DOOD12W$//RVBWWr-   c                 &    | j                  d|      S )Nr  r  )rm   r  s     r+   
_get_inputzTestBase._get_input  s    }}Wf--r-   c                     t         rk   rE  )rm   	test_cases     r+   __call__zTestBase.__call__  s    !!r-   ) NNr  )rr   rs   rt   r  r  r  r  propertyrE   r  r  r  r  rl   r-   r+   r  r    sO    E 7 7 1 1X6."r-   r  c            	       l     e Zd Zededej                  dedefd       Z fdZd Z	d Z
d	 Zd
 Z xZS )
ModuleTestr  r  r  rI  c                     t         rk   rE  )rm   r  r  r  s       r+   _do_testzModuleTest._do_test  rH  r-   c                    t        |   |i | |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd	      | _        |j                  d
d      | _	        |j                  dd       | _
        | j                  t        j                         | _
        y y )Nrh  TrR   r   r_   !FIXME_no_cuda_gradgrad_comparisonFr   g-C6*?r  rK   )superr  getrh  should_test_cudashould_test_pickler_   r  r   r  rK   r9   r  rm   rn   rp   	__class__s      r+   r  zModuleTest.__init__  s    $)&)$jj)94@ &

; ="(**Xt"<$jj)94@JJ:EB 	.K6"(**-A5"I#ZZ>%!&!8!8!:D &r-   c           	      f   t        | j                        5   | j                  | j                   }| j	                         }| j
                  a|j                  ||      }t        |      }t        |      }| j                  ||j                  |      d   |      }|j                  ||d       | j                  r
	 d d d        y | j                  |||       | j                  rt        j                         5 }|j                  ||       t        j                   ||       |j#                  d       t        j$                  |      }	|j                  |j                  ||      |j                  |	|             d d d        | j'                  |||       d d d        y # 1 sw Y   %xY w# 1 sw Y   y xY w)Nr   F)exact_dtype)r   rK   r   rE   r  rH   rG  r   rL  assertEqualr  test_noncontigr  tempfileTemporaryFiler9   saveseekloadr  )
rm   r  r  r  out	ref_input
ref_moduleexpected_outr?  module_copys
             r+   r  zModuleTest.__call__  ss   t112%T%%t'<'<=FOO%E  ,((7$UO	%f-
#00I<U<UV\<]^_<`blm%%c<U%K&& 32 	659&&++-&&vu5JJvq)FF1I"'**Q-K)))*<*<VU*KYM_M_`kmrMst . MM)VU3/ 32  .-! 32s+   B$F'3F'6BF7F'F$	 F''F0c                 Z    t        |t              r|D cg c]  } j                  |       c}S t        |t              rt         fd|D              S |}|j	                         }|}t        |      D ]  }|j                  |      dkD  s|dz   } n t        j                  t        j                  |      |g|      j                  |d      j                         }|j                         dk(  s%|j                         dk(  s|j                         rJ |j                  |_        |S c c}w )Nc              3   @   K   | ]  }j                  |        y wrk   )noncontiguize)r  orm   s     r+   r  z+ModuleTest.noncontiguize.<locals>.<genexpr>  s     <1++A.r\  r7   r   )r  r  r  r  rR  r  rd   r9   r$  
empty_likeselectry  rq  is_contiguousr  )rm   objr  r+  ndimrR  r  	noncontigs   `       r+   r  z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```"("6"6	# 8s   D(c           	      X   t        |t        j                        r|j                         dk(  ry t	        d |D              ry |j                  |       |j                  |       t               5  |j                  ||      }t        |dd      r|d   }|j                  |j                        j                         }|j                         }t        |j                  ||||            }t        |j!                  |      d         }d d d        | j#                  |      }| j#                        }	t%        dd      D ]  \  }
}|
r|n|}t        |r|n|	      }|j                  |       |j                  |       t               5  |j                  ||      }t        |dd      r|d   }|j                  ||||      }|j'                  |       |j'                  |d	d
       |j'                  |j!                  |      d          d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   c              3   x   K   | ]2  }t        |t        j                        s|j                         d k(   4 yw)r   N)r  r9   r  rR  )r  r?   s     r+   r  z,ModuleTest.test_noncontig.<locals>.<genexpr>#  s(     JUjELL.Iquuw!|Us   ::return_indicesFr7   TFrQ   )r3  g-C6?atolrtol)r  r9   r  rR  anyrN  rb  r   rG  r%   r%  r  normal_rV  r   rR  rL  r  r   r  )rm   r  r  r  r  rO  rr  ro  nc_inputnc_grad_outputcontig_icontig_gr?   gor  r`  s                   r+   r  zModuleTest.test_noncontig  s   eU\\*uyy{a/?JUJJ''/""5)''6Fv/7 **V\\2::<K\\^Fy2265&+VWGy88@CDG   %%e,++K8")-"BHh!xA +~FB++F3&&q)!#((36#3U;a&C **61c2>%%c62%%dG$Q%G%%i&?&?&G&JGT $# #C  $ $#s   .BHBH H H)	c           	      
   t         r| j                  st        j                  d      t	        | j
                        5  | j                         }t        j                  t        j                  i}t        |t              r|n|f}t        d |D              }t        ||      } | j                  | j                   } | j                  | j                   j                         j!                         }|j#                  |      }	|j#                  |      }
t%        |	d   |
d         D ]   \  }}|j&                  j)                  |       " |j+                  |       |j+                  |       |j-                  |       |j-                  |       |j/                  ||      }|j/                  ||      }t1        |dd      r
|d   }|d   }|j3                  ||| j4                  dd       t7        d      D ]  }|j9                         j;                         }|j=                  |      }|j?                  ||||      }|j?                  ||||      }|j3                  ||| j4                  dd       t%        |	d	   |
d	         D ]$  \  }}|j3                  ||| j4                  d
       &  | j@                  r| jB                  s || } || }t1        |dd      r
|d   }|d   }t        jD                  |d      }|j=                  |      jG                         }d|_$        t        jJ                  jM                  ||t        |jO                               z   |d      }t        jJ                  jM                  ||t        |jO                               z   |d      }t%        ||      D ]%  \  }}|j3                  ||| j4                  dd       ' |rc|jQ                         jS                         tQ        d |D              z   }|jQ                         jS                         tQ        d |D              z   }nF|jQ                         tQ        d |D              z   }|jQ                         tQ        d |D              z   }t        jJ                  jM                  |||fz   t        |jO                               z   d      }t        jJ                  jM                  |||fz   t        |jO                               z   d      }|j3                  | j4                  dd       t%        ||      D ]%  \  }}|j3                  ||| j4                  dd       ' | jU                  |||       d d d        y # 1 sw Y   y xY w)NExcluded from CUDA testsc              3      K   | ]6  }t        |t        j                        xr |j                  j                   8 y wrk   )r  r9   r  r   
is_complexr  r;   s     r+   r  z'ModuleTest.test_cuda.<locals>.<genexpr>N  s1     &scr^_z!U\\'B'YqwwGYGY'Ycrs   <>)type_mapr   r  Fr  r  r  rT   r7   r  Trn  )rP  c              3   X   K   | ]"  }|j                         j                          $ y wrk   rT  r3  r  r7  s     r+   r  z'ModuleTest.test_cuda.<locals>.<genexpr>        >eVdQRquuw{{}Vd   (*c              3   X   K   | ]"  }|j                         j                          $ y wrk   r  r  s     r+   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  r  r  c              3   <   K   | ]  }|j                           y wrk   rT  r  s     r+   r  z'ModuleTest.test_cuda.<locals>.<genexpr>       8Y.Q.re  c              3   <   K   | ]  }|j                           y wrk   r  r  s     r+   r  z'ModuleTest.test_cuda.<locals>.<genexpr>  r  re  )retain_graph)+r   r  unittestSkipTestr   rK   r  r9   rc   r  r  r  r  r   r   rE   cudarL  r  r  copy_rb  rN  rG  r%   r  r   r  rV  r  r   rR  r_   r  
randn_likery  r  autogradr`  r  rT  r3  r  )rm   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_outputrA   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+   rR   zModuleTest.test_cudaD  s	    5 5##$>??t112)Iekk2H+5i+Gii\O#&&scr&s#s $_xHO)))4+@+@AJ)))4+@+@AGGINNPJ!11*=I!11*=I #IaL)A, ?u

  ' !@ &&7&&7++J7++J7"++JHJ"++JHJz#3U;']
']
!!*jt~~TUch!i 1X!+!1!1!3!;!;!=!/!7!7
!C ) 3 3JQ[]k l ) 3 3JQ[]k l%%m]^_mr%s(+IaL)A,(G$GW))'7VW)X )H  ""4+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''U0)rr   rs   rt   r   r   rv   rw   r  r  r  r  r  rR   __classcell__r  s   @r+   r  r    sR    "# "ryy " " " ";44*#UJ[Hr-   r  c                       e Zd Zd Zy)InputVariableMixinc                 J    t         j                  | d      }fd |      S )NFc                     t        | t        j                        r)| j                         s| j	                         rd| _        | S  t        |       fd| D              S )NTc              3   .   K   | ]  } |        y wrk   rl   )r  rV  map_variabless     r+   r  zGInputVariableMixin._get_input.<locals>.map_variables.<locals>.<genexpr>  s     Aqt}T2q   )r  r9   r  is_floating_pointr  r  r  )r?   r   s    r+   r   z4InputVariableMixin._get_input.<locals>.map_variables  sH    !U\\*&&(ALLN&*AOtAwAqAAAr-   )r  r  )rm   r  r   s     @r+   r  zInputVariableMixin._get_input  s(    ##D%0	B U##r-   N)rr   rs   rt   r  rl   r-   r+   r  r    s    $r-   r  c                   @     e Zd Z fdZd Zd Zd Zed        Z xZ	S )NewModuleTestc                 z   t        |   |i | |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  d	d
      | _	        |j                  dd      | _
        |j                  dd      | _        |j                  dd      | _        |j                  dd       | _        |j                  dd      | _        |j                  dd      | _        y )Nr  Fcheck_inplacer_   Tskip_doubler  rI   rJ   r]   test_cpur5  r`   r  r   supports_fwgrad_bwgrad)r  r  r  r  r&  r_   r'  r  rI   rJ   r(  r5  r`   r  r   r)  r  s      r+   r  z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           	         t        d j                         D              }t        |      fd}| j                  r6dk(  sJ t	        j
                  |d         }j                  |d   |       n@j                  t        |||z   | j                  | j                  | j                               | j                  rAj                  t        |||z   | j                  | j                  | j                               y y )Nc              3       K   | ]  }|  y wrk   rl   r  s     r+   r  z1NewModuleTest._check_gradients.<locals>.<genexpr>  s     6"5Qq"5r  c                  6    |rJ j                  | d        S rk   )rG  )inputs_and_paramsrp   r  
num_inputsr  s     r+   fn_to_gradcheckz7NewModuleTest._check_gradients.<locals>.fn_to_gradcheck  s&    :%%f.?.LMMr-   r7   r   )r`   	fast_modecheck_forward_ad)r`   r0  check_fwd_over_rev)r  r  r  r5  r9   r"  r  
assertTruer   r`   r  r   r_   r   r)  )rm   r  r  input_tupleparamsr/  test_input_jacobianr.  s    ``    @r+   _check_gradientszNewModuleTest._check_gradients  s    6&"3"3"566%
	N $$?"?"'"9"9+a."I$$V[^=PQ  ?K&<P>B>U>U595M5M<@<T<T"V W
   f@TBFBYBY9=9Q9QBFB]B]"_ ` r-   c                    t        j                         }t        j                  d       t        |t              r|n|f}| j                  |       j                          | j                  rt        |      dk(  sJ |d   } | j                  | j                  ddi}|j                  }t               5   |      }d d d        j                  |j                  |       t        |      }	|	j                         }
t               5   ||
      }d d d        j!                  |
j                  |       j                         |j"                  j                         j%                         }|j&                  7t        j(                         5  |j&                  j+                          d d d        |	j&                  7t        j(                         5  |	j&                  j+                          d d d        |j-                  |       |j-                  |       j                  |j&                  |	j&                         dfd	}t/        d |D              rt0        rt	        d |D              }j3                         j5                           |   |t         j4                  j6                  d       t         j4                  j9                         dkD  rt	        d |D              }j5                  d       t         j4                  j;                  d      5   |  d d d         |t         j4                  j6                  d       n@d	 fd
fdfdt	        fd|D              }j3                           |   |t         j6                         t	        fd|D              }j=                           |   |t         j>                         t0        r| j@                  rt	        fd|D              }j3                         j5                           |   |t         j4                  j6                  d       t	        d |D              }jC                           |   |t         j6                         t	        d |D              }j5                           |   |t         j4                  j6                  d       | jD                  rYt         jF                  jD                  jI                  d      5   |   |t         j4                  j6                  d       d d d        t         j4                  j9                         dk\  rqt	        d |D              }j5                  d       t         j4                  j;                  d      5   |  d d d         |t         j4                  j6                  d       | jJ                  sXt	        fd|D              }j=                         j5                           |   |t         j4                  j>                  d       | jL                  sXt	        fd|D              }jO                         j5                           |   |t         j4                  jP                  d       t        j                  |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   WxY w)Nr7   r   inplaceTc                     j                         D ]7  }j                  ||        |j                  |j                         |       9 y rk   )r  assertIsInstancer  
get_device)tensor_type	device_idr@   r  r  s      r+   assert_module_parameters_arez<NewModuleTest._do_test.<locals>.assert_module_parameters_are	  sB    &&(**1k:())!,,.)D )r-   c              3   P   K   | ]  }t        |t        j                           y wrk   )r  r9   
LongTensorr  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s     D1z!U--.s   $&c              3   <   K   | ]  }|j                           y wrk   r  r  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s     >+Q+re  c              3   >   K   | ]  }|j                  d         ywr  rC  r  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>  s     #C{!AFF1I{   c                     | j                         r| j                  |      S | j                         r| j                  |      S | S rk   )r  r   r"  )r+  realr  s      r+   to_typez'NewModuleTest._do_test.<locals>.to_type  s<    $$&!99W----/!99T?*!Mr-   c                 4     | t         j                  d       S rk   )r9   float16r7  rH  s    r+   to_halfz'NewModuleTest._do_test.<locals>.to_half'  s    q%--66r-   c                 P     | t         j                  t         j                        S rk   )r9   float32	complex64rK  s    r+   	to_singlez)NewModuleTest._do_test.<locals>.to_single+  s    q%--AAr-   c                 P     | t         j                  t         j                        S rk   )r9   float64r  rK  s    r+   	to_doublez)NewModuleTest._do_test.<locals>.to_double.  s    q%--1A1ABBr-   c              3   .   K   | ]  } |        y wrk   rl   r  r;   rP  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>2       Bk	!kr!  c              3   .   K   | ]  } |        y wrk   rl   r  r;   rS  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>8  rV  r!  c              3   J   K   | ]  } |      j                           y wrk   rC  rU  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>B  s     #MAIaL$5$5$7    #c              3   <   K   | ]  }|j                           y wrk   )cpur  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>H  s     #A[AEEG[re  c              3   <   K   | ]  }|j                           y wrk   rC  r  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>N  s     #BkAFFHkre  F)enabledrQ   c              3   >   K   | ]  }|j                  d         ywr  rC  r  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>\  s     'G;aq	;rE  c              3   J   K   | ]  } |      j                           y wrk   rC  rX  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>d  s     'Q[	!(9(9(;[rZ  c              3   J   K   | ]  } |      j                           y wrk   rC  )r  r;   rL  s     r+   r  z)NewModuleTest._do_test.<locals>.<genexpr>k  s     'O;a
(9;rZ  rk   ))r9   get_num_threadsset_num_threadsr  r  r7  __repr__r&  r  r   rE   _versionr   r  r   rV  assertNotEqualr  r  r`  no_gradr&  backwardallr   r  r  FloatTensordevice_countrQ  rc   DoubleTensorr  r\  r  backendsflagsr'  r  half
HalfTensor)rm   r  r  r  num_threadsr4  	module_ipinput_versionr  input_ipinput_ip_clone	output_ipr`  r?  rS  rL  rP  rH  s    ``           @@@@r+   r  zNewModuleTest._do_test  s    ++-a )%7eeXi= 	 {#q(((NE((($*?*?NNI!NNM!# $!!%..-@H%^^-N!#%n5	 $$$^%<%<mL!!&)4;;$$&..0Dzz%]]_JJ$$& %}}(]]_MM'') %OOD!t$!!%**hmm<	E 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 (););<T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   <	Z#	Z0Z=[
['[$[1#Z-0Z:=[
[[!$[.1[;c                 &    | j                  dd      S NrK  Fr  r  s    r+   _get_targetzNewModuleTest._get_targetq      }}Xu--r-   c                 &    | j                  dd      S NrE   Fr  r  s    r+   rE   zNewModuleTest.constructor_argst      }}/77r-   )
rr   rs   rt   r  r7  r  ry  r  rE   r  r  s   @r+   r$  r$    s/    R `8Q+f. 8 8r-   r$  c                        e Zd Zej                  j                  dh      Z fdZd ZddZd Z	e
d        Ze
d        Z xZS )	CriterionTestrK  c                 j   t        |   |i | |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  dd      | _        |j                  d	d      | _	        |j                  d
d      | _
        |j                  dd      | _        |j                  dd      | _        |j                  dd       | _        | j                  t        j                         | _        y y )NrR   Tr  Fr_   r  r|  rt  r(  rI   rJ   r]   r`   rK   )r  r  r  r  r  r_   r  r|  rt  r(  rI   rJ   r`   rK   r9   r  r  s      r+   r  z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                 (  
 t        | j                        5   | j                  | j                   
| j	                         }
j                          t        
       | j                         }| j                  g|j                  
||| j                        }t        |      t        |      f| j                  z   
fz   } | j                  | }|j                  ||       | j                  r
	 d d d        y t        d 
j                         D              }t!        |t              s|f|z   |fz   }
fd}	n||z   |fz   }
fd}	t#        |	|| j$                         | j&                  rt)        |	|| j$                         d d d        y # 1 sw Y   y xY w)Nr  c              3       K   | ]  }|  y wrk   rl   r  s     r+   r  z)CriterionTest.__call__.<locals>.<genexpr>  s     :&91&9r  c                      | |      S rk   rl   )r  rK  r5  r  s      r+   apply_fnz(CriterionTest.__call__.<locals>.apply_fn  s    !%00r-   c                      | ||      S rk   rl   )r?  r@  rK  r5  r  s       r+   r  z(CriterionTest.__call__.<locals>.apply_fn  s    !&&&99r-   )r`   )r   rK   r   rE   r  rd  r|  ry  rH   _forward_criterionr  r   r  r  r  r  r  r   r`   r_   r   )rm   r  r  rK  r  ref_argsr  r5  inputsr  r  s             @r+   r  zCriterionTest.__call__  sm   t112%T%%t'<'<=FOO%E OOK%%'F  ,2265&UYUdUd2e$UOXf-=>PTZS\\0t00(;%%c<8&&# 32& :f&7&7&9::FeU+F*fY61 6)3: h4;R;RS""h4CZCZ[E 322s   CF5B
FFc                    d
fd	t         r| j                  st        j                  d      t	        | j
                        5  | j                         }| j                         } | j                  | j                   } | j                  | j                   } ||d      }|j                         s|j                         r	 ||      }|j                  |       |j                  |       t        |      }t        |      }	|j                          |t        j                   t        j"                  hv r9| j                         }| j                         } | j                  | j                   }|j%                  ||||      }
|j%                  |||	|      }|j'                  |
||t        j                   t        j"                  hv rdnddd	       |j)                  |||
||      }|j)                  ||||	|      }|j'                  |||t        j                   t        j"                  hv rdnddd	       d d d        y # 1 sw Y   y xY w)NFc                     t        | t        j                        r/| j                         j	                        j                        S t        | t              rt        fd| D              S | S )Nr   c              3   2   K   | ]  } |        y wrk   rl   )r  r  convert_dtyper   r  s     r+   r  zACriterionTest.test_cuda.<locals>.convert_dtype.<locals>.<genexpr>  s     QS]1e]CSs   )r  r9   r  ry  r   requires_grad_r  )r  r   r  r  s    ``r+   r  z.CriterionTest.test_cuda.<locals>.convert_dtype  sS    #u||,zz|U3BB=QQC'QSQQQ
r-   r  Tr  rS   g-C6:?r   r  r  )r   r  r  r  r   rK   r  ry  r   rE   r"  r  r  r   r  r9   ro  bfloat16r  r  _backward_criterion)rm   r  r   r  r  
cpu_targetr  r  	gpu_input
gpu_targetr	  r
  r  r  r  s                 @r+   rR   zCriterionTest.test_cuda  s*   	  5 5##$>??t112)I))+J)))4+@+@AJ)))4+@+@AJ &i=I++-1F1F1H*:u=
OOE"OOE" y)I
+JOO U^^44 OO-	!--/
-T--t/D/DE
"55j)Zdn5oJ"55j)Zdn5oJ!!*j/4U^^8T/TtZ^efty " { &99Iz:* : VM%99Iz:* : VM !!-/4U^^8T/TtZ^efty " {I 322s   G3I  I	c                 &    | j                  dd      S rx  r  r  s    r+   ry  zCriterionTest._get_target  rz  r-   c                 &    | j                  dd      S r|  r  r  s    r+   rE   zCriterionTest.constructor_args  r}  r-   c                 &    | j                  dd      S )Nr  Fr  r  s    r+   r  zCriterionTest.extra_args  s    }}\511r-   rk   )rr   rs   rt   r  r  unionr  r  rR   ry  r  rE   r  r  r  s   @r+   r  r  y  s^     #66<<hZH; #\J1{f. 8 8 2 2r-   r  c                    t        j                  |t         j                  |d      }|Et        j                  |t         j                  |      |z  j                         j                         } ||      }t        j                  ||      }|j                  |       |j	                         }	|j                         j	                         j                         }
|j	                         } |	|
      }|j                  |       | j                  ||||d       | j                  |j                  j                  |
j                  j                  ||d       y )NT)r   rQ  r  rP  )rQ  Fr  )r9   r   rN  r   r  r  r  r  rh  ry  r  r`  r  )r  oprQ  inp_dimsr  r>  r?  out1grad_input1op_bfp16r@  grad_input2out2s                r+   _test_bfloat16_opsr    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+$4dN&++**FKK,<,<4d`efr-   c                    |s|j                  d        ||      }|s&t        j                  |      }|j                  |       |r.| j	                  |j                         |j                                |s|j                         D ]H  }|j                  s| j	                  |j                  t        j                  |j                               J | j	                  |j                  t        j                  |             y y )NT)
r  r9   	rand_likerh  r  rd   r  r  r`  rf  )r  r  r  
check_size	inferencer  gOr@   s           r+   _test_module_empty_inputr    s    4 
+C__S!Rchhj#((*5""$A%%affe.>.>qvv.FG % 	chh(8(8(=>	 r-   c                       G d dt         j                         G fddt         j                        }         } |        }t        j                  ||      }|||fS )Nc                        e Zd Z fdZ xZS ) _create_basic_net.<locals>.Layerc           	          t         |           t        j                  t	        j
                  dd            | _        | j                  dt	        j                  dddd             y )NrX   rT   layer_dummy_bufr7   r  )	r  r  rv   r  r9   ro  layer_dummy_paramregister_bufferr  )rm   r  s    r+   r  z)_create_basic_net.<locals>.Layer.__init__  sJ    G%'\\%++a2C%DD"  !2EKK1a4KLr-   rr   rs   rt   r  r  r  s   @r+   Layerr    s    	M 	Mr-   r  c                   "     e Zd Z fdZ xZS )_create_basic_net.<locals>.Netc           	          t         |                   | _        t        j                  t        j                  dd            | _        | j                  dt        j                  dddd             y )NrX   rT   	dummy_bufr  r7   )
r  r  l1rv   r  r9   ro  dummy_paramr  r  )rm   r  r  s    r+   r  z'_create_basic_net.<locals>.Net.__init__  sR    GgDG!||EKK1,=>D  ekk!Q1.EFr-   r  )r  r  s   @r+   Netr    s    	G 	Gr-   r  )rv   rw   
Sequential)r  lr(  r  r  s       @r+   _create_basic_netr    sR    M		 MGbii G 	AA
aAa7Nr-   )r  )Nr  )Nr  r  )Nr  r  r  )r  rZ  )rZ  r  )r7   r7   Nr  )r   r  )rZ  rQ   r{  Fr  )rZ  )rl   r  Nr  )abcr   r  r  copyr   	functoolsr   r   r   	itertoolsr   operatorr	   mathr
   r9   
torch.cudatorch.nnrv   torch.nn.functional
functionalr   r   r&   $torch.testing._internal.common_utilsr   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   r   r   r   r   r  r  r,   r1   r   rc   module_testsrf   rx   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r6  r=  rD  rV  r[  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r#  r)  r6  r?  rH  rV  r\  rj  rp  rv  r  r  r  r  interpolater>  rR  r  gelureluSizenew_module_testsr  padding_modecpp_padding_moder  r  r  r  joinmapr|  cpp_paddingrG   r  r  non_linear_activations_no_batchr  __annotations__non_linear_activationactivation_test_infor  
extra_infoupdater  r  r  r  r  r
  r  r  r  r"  r)  r-  r0  r4  r8  rA  rL  rN  rf  r   r   r   rq  rb  r+  criterion_testsr  regression_criterion_no_batch
reductionsr  r"   regression_test_info!classification_criterion_no_batchr;  classification_cpp_parityr   rs  classification_test_inforC  r  r  r  r$  r  r  r  r  rl   r-   r+   <module>r     sn9       , ,         -0 0 0 F K # (  D D D&&	'| 	 >Zll	 	'J:ll
 	ll	 	#Nll 	6ll	 	#+] ll	Y6x6
$$ $(&$$$$ "$ $ "$ $$$ $ $"$$$,$.$.$"$$$,$"$$$,$"$"$"$"$""$$$$$$$"$"$"$"$*$$$$$$$$$($,6"H!#HH #$H '(	H
 %&H "#H *+H ,-H )*H H $%H -.H ()H /0H H  "#!H" !"#H$ %H& "#'H( )H* ()+H, #$-H. 01/H0 451H2 3H4 %&5H6 *+7H8 9H: %&;H< *+=H>  !?H@ '(AHB CHD  !EHF GHH +,IHJ +,KHL ()MHN ()OHP &'QHR -.SHT "#UHV ,-WHX 45YHZ #$[H\ &']H^ 67_H` %&aHb *+cHd +,eHf 	"@ll	gHz 	%Jll
{HP 	(Ull
QHf 	(Ull
gH| 	(Ull
}HR 	(Ull
SHh 	"@	iH| 	!FLll}HN 	 DJll	OHb 	#?Wll	cHv 	">Vll	wHJ 	#>Vll	KH^ 	*Jbll	_Hr 	"ppll	sHF 	%5allGH^ 	%7lll_Hv 	)nUll
wHL 	'E#ll
MHb 	/T#llcHz 	7d#ll{HR 	?u#llSHj 	:[#llkHD	 	'E#	E	HX	 	 =O#ll
Y	Hn	 	%=O#ll	o	HB
 	#D\ll	C
HV
 	"C[ll	W
Hj
 	*Ogll	k
H~
 	%5U#ll
HV 	%G5  #ll!WHz 	%?k#ll{HT 	)FX#ll
UHj 	#=OllkH| 	3=Oll}HN 	+L^llOH` 	*M_llaHr 	+N`llsHD 	*H"#ll
EHZ 	=["#ll[Ht 	=["$lluHN 	%J"#llOHf 	(U"#llgH~ 	*H"#	HR 	 DJ"#ll
SHh 	!FL"lliHz 	)PV"ll{HL 	#G_"ll	MH` 	"F^"ll	aHt 	*Rj"ll	uHH 	%*Q"ll	IH\ 	%Gt"ll]Ht 	&.U"lluHB 	&.U.llCHT 	&.U^UHd 	@GlleHt 	@XlluHF 	"CGllGHX 	"CXllYHj 	"7uGll	kH~ 	"7uGll	HR 	0@RLllSHb 	/XDLllcHt 	/XDLlluHF 	&R B7!GHV 	O~7#!WHf 	"@llgHt 	$B!lluHB 	#AMMT]^r)llCHT 	#AMMT]^r2UHd 	#AMMTXabr/lleHv 	#AMM2T]^q/llwHH 	#AMMT\lqr5
 (llIH` 	#AMMDW_otu5
 .llaHx 	#AMM2T\lqr5
 .llyHP 	#AMMT\lqr5
 1
QHf 	#AMMT\lpq4
 6llgH~ 	#AMM2T\lpq4
 <llHV 	#AMMS\]6 "8ll
WHl 	#AMMT]^6  )ll
mHB 	#AMMtZcd6  /ll
CHX 	#AMM2T]^6  /ll
YHn 	#AMMT]^6  2	oHB 	#AMMT^nst5
  *llCHZ 	#AMMT^nst5
  3
[Hp 	#AMMT)35J5
  0llqHJ 	#AMM2)35J5
  0llKHd 	#AMM8)35J5
  =lleH~ 	#AMM8)35J5
  =llHX 	#AMMTXbrvw4
  >llYHp 	#AMM8)34I4
  KllqHJ 	#AMMT]mrs5
  )llKHb 	#AMMT]mrs5
  2
cHx 	#AMMT)2%I5
  /llyHR  	#AMM2T]mrs5
  /llS Hj  	#AMM8)2%I5
  <llk HD! 	#AMM8)2%I5
  <llE!H^! 	#AMMTXaquv4
  =ll_!Hv! 	#AMM8)2$H4
  Jllw!HP" 	#AMMT]^6 #)ll
Q"Hf" 	#AMMT]^6 #2	g"Hz" 	#AMMSW^gh6 #/ll
{"HP# 	#AMM2T]^6 #/ll
Q#Hf# 	#AMMT_otu5
 #+llg#H~# 	#AMMT_otu5
 #4
#HT$ 	#AMM	15KW\^5
 #1llU$Hn$ 	#AMM2T_otu5
 #1llo$HJ% 	#AMM	PT)4DJ4
 #?llK%Hd% 	#AMM2T_ost4
 #?lle%H@& 	#AII264"llA&HP& 	#AII1EMMJJ(llQ&Hb& 	#AII153!*llc&Hr& 	#AII153"lls&HB' 	#AII1EMMJJ(llC'HT' 	#AII153*llU'Hf' 	#AII153*llg'Hx' 	#AII264,y'HH( 	#AMMr:7&llI(HX( 	#AMMq96!.llY(Hh( 	#AMMq96&lli(Hx( 	#AMMq96#lly(HH) 	#AMMq96#llI)HX) 	#AMMq96%Y)Hf) 	Eollg)Hx) 	Kully)HJ* 	*Ku%ll	K*H^* 	#1[ll_*Hp* 	!2\llq*HB+ 	.2\%ll	C+HV+ 	#N"llW+Hh+ 	&Alli+Hr+ 	&All	s+H~+ 	&@ll	+HJ, 	&+cA$llK,HZ, 	&9.ll[,Hh, 	-(1  !lli,HJ- 	-Q3/= *tllK-Hf- 	-'1 Dllg-H@. 	-Q3/= DllA.H\. 	!Q1aaff5= U*tll!].H@/ 	=&Vll
A/HV/ 	T!.llW/Hh/ 	Fjejj!Q01.lli/Hz/ 	&e4l" )
{/H V0 '*5U'W"L" 6li/ aQ(DIIc#w&7883>dQh&
u$<G$<<<"1#QK"#Q1gq!T<!P)8 <22= ?7 8H6H&M &'$~]3##ll!	
 'WL# 6
F6$h/6 e%RWR^R^_6 EPUP\P\]	6 55<<@6 
OU\\*6 _ell+6 
OU\\*6 ?ELL16 %,,/6 /5<<06 ?ELL16 _ell+6  ou||,!6" ou||,#6$ _ell+%6& _ell+'6( ell+. %,,/"ELL1 %,,/ell+"ELL156 !4T	? 8 =).! 3667LbQJ
+01 = BF"(4 TZ=@, Z^RU%IP [a14
  @D &, 	 4.  ]b*0 "L %: $*$:6.0844 4- D) &OD7llO 	1K@ ll	O( 	(U1KLll
)O> 	5R;K:ll?OV 	=b;KJ#llWOn 	>c;SK'lloOF 	1,8 llGOX 	'E",,'(NOM12C llYOp 	E[M llqOB 	BQ3llCOT 	5RBQ3llUOl 	&Kll	mOx 	&5[KllyOJ 	(\K llKO\ 	(Q\W ll]Ot 	*?M lluOL 	*BM ll
MOb 	.:pllcOr 	%=H ll	sOF 	%=H ll
GO\ 	%GA=M ll]Ov 	%!S .=T llwOR 	%RBell!CD~!"JEJJr$F G>=^ llSOn 	"B MlloO@ 	B Bll
AOV 	$2G llWOh 	)iDU iOx 	)RiDa 
yON	 	'K0S llO	O`	 	'PK0_ lla	Ox	 	'BQll	y	OD
 	'$%**Ru||<>pBQllE
OV
 	'$%**Ru||<>p>MllW
Oh
 	CN ll
i
O~
 	4Quzz!Q"&&q)//1668Hll
OV 	(UCBllWOn 	%IN ll
oOD 	@N ll
EOZ 	&CU ll
[Op 	&4Zuzz!Q"&&q)//1668OllqOH 	&(^CIllIO` 	&%IU ll
aOv 	&@U ll
wOL 	&9U ll
MOb 	&<U ll
cOx 	&?U ll
yON 	JVp9kllOOf 	<KY9kll
gO| 	C:Tv9All}OT 	JVp<kllUOl 	<KY<kll
mOB 	?KY@kll
COX 	L[i@{ll
YOn 	M\p@kll
oOD 	ZF A@{llEO\ 	?KYKkll
]Or 	M\pKkll
sOH 	L[iK{ll
IO^ 	F;TwKAll_Ov 	&4Z9k %llwOP 	&4Z<k %llQOj 	&4Z?k %llkOD 	$A@llEOT 	$'^CAI(ll	UOh 	$%\Arll
iO~ 	$&]CA &llOV 	=IllWOh 	-(8 ll	iO| 	'E",,'(NOM-.C  ll}OT 	;QX ll
UOj 	JGX	kO~ 	5R>L=llOV 	(Q\ ll	WOj 	"= Mll	kO~ 	.$%**R.*c+:i llOX 	 ,/>IR !ll!YO| 	D ELL.\0JK>IR ll}Oz 	- ,/>HQ !ll!{O^ 	,C ELL.\0JK>HQ ll_O~ 	!C ELL.\0JK>HQ llO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K" K"\CH CHL$ $E8&
 E8Pv2& v2rg&? r-   