
    Ph)                    L   U d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dl	Z	d dlZd dlmc mZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZ d d
lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z: e j                  jv                  e jx                  j                  jz                  jv                  e jx                  j                  j|                  jv                  e jx                  j                  j~                  jv                  e jx                  j                  j~                  jv                  gZ@e6e4   eAd<   e j                  j                  e j                  j                  e j                  j                  e jx                  j                  j~                  j                  e jx                  j                  j~                  j                  hZFe9e8   eAd<    eG e
e@D  cg c]#  } | j                  D cg c]  } eI| |       c}% c}}        ZJe6e8   eAd<   eJD cg c]	  }|eFvs| c}ZJi ZKe:e8eLf   eAd<   e@D ]W  ZMeMj                  D ]F  ZN eIeMeN      ZOeMj                  j                  dd      j                  dd      ZReOeKvs=eR deN eKeO<   H Y  edd      ZS G d de      Z;d ZT G d d      ZU G d d       ZV G d! d"e      ZW G d# d$      ZX G d% d&      ZYd' ZZd( Z[d) Z\d* Z]d+ Z^d, Z_d- Z`d. Zad/ Zbd0 Zcd1 Zdd2 Zed3 Zfd4 Zgd5 Zhd6 Zid7 Zjd8 Zkd9 Zld: Zmd; Znd< Zod= Zpd> Zqd? Zrd@ ZsdA ZtdB ZudC ZvdD ZwdE ZxdF ZydG ZzdH Z{dI Z|dJ Z}dK Z~dL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm ZddoZdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Z e(ejd                  ddexr e1 d       e(ejd                  ddexr e1 d       e(ejd                  ddexr e1 d       e(ejd                  ddexr e1e jf                  fd       e( e&dg      ddd       e( e&dg      ddd      fZd Zd Zd Zd Zd Zd Zg  eYe j                  jv                  eg e(e%      f       eYe j                  jx                  e0eh e(e%       e(ejd                  ddd       f       eYe j                  jz                  e0ei e( ej|                  d      dd       e(e%      f       eYe j                  j~                  ej e(e/de j                  g      f       eYe j                  j                  e0ek e(e/de j                  g      f       eYe j                  j                  e0el e( ej|                  d      dd       e(e%      f       eYe j                  j                  ed e(e/de j                  g      f       eYe j                  j                  ee e(e/de j                  g       e(ejd                  ddd d      f       eYe j                  j                  efe0 e( ej|                  d      dd       e(e%      f       eYe j                  j                  dem e(e%       e(ejd                  ddd        e(ejd                  ddd       f       eYe j                  j                  den e(e%       e(ejd                  ddd        e(ejd                  ddd       f       eYe j                  j                  deo e(e%       e(ejd                  ddd        e(ejd                  ddd       f       eYe j                  j                  er e(e/de j                  g      f       eYe j                  j                   eepddn      e0d e( e!d      dd       e(e"dde j                  g       e(e/de j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepddn      e0d e( e!d      dd       e(e"dde j                  g       e(e/de j                  g       e(ejd                  ddde j                  g       e(ejd                  ddde j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepddn      e0d e( e!d      dd       e(e"dde j                  g       e(e%       e(ejd                  dd      f e( e#e j                  di      dd      f       eYe j                  j                   eepddnd      e0d ee j                         e( e!d      dd       e(e"dde j                  g       e(e/d ee j                  e j                  e j                               e(ejd                  dde j                  fd       e(ejd                  dde j                  f      f e( e#e j                  di      dd       e( e#e j                  di      dd      f       eYe j                  j                   eepddnd      e0d ee j                         e( e!d      dd       e(e"dde j                  g       e(e/d ee j                  e j                  e j                               e(ejd                  dde j                  e j                  e j                  f       e(ejd                  ddde j                  e j                  g       e(ejd                  ddde j                  g       e(ejd                  dde j                  fd       e(ejd                  dde j                  f      f e( e#e j                  di      dd       e( e#e j                  di      dd      f       eYe j                  j                   eepddnd       ee j                        e0d e( e!d      dd       e(e"dde j                  g       e(e%       e(ejd                  dd       e(ejd                  ddde j                  e j                  ge1       e(ejd                  dde j                  fd       e(ejd                  dde j                  f      f e( e#e j                  di      dd       e( e#e j                  di      dd       e( e#e j                  di      dd      f       eYe j                  j                  eq e(e/de j                  g      f       eYe j                  j                  ee0 e(e%       e( ej|                  d      dd      f       eYe j                  j                  ee0 e(e%       e( ej|                  d      dd      f       eYe j                  j                  e e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                   eepdd      e0d e( e!d      dd       e(e"dde j                  g       e(e$       e(e/de j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepdd      e0d e(e/de j                  g       e( e!d      dd       e(e"dde j                  g       e(e$       e(ejd                  ddde j                  g       e(ejd                  ddde j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepdd      e0d e( e!d      dd       e(e"dde j                  g       e(e$       e(e%       e(ejd                  dd      f e( e#e j                  di      dd      f       eYe j                  j                   eepddd      e0d e( e!d      dd       e(e"dde j                  g       e(e$       e(e/de j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepddd      e0d e( e!d      dd       e(e"dde j                  g       e(e$       e(e/de j                  g       e(ejd                  ddde j                  g       e(ejd                  ddde j                  g      f e( e#e j                  di      dd      f       eYe j                  j                   eepddd      e0d e( e!d      dd       e(e"dde j                  g       e(e$       e(e%       e(ejd                  dd      f e( e#e j                  di      dd      f       eYe j                  j                  eZ e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e[ e( ee j                   e dd      e j                   e dd      i      ddd      g e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e e( ej|                  d      dd       e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  e e( ej|                  d      dd       e( ej|                  d      dd       e(e/de j                  g       e(ejd                  ddd d      f       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                  ee0 e(e%      f       eYe j                  j                  e\ e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  e] e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                  et e(e/de j                  g      f       eYe j                  j                  es e(e/de j                  g      f       eYe j                  j                  e edd       e(e/de j                  e j                  g       e( ej|                  d      dd       e( ee j                   e dd      i      ddd       e( ej|                  d      ddd       e( ej|                  d      ddd       e( ej|                  d      dde1d      f       eYe j                  j                  e e(e%      f       eYe j                  j                  e e(e/de j                  g       e(ejd                  ddd d      fdn«       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                   eedë      d e(e/de j                  g       e( ej|                  d      dd      fī       eYe j                  j                   eedë      d e(e/de j                  g       e( ej|                  d      dd      fī       eYe j                  j                   eedë      d e(e%       e( ej|                  d      dd      fī       eYe j                  j                  e e(e%      f       eYe j                  j                  e e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  de e( ej|                  d      ddd      g e( ej|                  d      dd       e(ejd                  ddū       e(e/de j                  g      fƫ       eYe j                  j                  de e( ee j                   e dd      i      ddde2ǫ       e( ej|                  d      ddd      g e( ej|                  d      dd       e(e/de j                  g      fƫ       eYe j                  j                  e e( ej|                  d      ddd      g e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  e e( ej|                  d      ddd      g e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  de e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  e e( ej|                  d      dd       e(e/de j                  g      f       eYe j                  j                  eu e(e/de j                  g       e(ejd                  dddȄ d      f       eYe j                  j                  ew e(e/de j                  g      f       eYe j                  j                  ev e(e%      f       eYe j                  j                  ex e(e%      f       eYe j                  j                   eedɫ      e e(e/de j                  g      fʫ       eYe j                  j                  ee e(e/de j                  g      fʫ       eYe j                  j                   ee e(e/de j                  g      fʫ       eYe j                  j                  e e(e/de j                  g       e(ejd                  ddd˄ d      f       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                  ez e(e/de j                  g      f       eYe j                  j                  e{ e(e/de j                  g      f       eYe j                  j
                  e| e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e} e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e~ e(e/de j                  g       e( ej|                  d      dd      f       eYe j                  j                  e e(e%      f       eYe j                  j                  e e(e%      f       eYe j                  j                  e e(e/de j                  g      f       eYe j                  j                  e e(e/de j                  g       e(ejd                  ddd̄ d      f       eYe j                  j                  e e(e/de j                  g       e(ejd                  ddd̈́ d      f       eYe j                  j                  e e(e%      f       eYe j                  j                  e e(e%      f       eYe j                  j                  d eedɫ      e e(e/de j                  g      feΫ       eYe j                  j                   d eednɫ      e e(e/de j                  g      feΫ       eYe j                  j"                  dee e(e%      feΫ       eYe j                  j$                  e e(e/de j                  g      f       eYe j                  j&                  ee0 e( ej|                  d      ddd       e( ej|                  d      ddd       e(e/de j                  g      f       eYe j                  j(                  ee0 e( ej|                  d      ddd       e( ej|                  d      ddd       e(e/de j                  g      f       eYe j                  j*                  e e(e/de j                  g      f       eYe j                  j,                  ee0 e( ej|                  d      ddd       e( ej|                  d      ddd       e(e/de j                  g      f       eYe j                  j.                  ee0 e( ej|                  d      ddd       e( ej|                  d      ddd       e(e/de j                  g      f       eYe j                  j0                  ey e(e%      f       eYe j                  j2                  e e(e/de j                  g      f       eYe j                  j4                  e e(e/de j                  g       e(ejd                  ddd      f       eYe j                  j6                  e e(e/de j                  g       e(ejd                  ddd      f       eYe j                  j8                  ee e(e/de j                  g      fʫ       eYe j                  j:                  ee e(e/de j                  g      fʫ       eYe j                  j<                  ee e(e/de j                  g       e(ejd                  dd      fʫ       eYe j                  j>                  e e(e/de j                  g      f       eYe j                  j@                  e e(e/de j                  g       e(ejd                  ddd      f       eYe j                  jB                  e e(e/de j                  g       e(ejd                  ddd      f      Z"e6eY   eAd<   yc c}w c c}} w c c}w )    N)deepcopy)Enum)wrapspartial)chainproduct)pack_padded_sequence)make_tensor)
TEST_CUDNN)floating_typesfloating_and_complex_types_andget_all_fp_dtypescomplex_types_and)
_TestParametrizer_update_param_kwargstoleranceOverridetolskipCUDAIfCudnnVersionLessThanskipCUDAIfRocmprecisionOverrideskipMetaskipMPSskipCUDAVersionIn)DecorateInfo)nllloss_referenceget_reduction)freeze_rng_state#set_single_threaded_if_parallel_tbb	skipIfMpsGRADCHECK_NONDET_TOLTEST_WITH_ROCM
IS_WINDOWS)
ModuleType)ListTupleTypeSetDictMODULE_NAMESPACESMODULES_TO_SKIPMODULE_CLASSESMODULE_CLASS_NAMESztorch. z.modules.TrainEvalMode)
train_only	eval_onlytrain_and_evalc                   <    e Zd ZdZdej
                  fdZd Zd Zy)moduleszQ PROTOTYPE: Decorator for specifying a list of modules over which to run a test. Nc                 Z    t        |      | _        |t        |      nd | _        || _        y N)listmodule_info_listsetallowed_dtypestrain_eval_mode)selfmodule_info_iterabler:   r;   s       qC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/testing/_internal/common_modules.py__init__zmodules.__init__E   s-     $%9 :5C5Oc.1UY.    c                 X   g }| j                   t        j                  k(  s| j                   t        j                  k(  r|j	                  d       | j                   t        j
                  k(  s| j                   t        j                  k(  r|j	                  d       |j                  s|d d }|S )NTF   )r;   r/   r0   r2   appendr1   train_and_eval_differ)r<   module_infotraining_flagss      r>   _get_training_flagszmodules._get_training_flagsJ   s      M$<$<<$$(D(DD!!$'  M$;$;;$$(D(DD!!%( 00+BQ/Nr@   c           
   #     K   |t        d      | j                  D ]  }t        |j                        }| j                  |j                  | j                        }| j                  |      }t        ||      D ]  \  }}|j                  }	t        |      dkD  r|	d|rdnd z  }	d|i}
t        |
d|       t        |
d|       	 t              fd	       }t        |j                  |j                  j                  |j                  |      }||	|
|f   y # t         $ r#}t#        d
|	 d|j$                   d       |d }~ww xY ww)NzThe @modules decorator is only intended to be used in a device-specific context; use it with instantiate_device_type_tests() instead of instantiate_parametrized_tests()rB   _
train_mode	eval_moderE   dtypetrainingc                       | i |S r6    )argskwargstests     r>   test_wrapperz/modules._parametrize_test.<locals>.test_wrappert   s    #T4V44r@   zFailed to instantiate z for module !)RuntimeErrorr8   r9   dtypesr:   intersectionrG   r   formatted_namelenr   r   r   get_decorators__name__device_type	Exceptionprintname)r<   rR   generic_cls
device_clsrE   rV   rF   rM   rL   	test_nameparam_kwargsrS   decorator_fnexs    `            r>   _parametrize_testzmodules._parametrize_testZ   sr      B C C  00K++,F"".,,T-@-@A!55kBN%,^V%D!5 (66	~&*1X\;$O!PPI !.{;$\7EB$\:xH4[5 !5 $+;+E+E{G[G[+/==*:P:PRW$YL (L,OO+ &E 18 ! 29+\+JZJZI[[\]^Hs+   C E
ADE
	E$EEE
)	r[   
__module____qualname____doc__r/   r2   r?   rG   rf   rO   r@   r>   r4   r4   B   s     [<@R_RnRn /
 %r@   r4   c                 <    | t         v r	t         |    S | j                  S r6   )r,   r[   )
module_clss    r>   get_module_common_namerl      s"    ''!*--"""r@   c                       e Zd ZdZddgZd Zy)FunctionInputz: Contains args and kwargs to pass as input to a function. rP   rQ   c                      || _         || _        y r6   )rP   rQ   )r<   rP   rQ   s      r>   r?   zFunctionInput.__init__   s    	r@   Nr[   rg   rh   ri   	__slots__r?   rO   r@   r>   rn   rn      s    D"Ir@   rn   c                        e Zd ZdZg dZddZy)ModuleInputzA Contains args / kwargs for module instantiation + forward pass. constructor_inputforward_inputdescreference_fnNc                 x    || _         || _        || _        | _        t	              fd       }|| _        y y )Nc                 x    t        |      t        |      }} | t        | j                               g|i |S r6   )r   r7   
parameters)mrP   rQ   rx   s      r>   copy_reference_fnz/ModuleInput.__init__.<locals>.copy_reference_fn   s;      (~x/?f $AtALLN';MdMfMMr@   )ru   rv   rw   rx   r   )r<   ru   rv   rw   rx   r}   s       ` r>   r?   zModuleInput.__init__   sP    !2*	(#< N !N !2D $r@   )Nr-   Nrp   rO   r@   r>   rs   rs      s    KNI2r@   rs   c                       e Zd ZdZdZdZy)ModuleErrorEnumz7 Enumerates when error is raised when testing modules. r   rB   N)r[   rg   rh   ri   CONSTRUCTION_ERRORFORWARD_ERRORrO   r@   r>   r   r      s    AMr@   r   c                   :    e Zd ZdZg dZej                  eddZy)ErrorModuleInputzw
    A ModuleInput that will cause the operation to throw an error plus information
    about the resulting error.
    module_error_inputerror_on
error_typeerror_regex)r   r   c                <    || _         || _        || _        || _        y r6   r   )r<   r   r   r   r   s        r>   r?   zErrorModuleInput.__init__   s"     #5 $&r@   N)	r[   rg   rh   ri   rq   r   r   rU   r?   rO   r@   r>   r   r      s"    
 PI
 *<<(		'r@   r   c            	       Z    e Zd ZdZdd e       dddddddZd	 Zed
        Zed        Z	y)
ModuleInfoz+ Module information to be used in testing. rO   NT        F)skips
decoratorsrV   supports_gradgradgradcheck_nondet_tolmodule_memformat_affects_outrD   module_error_inputs_funcc       	             || _         || _        g |r|ng |r|ng | _        || _        || _        || _        || _        |	| _        |
| _        y r6   )	rk   module_inputs_funcr   rV   r   r   r   rD   r   )r<   rk   r   r   r   rV   r   r   r   rD   r   s              r>   r?   zModuleInfo.__init__   s\     %"4Z:Z2Z5%VXZ!2$8!,H)%:"(@%r@   c                     t         g}| j                  D ]U  }t        |t              r2|j	                  |||||      s)|j                  |j                         E|j                  |       W |S r6   )r   r   
isinstancer   	is_activeextendrC   )r<   
test_classrb   devicerL   rc   result	decorators           r>   rZ   zModuleInfo.get_decorators   s]    56I)\2&&z9fe\ZMM)"6"67i( ) r@   c                 ,    t        | j                        S r6   )rl   rk   r<   s    r>   r_   zModuleInfo.name   s    %doo66r@   c                 :    | j                   j                  dd      S )Nr.   rI   )r_   replacer   s    r>   rX   zModuleInfo.formatted_name   s    yy  c**r@   )
r[   rg   rh   ri   r   r?   rZ   propertyr_   rX   rO   r@   r>   r   r      sU    5  &(#'&).3',*.A0 7 7 + +r@   r   c           
      $   t        t        |||      }t        t        dd      t         |d            d       t        t        ddd	      t         |d            d
d       t        t        dd      t         |d            dd       g}|S )Nr   rL   requires_grad
         r   )inputc                     t        j                  ||d   j                               |d   j                  dd      j	                  dd      z   S )Nr   rB   r   r   )torchmmtviewexpand)r|   pr   s      r>   <lambda>z/module_inputs_torch_nn_Linear.<locals>.<lambda>   sC    UXXeQqTVVX5NQRSTQUQZQZ[\^`QaQhQhijlmQn5nr@   ru   rv   rx   Fbiasno_biasc                 P    t        j                  ||d   j                               S )Nr   )r   r   r   r|   r   is      r>   r   z/module_inputs_torch_nn_Linear.<locals>.<lambda>   s    !QqTVVX1Fr@   rt         no_batch_dimc                     t        j                  |j                  dd      |d   j                               j                  d      |d   z   S )NrB   r   r   )r   r   r   r   r   s      r>   r   z/module_inputs_torch_nn_Linear.<locals>.<lambda>   s;    !&&B-11R1W1WXZ1[^_`a^b1br@   r   r
   rs   rn   )rE   r   rL   r   rM   rQ   
make_inputmodule_inputss           r>   module_inputs_torch_nn_Linearr      s    V5P]^J 	mB&:"/j6I"J!n	p 	mB&F"/
70C"D"!F	H 	mAq&9"/
1">'!b	dM r@   c                 b   t        t        |||      }ddt        t        ddd      t         |d       |d                  t        t        dddd	
      t         |d       |d            dfd      t        t        ddd      t         |d       |d            dfd      g}|S )Nr   c                     t        j                  d||d   |      }|rp|j                  d   dk(  r|j                  d      |d   z   }|S ||d   j                  dd      j	                  |j                  d   |d   j                  d         z   }|S )Nzbn,anm,bm->bar   rB   r   )r   einsumshaper   r   )r|   r   x1x2r   r   s         r>   bilinear_reference_fnz>module_inputs_torch_nn_Bilinear.<locals>.bilinear_reference_fn  s    or1Q4<xx{aR1Q4/   !A$))Ar"2"9"9"((1+qtzzRS}"UUr@      r   r   )r   r   )r   r   r   Fr   r   c                      | |||d      S )NFr   rO   r|   r   r   r   r   s       r>   r   z1module_inputs_torch_nn_Bilinear.<locals>.<lambda>  s    6KAqRTVX_d6er@   rt   r   c           	      Z     | ||j                  dd      |j                  dd            S )NrB   r   )r   r   s       r>   r   z1module_inputs_torch_nn_Bilinear.<locals>.<lambda>  s1    6KAqRTRYRYZ[]_R`bdbibijkmobp6qr@   )Tr   )	rE   r   rL   r   rM   rQ   r   r   r   s	           @r>   module_inputs_torch_nn_Bilinearr     s    V5P]^J 	mAq!&<"/
60BJvDV"W!6	8 	mAq!%&H"/
60BJvDV"W"!e	g 	mAq!&<"/
1z!}"M'!q	sM r@   c                 (   |||fd}t        t        ||d      }di fdddifddd	ifd
d
difdd |d      j                         ifd |d      j                         ddfd |d      j                         ddfg}g }	|D ]  \  }
}|fd}|	j                  t	        t        di |t         |d      t        j                  d|      j                         j                  d      j                         j                               |
|              |	S )Nc                 ^    t        | ||d      j                  d      j                  |      S )NFr   rB   dim)r
   log_softmaxrequires_grad_)r   r   rL   r   s       r>   r   z2module_inputs_torch_nn_NLLLoss.<locals>.make_input#  s/    5u).00;0B>>R_C`	ar@   Fr   r-   reduction_sum	reductionsumreduction_nonenoneignore_indexr   weightsweightr   weights_ignore_index)r   r   weights_ignore_index_negr   c                     t        ||fi |S r6   )r   )r|   r   r   r   constructor_kwargss        r>   rx   z4module_inputs_torch_nn_NLLLoss.<locals>.reference_fn9  s    $Q@-?@@r@   )   r   r   r   rt   rO   )r   r
   absrC   rs   rn   r   emptyuniform_mulfloorlong)rE   r   rL   r   rM   rQ   r   make_weightcasesr   rw   r   rx   s                r>   module_inputs_torch_nn_NLLLossr   "  s?   !'uM a +fEQVWK 
R	;./	K01	.!,-	X{222456	KO,?,?,AST!UV	#B0C0C0EWY%Z[%E M$)  8J 	A 	-*M:L*M&3Jx4H49KK64R4[4[4]4a4abd4e4k4k4m4r4r4t'v!%1	3	
 %* r@   c                 >   t        t        |||      }t        t        ||d      }di fdddifdddifd	dd
ifg}g }	|D ][  \  }
}|	j                  t        t	        di |t	         |d       |d       |d      j                               |
t                     ] |	S )Nr   Fr-   r   r   r   reduction_meanmeanr   r   r   rB   rt   rO   )r   r
   rC   rs   rn   r   no_batch_dim_reference_fn)rE   r   rL   r   rM   rQ   r   make_targetr   r   rw   r   s               r>   &module_inputs_torch_nn_GaussianNLLLossr   G  s    V5P]^J+fEQVWK 
R	;./	K01	K01	%E M$)  -*M:L*M&3JqM4?N4>qM4E4E4G'I "%>@	
 %* r@   c                    fd} |dd      rdnd} |dd      } |dd	      }|Kt        |t              sJ j                         D ]&  \  }}	||v s|	||   }
|	j                  |
      |<   ( |D cg c]  }|j                  |       }}t	               5   | |i j                  |      }ddd       |r!t        |       }|d
k(  rj                  d      S S c c}w # 1 sw Y   3xY w)a  Reference function for modules supporting no batch dimensions.

    Unbatched inputs are unsqueezed to form a
    single batch input before passing them to the module.
    The output is squeezed to compare with the
    output of unbatched input to the module.

    Currently it only supports modules which return a single Tensor as output.
    You can bind the following kwargs.
    Kwargs:
        batch_first[bool] : If True, all the Tensors in `args` while be unsqueezed at dim `0` .
                        and output will be squeezed at dim `0` else dim `1` for both.
        kwargs_to_batchify[dict] : Dictionary specifying the name of the argument and dimension to unsqueeze.
                               Useful if there are few arguments whose batch dimension are different
                               from the ones selected by `batch_first`.
        is_criterion[bool] : Specify if the module is a criterion and handle the reduction for output accordingly.
    c                 V    j                  | |      }| v rj                  |        |S r6   )getpop)keydefaultvrQ   s      r>   get_and_popz.no_batch_dim_reference_fn.<locals>.get_and_popr  s*    JJsG$&=JJsOr@   batch_firstTr   rB   kwargs_to_batchifyNis_criterionFr   )r   dictitems	unsqueezer   squeezer   )r|   r   rP   rQ   r   	batch_dimr   r   kr   bdimr   single_batch_input_argsoutputr   s      `           r>   r   r   `  s   $ !51I$%94@~u5L%,d333LLNDAq&&1=)!,KK-q	 #
 HLLteuy9tL		+6v6>>yI 
 !!$	>>!$$M M		s   7C C%%C.c                 ~   |j                  dd      rdnd}d|v r|j                  d       d|v r|d   |d   j                  d      |d<   |D cg c]  }|j                  |       }}t               5   | |i |}|d   j	                  |      |d   j	                  d      fcddd       S c c}w # 1 sw Y   yxY w)a  Reference function for MultiheadAttention supporting no batch dimensions.

    Unbatched inputs are unsqueezed to form a
    single batch input before passing them to the module.
    The output is squeezed to compare with the
    output of unbatched input to the module.
    r   Tr   rB   key_padding_maskN)r   r   r   r   r   )r|   r   rP   rQ   r   r   r  r  s           r>   no_batch_dim_reference_mhar    s     ZZt4!I

=!V#/A(B(N%+,>%?%I%I!%L!"GKLteuy9tL		+6v6q	!!),fQi.?.?.BC 
	 M		s   B.40B33B<c                 r   t        |      dk(  r|\  }d}n$t        |      dk(  r|\  }}|j                  d      }|d   rdnd}|j                  d       j                  |      }|f}t               5   | |i |}|d   j	                  |      |d   j	                  d      fcddd       S # 1 sw Y   yxY w)a  Reference function for RNN and GRU supporting no batch dimensions.

    Unbatched inputs are unsqueezed to form a
    single batch input before passing them to the module.
    The output is squeezed to compare with the
    output of unbatched input to the module.
    rB   Nr   r   r   rY   r   r   r   r   	r|   r   rP   rQ   inphr   r  r  s	            r>   no_batch_dim_reference_rnn_grur    s     4yA~	TaQKKNM*I
JJ}
--	
"C"Ah		+6v6q	!!),fQi.?.?.BC 
		s   30B--B6c                    t        |      dk(  r|\  }d}n;t        |      dk(  r-|\  }}|d   j                  d      |d   j                  d      f}|d   rdnd}|j                  d       j                  |      }|f}t               5   | |i |}|d   j	                  |      |d   d   j	                  d      |d   d   j	                  d      ffcddd       S # 1 sw Y   yxY w)a  Reference function for LSTM supporting no batch dimensions.

    Unbatched inputs are unsqueezed to form a
    single batch input before passing them to the module.
    The output is squeezed to compare with the
    output of unbatched input to the module.
    rB   Nr   r   r   r	  r
  s	            r>   no_batch_dim_reference_lstmr    s     4yA~	TaQqT^^A!q 12M*I
JJ}
--	
"C"Ah		+6v6q	!!),vay|/C/CA/Fq	RSH\H\]^H_.`a 
		s   
A
CC'c                    |\  }\  }}|j                  d      |j                  d      |j                  d      ff}t               5   | |i |}|d   j                  d      |d   j                  d      fcddd       S # 1 sw Y   yxY w)zReference function for LSTMCell 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.
    r   rB   N)r   r   r   )	r|   r   rP   rQ   r  r  cr  r  s	            r>   no_batch_dim_reference_lstmcellr    s     KC!Q"}}Q/!++a.!++a.1QR		+6v6q	!!!$fQi&7&7&:; 
		s   0B  B	c                     dD cg c]C  }t        t        |      t         | d       | d            t        t        d      d|       E c}S c c}w )	N)r   r   r   r   r   r   Tr   no_batch_dim_ru   rv   rx   rw   )rs   rn   r   r   )r   r   s     r>   $generate_regression_criterion_inputsr    sb     34 3i 	+i@'
5(9:a>J !:N ,		

 34 4 4s   AAc                 d   t        t        |||      }t        t        d      t         |d            dt              t        t        d      t         |d                  t        t        d	d	      t         |d            d
      t        t        ddd      t         |d            d      gS )Nr   r   )kernel_size)r      r   rt   )r   r   r  ru   rv   r   strideru   rv   rw   rB   
stride_padr   r
   rs   rn   r   rE   r   rL   r   rM   rQ   r   s          r>    module_inputs_torch_nn_AvgPool1dr$    s    V5P]^J 	m&B"/
60B"C'!:	< 	mA&6"/
90E"F	HmD$&?"/
90E"F!	# 	mAq!&<"/
90E"F%	'( (r@   c                 R   t        t        |||      }t        t        d      t         |d            dt              t        t        d      t         |d                  t        t        dd      t         |d            d	      t        t        ddd
      t         |d            d	      t        t        dd      t         |d            d	      t        t        ddd      t         |d            d	      t        t        ddd
d      t         |d            d	      gS )Nr   r   r   r   r  r  r   rt   r   r   r  r  r  r  r   rB   rB   r!  rB   divisor_overridedivisordivisor_stridedivisor_stride_padr"  r#  s          r>    module_inputs_torch_nn_AvgPool2dr/    s   V5P]^J 	mF&;"/
90E"F'!:	< 	mF&;"/
<0H"I	KmFF&C"/
<0H"I!	# 	mFFF&K"/
<0H"I%	' 	mFQ&O"/
<0H"I"	$ 	mFFUV&W"/
<0H"I)	+ 	mFFF]^&_"/
<0H"I-	/'0 0r@   c                    t        t        |||      }t        t        d      t         |d            dt              t        t        d      t         |d                  t        t        dd      t         |d	            d
      t        t        ddd      t         |d	            d      t        t        ddd      t         |d	            d      t        t        ddd      t         |d            d      t        t        ddd      t         |d            d      t        t        ddd      t         |d            d      t        t        dd      t         |d            d      t        t        ddd      t         |d	            d      t        t        dddd      t         |d	            d      t        t        dddd      t         |d	            d      t        t        dddd      t         |d            d      t        t        dddd      t         |d            d       t        t        dddd      t         |d            d!      gS )"Nr   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r  r   r   r   r   r   r   r  r   rB   rB   rB   r!  r   )rB   r   rB   stride_pad_gpu_fixedkw_output)r   r   r   rB   )rB   rB   r   )r   r   r   r   r   stride_pad_gpu_general_outputr   r   stride1_pad0_gpu_inputstride_pad_gpu_input_nooverlapr*  r,  r-  r.  %divisor_stride_pad_gpu_fixedkw_output%divisor_stride_pad_gpu_general_outputdivisor_stride1_pad0_gpu_input&divisor_stride_pad_gpu_input_nooverlapr"  r#  s          r>    module_inputs_torch_nn_AvgPool3dr>    sQ   V5P]^J 	mI&>"/
<0H"I'!:	< 	mI&>"/
?0K"L	NmAy&A"/
?0K"L!	# 	mAq)&D"/
?0K"L%	' 	mAq)&D"/
?0K"L8	: 	mIq)&L"/
?0K"L8	: 	mAq!&<"/
?0K"L1	3 	mAq)&D"/
?0K"L9	; 	mIPQ&R"/
?0K"L"	$ 	mAyST&U"/
?0K"L)	+ 	mAq)VW&X"/
?0K"L-	/ 	mAq)VW&X"/
?0K"L@	B 	mIq)^_&`"/
?0K"L@	B 	mAq!a&P"/
?0K"L9	; 	mAq)VW&X"/
?0K"LA	CW-D -Dr@   c           
         t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      t        t        d	      t         |d            d
      gS )Nr   r   rB   r   r   singler   r   r   r   r  rB   
one_outputr"  r#  s          r>   (module_inputs_torch_nn_AdaptiveAvgPool1drD  J  s    V5P]^J 	mA&7"/
90E"F!	# 	mA&7"/
60B"C!:'	) 	mA&7"/
90E"F%	'
( 
(r@   c                    t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      t        t        d	      t         |d            d
      t        t        d      t         |d            d      t        t        d      t         |d            d      gS )Nr   r   rB   r   r   r  rA  r   r   r   r  r   r  rB   single_1x1outputr   r   tupler   N
tuple_noner"  r#  s          r>   (module_inputs_torch_nn_AdaptiveAvgPool2drM  Z  s    V5P]^J 	mA&7"/
<0H"I!	# 	mA&7"/
90E"F!:'	) 	mA&7"/
<0H"I+	- 	mF&;"/
<0H"I 	" 	mI&>"/
<0H"I%	'( (r@   c                    t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      t        t        d	      t         |d
            d      t        t        d      t         |d
            d      t        t        d      t         |d            d      gS )Nr   r   )r   r   r   r      rA  r   )r   r   r   rO  r   r  r   r   r   )r   r   r   r   rO  rJ  )Nr   r   rL  )r   r   r   )rB   rB   r   r   r  last_dimr"  r#  s          r>   (module_inputs_torch_nn_AdaptiveAvgPool3drR  o  s    V5P]^J 	mA&7"/
?0K"L!	# 	mA&7"/
<0H"I!:'	) 	mI&>"/
?0K"L 	" 	mL&A"/
?0K"L%	' 	mI&>"/
?0K"L#	%& &r@   c           	          t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      gS )	Nr   r   r@  rA  r   rB  r   r  r"  r#  s          r>   (module_inputs_torch_nn_AdaptiveMaxPool1drT    sb    V5P]^J 	mA&7"/
90E"F!	# 	mA&7"/
60B"C!:'	)	* *r@   c                 ^   t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      t        t        d	      t         |d            d
      t        t        d      t         |d            d      gS )Nr   r   rF  rA  r   rG  r   r  rI  rJ  rK  rL  r"  r#  s          r>   (module_inputs_torch_nn_AdaptiveMaxPool2drV    s    V5P]^J 	mA&7"/
<0H"I!	# 	mA&7"/
90E"F!:'	) 	mF&;"/
<0H"I 	" 	mI&>"/
<0H"I%	'( (r@   c                    t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            t        d      t        t        d	      t         |d            d
      t        t        d      t         |d            d      t        t        d      t         |d            d      t        t        d	      t         |d            d      gS )Nr   r   )r   r   r   r  rO  rA  r   )r   r   r  rO  r   r  rP  rJ  )r   Nr   rL  )r   r      	   r   single_nonatomic)r   r   r  r   r   tuple_nonatomicr"  r#  s          r>   (module_inputs_torch_nn_AdaptiveMaxPool3dr\    s    V5P]^J 	mA&7"/
?0K"L!	# 	mA&7"/
<0H"I!:'	) 	mI&>"/
?0K"L 	" 	mL&A"/
?0K"L%	' 	mA&6"/
;K0L"M+	- 	mI&>"/
;K0L"M*	,#- -r@   c                 P   t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            d      t        t        dd	d       t         |d            d
      t        t        dd	dd      t         |d            d      t        t        dd	ddd      t         |d            d      t        t        dd	dd      t         |d            d      t        t        dd	dd      t         |d            d      gS )Nr   r   r   affiner   r   )r   r   r   3d_inputMbP?affine_simple_average333333?F
not_affineTnot_tracking_stats3d_input_not_affine)r   r   rY  
zero_batchr   r#  s          r>   "module_inputs_torch_nn_BatchNorm1drg    s"   V5P]^J 	mB&8"/
70C"D!	# 	mA&7"/
90E"F#	% 	mBd&C"/
70C"D0	2 	mBc5&I"/
70C"D%	' 	mBc4&O"/
70C"D-	/ 	mAtS%&H"/
90E"F.	0 	mAtS%&H"/
90E"F%	''( (r@   c                    t        t        |||      }t        t        d      t         |d                  t        t        ddd       t         |d            d      t        t        ddd      t         |d            d	      t        t        dddd
      t         |d            d      t        t        ddddd
      t         |d            d      t        t        dddd
      t         |d            d      gS )Nr   r   r(  r  r`  2d_simple_averager   g?momentumFrc  Trd  r   rb  )r   r   r   r   rf  r   r#  s          r>   "module_inputs_torch_nn_BatchNorm2drk    s    V5P]^J 	mA&7"/
<0H"I	KmAtT&B"/
<0H"I,	. 	mAtS&A"/
<0H"I#	% 	mAtS%&H"/
<0H"I%	' 	mAtS$&N"/
<0H"I-	/ 	mAtS%&H"/
<0H"I%	'( (r@   c                    t        t        |||      }t        t        d      t         |d                  t        t        ddd       t         |d            d      t        t        ddd      t         |d            d	      t        t        dddd
      t         |d            d      t        t        ddddd
      t         |d            d      t        t        dddd
      t         |d            d      gS )Nr   r   r3  r  r`  3d_simple_averager   gffffff?rj  Frc  Trd  r   rb  )r   r   r   r   r   rf  r   r#  s          r>   "module_inputs_torch_nn_BatchNorm3drn    s    V5P]^J 	mA&7"/
?0K"L	NmAtT&B"/
?0K"L,	. 	mAtS&A"/
?0K"L#	% 	mAtS%&H"/
?0K"L%	' 	mAtS$&N"/
?0K"L-	/ 	mAtS%&H"/
?0K"L%	'( (r@   c                    |d   }|j                  dd      }|j                  dd      }t        t        |||      }	|ri gni ddig}
d\  }}}|ft        d	 t	        |      D              z   }d
|z   }t        j                  ddg|
      D cg c]N  \  }}t        |rt        ||fi |nt        |||fi |t         |	|r|n|            |rdnd|rd nt              P c}}S c c}}w )NNlazyF
transposedr   paddingsamerP  c              3   &   K   | ]	  }|d z     ywrK  rO   ).0r   s     r>   	<genexpr>z0module_inputs_torch_nn_ConvNd.<locals>.<genexpr>  s     *C(Q1q5(s   r  Tr-   r   rt   )
r   r   r
   rJ  range	itertoolsr   rs   rn   r   )rE   r   rL   r   rM   rQ   rp  rq  rr  r   conv_kwargs_listr  C_inC_outinput_no_batch_shapeinput_batch_shape
with_batchconv_kwargss                     r>   module_inputs_torch_nn_ConvNdr    s   sA::fe$DL%0JV5P]^J)tY4G/H&Ku 7U*C%(*C%CC33 (1'8'8$HX'Y (Z#J 	[_}UK'W;'W'4T5+']Q\']"/
-7)=Q1S #T *"*4$:S	V (Z  s   AC$c                 d   t        t        |||      }t        t        d      t         |d            d       t        t        d      t         |d            d	      t        t               t         |d
            dt              t        t        d      t         |d            d	      gS )Nr          @alphar   r   r   c                 ^    t        j                  |dk\  |d|j                         dz
  z        S )Nr   r   rB   r   whereexpr   s      r>   r   z,module_inputs_torch_nn_ELU.<locals>.<lambda>!  s%    Q!VQQUUWWX[HY1Zr@   r   rO   scalarr   r   r   rt   r   r   r   r   4d_inputr"  r#  s          r>   module_inputs_torch_nn_ELUr    s    V5P]^J 	m"&="/
90E"F!Z	\ 	m"&="/
2"?!	# 	mo"/
40@"A'!:	< 	m"&="/
<0H"I#	%& &r@   c           
          t        t        |||      }t        t        d      t         |d            d       t        t        d      t         |d            d d	
      t        t        d      t         |d            dt              gS )Nr   r  r  r  c                 d    t        j                  |dk\  |dd|z  j                         dz
  z        S Nr   r        ?rB   r  r   s      r>   r   z-module_inputs_torch_nn_CELU.<locals>.<lambda>4  +    Q!VQrTUvlln_`N`Ha1br@   r   rO   c                 d    t        j                  |dk\  |dd|z  j                         dz
  z        S r  r  r   s      r>   r   z-module_inputs_torch_nn_CELU.<locals>.<lambda>7  r  r@   r  r  r  r   rt   r"  r#  s          r>   module_inputs_torch_nn_CELUr  .  s    V5P]^J 	m"&="/
90E"F!b	d 	m"&="/
2"?!b!	# 	m"&="/
40@"A'!:	<= =r@   c           
         t        t        |||      }t        t               t         |d                  t        t        d      t         |d            d      t        t               t         |d            d	t        
      gS )Nr   )r   r  r  rB   r   r  rO  r   r   r  r   rt   r"  r#  s          r>   module_inputs_torch_nn_GLUr  ?  sy    V5P]^J 	mo"/
60B"C	EmA&6"/
90E"F	  	mo"/
40@"A'!:	<	= 	=r@   c           
         t        t        |||      }t        t        d      t         |d            d d      t        t        d      t         |d            d 	      t        t               t         |d
            dt              gS )Nr   r   rO   c                 j    |dz  dt        j                  |t        j                  d      z        z   z  S Nr        ?r  r   erfmathsqrtr|   r   xrI   s       r>   r   z-module_inputs_torch_nn_GELU.<locals>.<lambda>T  .    QWeiiPQTXT]T]^aTbPbFc@c5dr@   r  r  r  c                 j    |dz  dt        j                  |t        j                  d      z        z   z  S r  r  r  s       r>   r   z-module_inputs_torch_nn_GELU.<locals>.<lambda>X  r  r@   r   r  r   rt   r"  r#  s          r>   module_inputs_torch_nn_GELUr  N  s    V5P]^J 	mF&;"/
2"?!d!	# 	mF&;"/
90E"F!d	f 	mo"/
40@"A'!:	<= =r@   c                 V   t        t        |||      }t        t               t         |d            d      t        t               t         |d            t        d      t        t               t         |d            d	      t        t               t         |d
            d      gS Nr   rO   r  r   r   r   r  r   r   r   r   channels_last_mem_format)r   r   r   r   r   channels_last_3d_mem_formatr"  r#  s          r>   module_inputs_torch_nn_ReLUr  _      V5P]^J 	mo"/
2"?!	# 	mo"/
1">!:'	) 	mo"/
<0H"I3	5 	mo"/
?0K"L6	89 9r@   c                 V   t        t        |||      }t        t               t         |d            d      t        t               t         |d            t        d      t        t               t         |d            d	      t        t               t         |d
            d      gS r  r"  r#  s          r>   module_inputs_torch_nn_ReLU6r  r  r  r@   c                    t        t        |||      }t        t               t         |d                  t        t               t         |d            t        d      t        t        d      t         |d            d	      t        t        d
      t         |d            d	      t        t        d      t         |d            d	      gS )Nr   r  r  r   r   r  r  with_negvalr   r   )r   r   with_zero_negvalrO   with_negval_scalarr"  r#  s          r>    module_inputs_torch_nn_LeakyReLUr    s    V5P]^J 	mo"/
90E"F	Hmo"/
1">!:'	) 	mC&8"/
90E"F&	( 	mC&8"/
80D"E+	- 	mC&8"/
2"?-	/0 0r@   c                    t        t        |||      }t        t               t         |d            d      t        t               t         |d            t        d      t        t               t         |d            d	 d
      t        t        d      t         |d            d d      t        t               t         |d            d d      t        t        d      t         |d            d d      t        t               t         |d            d d      t        t        d      t         |d            d d      gS )Nr   rO   r  r   r   r   r  r   r   r   c                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S Nr   )min)maxr   clampr   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  3    QA1FUV\]I^abcdaefgahIh1hr@   1dr   c                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S r  r  r   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  r  r@   1d_multiparamr  c                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S r  r  r   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  r  r@   2dc                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S r  r  r   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  r  r@   2d_multiparam)r   r   r   r   r  c                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S r  r  r   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  r  r@   3dc                 r    t        j                  |d      t        j                  |d      |d   d   z  z   S r  r  r   s      r>   r   z.module_inputs_torch_nn_PReLU.<locals>.<lambda>  r  r@   3d_multiparamr"  r#  s          r>   module_inputs_torch_nn_PReLUr    s)   V5P]^J 	mo"/
2"?!	# 	mo"/
1">!:'	) 	mo"/
90E"F!h	 	mA&6"/
90E"F!h(	* 	mo"/
<0H"I!h	 	mA&6"/
<0H"I!h(	* 	mo"/
?0K"L!h	 	mA&6"/
?0K"L!h(	*9+ +r@   c           
         t        t        |||      }t        t               t         |d                  t        t               t         |d            t        d      t        t               t         |d            d	      gS )
Nr   r  r  r   r   r  rO   r  r   r"  r#  s          r>   module_inputs_torch_nn_SELUr    st    V5P]^J 	mo"/
90E"F	Hmo"/
1">!:'	) 	mo"/
2"?!	#	$ 	$r@   c           
         t        t        |||      }t        t               t         |d            d d      t        t               t         |d            t        d      t        t               t         |d            d	 
      gS )Nr   rO   c                 2    |t        j                  |      z  S r6   r   sigmoidr  s       r>   r   z-module_inputs_torch_nn_SiLU.<locals>.<lambda>      Qq9I5Ir@   r  r  r   r   r  c                 2    |t        j                  |      z  S r6   r  r  s       r>   r   z-module_inputs_torch_nn_SiLU.<locals>.<lambda>  r  r@   r   r"  r#  s          r>   module_inputs_torch_nn_SiLUr    s~    V5P]^J 	mo"/
2"?!I!	# 	mo"/
1">!:'	) 	mo"/
90E"F!I	KL Lr@   c           
         t        t        |||      }t        t        d      t         |d            d       t        t        d      t         |d            d d	
      t        t        d      t         |d            t        d
      gS )Nr   rB   r      c                     t        j                  |      j                  t        j                  |      j                  dd      j	                  dd            S NrB   Tr   r  )r   r  divr   r   r   s      r>   r   z0module_inputs_torch_nn_Softmax.<locals>.<lambda>  s=    11A1A%))A,BRBRSTVZB[BbBbcegiBj1kr@   r   r   rO   c                     t        j                  |      j                  t        j                  |      j                  dd            S )Nr   Tr   r  r  r   r   s      r>   r   z0module_inputs_torch_nn_Softmax.<locals>.<lambda>  s.    11A1A%))A,BRBRSTVZB[1\r@   r  r  r   r   r   r   r"  r#  s          r>   module_inputs_torch_nn_Softmaxr    s    V5P]^J 	mA&6"/
80D"E!k	m 	mA&6"/
2"?!\!	# 	mB&7"/
60B"C!:'	)* *r@   c           	          t        t        |||      }t        t               t         |d            d       t        t               t         |d            t        d      gS )Nr   rB   r   r   r  c                     t        j                  |      j                  t        j                  |      j                  dd            S NrB   Fr  r   s      r>   r   z2module_inputs_torch_nn_Softmax2d.<locals>.<lambda>  s.    11A1A%))A,BRBRSTV[B\1]r@   r   rP  r   r  r"  r#  s          r>    module_inputs_torch_nn_Softmax2dr    s]    V5P]^J 	mo"/
>0J"K!]	_ 	mo"/
90E"F!:'	)	* *r@   c                 h   t        t        |||      }t        t        d      t         |d            d       t        t        d      t         |d            d d	      t        t        d
      t         |d            d d	      t        t        d      t         |d            t        d	      gS )Nr   rB   r  c                     t        j                  |      j                  t        j                  |      j                  dd      j	                  dd            j                         S r  )r   r  div_r   r   log_r   s      r>   r   z3module_inputs_torch_nn_LogSoftmax.<locals>.<lambda>  sF    11B1B599Q<CSCSTUW[C\CcCcdfhjCk1l1q1q1sr@   r   r  c                     t        j                  |      j                  t        j                  |      j                  dd            j	                         S r  r   r  r  r   r  r   s      r>   r   z3module_inputs_torch_nn_LogSoftmax.<locals>.<lambda>  7    11B1B599Q<CSCSTUW\C]1^1c1c1er@   
multiparamr  r   rO   c                     t        j                  |      j                  t        j                  |      j                  dd            j	                         S )Nr   Fr  r   s      r>   r   z3module_inputs_torch_nn_LogSoftmax.<locals>.<lambda>
  r  r@   multiparam_scalarr   r  r   r"  r#  s          r>   !module_inputs_torch_nn_LogSoftmaxr    s    V5P]^J 	mA&6"/
80D"E!s	u 	mA&6"/
>0J"K!e%	' 	mA&6"/
2"?!e,	. 	mB&7"/
60B"C!:'	)* *r@   c                 \   t        t        |||      }t        t        d      t         |d                  t        t        d      t         |d            d      t        t        d      t         |d	            d
      t        t        d      t         |d            t        d      gS )Nr   rB   r  r  )r   r   r   r   multidimr   r   rO   r  r   )r   r   r   r   r  r"  r#  s          r>   module_inputs_torch_nn_Softminr    s    V5P]^J 	mA&6"/
80D"E	GmA&6"/
=0I"J#	% 	mA&6"/
2"?!	# 	mB&7"/
:0F"G!:'	)* *r@   c                    t        t        |||      }t        t               t         |d            d       t        t        d      t         |d            d d      t        t        dd	      t         |d            d
 d      t        t        dd	      t         |d            d d      t        t               t         |d            t        d      gS )Nr   r  c                 X    t        j                  dt        j                  |      z         S NrB   r   logr  r   s      r>   r   z1module_inputs_torch_nn_Softplus.<locals>.<lambda>*  s    1uyy|;K1Lr@   r   r   c                 d    dt        j                  dt        j                  d|z        z         z  S )Nr  rB   r   r  r   s      r>   r   z1module_inputs_torch_nn_Softplus.<locals>.<lambda>-  s'    599QSTWXSXIYEY;Z1Zr@   betar  c           	          |dz  dkD  j                  |      |z  |dz  dk  j                  |      dz  dz  t        j                  dt        j                  d|z        z         z  z   S Nr   r  r  r  rB   type_asr   r  r  r   s      r>   r   z1module_inputs_torch_nn_Softplus.<locals>.<lambda>2  h    !a%4(@(@(Ca(GEd?33A6;b@599QQVQZQZ[\_`[`QaMaCbb)cr@   beta_thresholdrO   c           	          |dz  dkD  j                  |      |z  |dz  dk  j                  |      dz  dz  t        j                  dt        j                  d|z        z         z  z   S r  r  r   s      r>   r   z1module_inputs_torch_nn_Softplus.<locals>.<lambda>8  r  r@   beta_threshold_scalarr   r   r"  r#  s          r>   module_inputs_torch_nn_Softplusr   $  s    V5P]^J 	mo"/
80D"E!L	N 	mA&6"/
80D"E!Z	! 	mAt&<"/
80D"Ec)	+ 	mAt&<"/
2"?c0	2 	mo"/
1">!:'	))* *r@   c                 X   t        t        |||      }t        t               t         |d                  t        t        d      t         |d            d      t        t        d      t         |d            d      t        t               t         |d	            t        d
      gS )Nr   r  r  rB   lambdar   rO   lambda_scalarr   r   r  r"  r#  s          r>   !module_inputs_torch_nn_Softshrinkr  A  s    V5P]^J 	mo"/
90E"F	HmA&7"/
90E"F!	# 	mA&7"/
2"?(	* 	mo"/
1">!:'	)* *r@   c           
         t        t        |||      }t        t               t         |d            d       t        t               t         |d            d d      t        t               t         |d	            t        d
      gS )Nr   r  c                 P    |j                  dt        j                  |      z         S r  r  r   r   r   s      r>   r   z1module_inputs_torch_nn_Softsign.<locals>.<lambda>Y      q599Q<7G1Hr@   r   rO   c                 P    |j                  dt        j                  |      z         S r  r  r   s      r>   r   z1module_inputs_torch_nn_Softsign.<locals>.<lambda>\  r  r@   r  r  r   r   r"  r#  s          r>   module_inputs_torch_nn_Softsignr
  S  s|    V5P]^J 	mo"/
90E"F!H	J 	mo"/
2"?!H!	# 	mo"/
1">!:'	)* *r@   c           
         t        t        |||      }t        t               t         |d                  t        t               t         |d            d      t        t               t         |d            t        d	      gS 
Nr   r  r  rO   r  r   r   r   r  r"  r#  s          r>   module_inputs_torch_nn_Tanhr  d  t    V5P]^J 	mo"/
<0H"I	Kmo"/
2"?!	# 	mo"/
1">!:'	)	* 	*r@   c           
         t        t        |||      }t        t               t         |d                  t        t               t         |d            d      t        t               t         |d            t        d	      gS r  r"  r#  s          r>   !module_inputs_torch_nn_Tanhshrinkr  t  r  r@   c                 f   t        t        |||      }t        t        dd      t         |d            d      t        t        dd      t         |d            d      t        t        dd      t         |d	            d
      t        t        dd      t         |d            t        d      gS )Nr   r  r  r  threshold_valuer   g      $@large_valuerO   threshold_value_scalarr   r   r  r"  r#  s          r>    module_inputs_torch_nn_Thresholdr    s    V5P]^J 	mB&;"/
<0H"I*	, 	mB&<"/
<0H"I&	( 	mB&;"/
2"?1	3 	mB&;"/
1">!:'	)* *r@   c           
         t        t        |||      }t        t               t         |d            d       t        t               t         |d            d d      t        t               t         |d	            t        d
      gS )Nr   r  c                 X    |t        j                  t        j                  |            z  S r6   r   tanhFsoftplusr   s      r>   r   z-module_inputs_torch_nn_Mish.<locals>.<lambda>      UZZ

15N1Nr@   r   rO   c                 X    |t        j                  t        j                  |            z  S r6   r  r   s      r>   r   z-module_inputs_torch_nn_Mish.<locals>.<lambda>  r  r@   r  r  r   r   r"  r#  s          r>   module_inputs_torch_nn_Mishr    s|    V5P]^J 	mo"/
90E"F!N	P 	mo"/
2"?!N!	# 	mo"/
1">!:'	)* *r@   c           
          t        t        |||      }t        t               t         |d       |d            d       t        t               t         |d       |d            d d      gt	        |      z   S )	Nr   r  c                 b    d|j                         z  t        d t        ||      D              z  S )Nr  c              3   d   K   | ](  \  }}||z
  j                         j                          * y wr6   )r   r   )rv  abs      r>   rw  zBmodule_inputs_torch_nn_L1Loss.<locals>.<lambda>.<locals>.<genexpr>  s4      I`U^TQPQ KLa%IZIZI\U^s   .0)numelr   zipr|   r   r   r   s       r>   r   z/module_inputs_torch_nn_L1Loss.<locals>.<lambda>  s7    BNS I`UXYZ\]U^I` F` 5`r@   r   rO   c                 l    d|j                         z  ||z
  j                         j                         z  S )Nr  )r$  r   r   r&  s       r>   r   z/module_inputs_torch_nn_L1Loss.<locals>.<lambda>  s&    BNa!e[[]EVEVEX4Xr@   r  r  )r   r
   rs   rn   r  r#  s          r>   module_inputs_torch_nn_L1Lossr(    s    V5P]^J 	mo"/
90E0:90E#G"`	a
 	mo"/
2
2"O!X!	#	$ 'K:&V	W 	Wr@   c                 J   t        t        |||      }t        t        |t        j                  d      }t        t        ||d      }g d}	g }
|	D ]O  }|
j	                  t        t        |      t         |d       |ddd	            t        t        d
                   |
j	                  t        t        | |d            t         |d       |ddd	            t        t        d
                   |
j	                  t        t        |d      t         |d       |ddd	            t        t        d
                   |
j	                  t        t        |d |d            t         |d       |ddd	            t        t        d
                   R |
S )Nr   F)r   r   r   r  )rY  rO   r   rY  )lowhighTr  r   )r   r   r  )r   label_smoothing)r   r,  r   )r   r
   r   r   rC   rs   rn   r   )rE   r   rL   r   rM   rQ   r   r   r   
reductionssamplesr   s               r>   'module_inputs_torch_nn_CrossEntropyLossr/    s   V5P]^J+fEJJV[\K+fEQVWK(JG	-)*L&3Jt4DkRTZ[bcFd&e%,-FUY%Z\	

 	-)T_`dTe*f&3Jt4DkRTZ[bcFd&e%,-FUY%Z\	

 	-)]`*a&3Jt4DkRTZ[bcFd&e%,-FUY%Z\	

 	-)]`?J4?P+R&3Jt4DkRTZ[bcFd&e%,-FUY%Z\	
!  . Nr@   c                 B   t        t        |||      }t        t        ddd      t         |d            d      t        t        ddd      t         |d	            d
      t        t        ddd      t         |d            d      t        t        dddd      t         |d            d      t        t        dddd      t         |d            d      t        t        ddd      t         |d            d      t        t        ddd      t         |d            d      t        t        dddd      t         |d            d      t        t        dddd      t         |d            d      t        t        dddd      t         |d            d      g
S ) Nr   r   r  r`  )r   r  r   	1d_affiner   rX  )r   rX  1d_affine_GNrB   )   r  1d_affine_large_batchr   Fr   r   r   1d_no_affine_INr   r   1d_no_affine_LN)r   r  r   r   	2d_affine)r   r     r9  2d_affine_large_feature3   gh㈵>)r   r;  r9  r9  2d_no_affine_large_feature)r   r   r   r   2d_no_affine_IN2d_no_affine_LNr   r#  s          r>    module_inputs_torch_nn_GroupNormr?    s   V5P]^J 	+Aq$7'
9(=>	 	+Ar48'
7(;<	! 	+Aq$7'
8(<=(	* 	+Aq$>'
9(=>"	$ 	+Ar4?'
7(;<"	$ 	+Aq$7'
<(@A	 	+Aq$7'
>(BC*	, 	+Ar4?'
?(CD-	/ 	+Aq$>'
<(@A"	$ 	+Aq$>'
<(@A"	$K) )r@   c           
         t        t        |||      }t        t        d      t         |d                  t        t        d      t         |d            d      t        t               t         |d            t        d	
      gS )Nr   r  )r   r   r   r   r  rO   r  r   r   r   r  r"  r#  s          r>   !module_inputs_torch_nn_HardshrinkrA    s~    V5P]^J 	+B/'
<(@A	
 	+B/'
27	

 	+o'
162		
 r@   c           	          t        t        |||      }t        t               t         |d            t        d      t        t               t         |d            d      gS )Nr   r   r   r  r  r  r   r"  r#  s          r>    module_inputs_torch_nn_HardswishrC    s]    V5P]^J 	+o'
162		
 	+o'
<(@A	 r@   c           
         t        t        |||      }t        t               t         |d            d       t        t               t         |d            d d      t        t               t         |d	            t        d
      gS )Nr   r  c                 &    |j                  dd      S Nr   rB   r  r   s      r>   r   z1module_inputs_torch_nn_Hardtanh.<locals>.<lambda>5      Qr@   r   rO   c                 &    |j                  dd      S rF  rG  r   s      r>   r   z1module_inputs_torch_nn_Hardtanh.<locals>.<lambda>:  rH  r@   r  r  r   r   r"  r#  s          r>   module_inputs_torch_nn_HardtanhrJ  .  s~    V5P]^J 	+o'
9(=>7	

 	+o'
277		
 	+o'
162		
 r@   c                 T   t        t        |||      }|j                  dd      }|d   }d\  }	}
}}}dddd	}||   }d
|z   }t        |rt	        |
|      nt	        |	|
|      t	         ||                  t        |rt	        |
|||      nt	        |	|
|||      t	         ||            d      t        |rt	        |
|      nt	        |	|
|      t	         ||            t
        d      t        |rt	        |
|||      nt	        |	|
|||      t	         ||            t
        d      gS )Nr   rq  Frp  )r   r`  rb  FT)r   r   r'  r2  rB   r   r   r  r  tracking_statsr   tracking_stats_no_batch_dimr  r   )r   r
   r   rs   rn   r   )rE   r   rL   r   rM   rQ   r   rq  rp  num_featuresepsrj  r^  track_running_statsinput_no_batch_shape_dictr}  r~  s                    r>   %module_inputs_torch_nn_InstanceNormNdrS  F  sQ   V5P]^J::fe$DsA?X<L#x)<$+	l K4Q733 	04c8,-VY[c:d'
3D(EF		H
 	MQc8V5HIlC6CVW'
3D(EF!	# 	04c8,-VY[c:d'
3G(HI2.	0 	MQc8V5HIlC6CVW'
3G(HI2	!) r@   c                 ^   t        t        |||      }t        t        dgd      t         |d            d      t        t        dgd      t         |d            d      t        t        dgdd	      t         |d            d
      t        t        g dd      t         |d            d      t        t        g ddd	      t         |d            d      t        t        dgd      t         |d            d      t        t        g dddd	      t         |d            d      gS )Nr   r   r`  r5  1d_elementwise_affiner   )   r   r   !1d_elementwise_affine_large_batchF1d_no_elementwise_affine)r   r   r   )r   r   r   r   3d_elementwise_affine3d_no_elementwise_affine)r   r   1d_empty_elementwise_affineT)elementwise_affiner   3d_elementwise_affine_no_biasr   r#  s          r>    module_inputs_torch_nn_LayerNormr^  m  s+   V5P]^J 	+QC6'
9(=>(	* 	+QC6'
;(?@4	6 	+QCu='
9(=>+	- 	+It<'
<(@A(	* 	+ItUC'
<(@A+	- 	+QC6'
6(:;.	0 	+ItPT[`a'
<(@A0	23 r@   c           
         t        t        |||      }t        t        d      t         |d            d      t        t        d      t         |d            d      t        t        d	d
dd      t         |d            d      gS )Nr   r   )rB   r   rO  r  r   r   )rB   r   rO  rO  2d_uneven_padrB   r  r  r  )rB   r   rO  rO  rO  3d_custom_paramsr   r#  s          r>   (module_inputs_torch_nn_LocalResponseNormrb    s    V5P]^J 	+A/'
9(=>	 	+A/'
<(@A 	" 	+Ar3;'
?(CD#	% r@   c           
         t        t        |||      }t        t        dd      t         |d            d      t        t        ddd      t         |d                  t        t        ddd      t         |d	            t        d
      gS )Nr         ?r   )rB   r   rO  normr   r   r  )r   rO  r   r  r"  r#  s          r>   module_inputs_torch_nn_LPPool1drf    s    V5P]^J 	+C3'
9(=>	 	+Aq!4'
9(=>	@ 	+Aq!4'
6(:;2		! r@   c           	          t        t        |||      }t        t        ddd      t         |d                  t        t        dd      t         |d            d      gS )Nr   r   rB   r   rO  rO  r  rd  re  r   r   r#  s          r>   module_inputs_torch_nn_LPPool2dri    se    V5P]^J 	+Aq!4'
<(@A	C 	+C3'
<(@A		 r@   c           
         t        t        |||      }t        t        d      t         |d            d      t        t        dd      t         |d            d      t        t        dd      t         |d            d	      gS )
Nr   r   )r   r   r   r_  r   r  Treturn_indicesrl  r   r#  s          r>    module_inputs_torch_nn_MaxPool1drm    s    V5P]^J 	+A.'
:(>?	 	+Aq1'
:(>?	 	+AdC'
:(>?!	# r@   c           
         t        t        |||      }t        t        ddd      t         |d            d      t        t        ddd      t         |d            d	      t        t        dddd
      t         |d            d      gS )Nr   r   r   r&  r)  )r   rO  rO  r_  r   rh  r  Trk  rl  r   r#  s          r>    module_inputs_torch_nn_MaxPool2drp    s    V5P]^J 	+FFFC'
9(=>	 	+FFFC'
<(@A	 	+FFFSWX'
<(@A!	# r@   c                 `   t        t        |||      }t        t        d      t         |d                  t        t        dd      t         |d            d      t        t        ddd      t         |d            d	      t        t        dddd
      t         |d            d      gS )Nr   r1  r4  r  r   r  r   r5  stride_paddingTrk  rl  r   r#  s          r>    module_inputs_torch_nn_MaxPool3drs    s    V5P]^J 	+I6'
?(CD	F 	+Ay9'
?(CD	 	+Aq)<'
?(CD!	# 	+Aq)DQ'
?(CD!	# r@   c                    t        t        ||      }fd}t        t        dd |             t         |d            d      t        t        d	d
 |             t         |d            d      t        t        dd |       d      t         |d            d      t        t        dd |             t         |d            t        d      t        t        d	d
 |             t         |d            t        d      gS )Nr   c                  l    t        j                  dt         j                         j                         S )N)rB   r   r   rL   r   r   r   doubler   r   s   r>   make_random_sampleszGmodule_inputs_torch_nn_FractionalMaxPool2d.<locals>.make_random_samples  #    {{9ELLHQQSSr@   r   r  output_ratio_random_samples)rB   r   r   rO  ratior   r   r   )r   r   output_sizer}  )rB   r   rO  r  sizeTr|  r}  rl  ratio_return_indices)r   r   rO  ratio_no_batch_dimr  )r   rO  r  size_no_batch_dimr"  rE   r   rL   r   rM   rQ   r   ry  s    `      r>   *module_inputs_torch_nn_FractionalMaxPool2dr     s   V5P]^JT 	+ACQdQfg'
<(@A	 	+FXkXmn'
<(@A	 	+5H5J[_ (
<(@A'	) 	+ACQdQfg'
9(=>2%		'
 	+FXkXmn'
9(=>2$		&) r@   c                 j   t        t        ||      }fd}t        t        dd |             t         |d            d      t        t        d	d
 |             t         |d            d      t        t        dd |             t         |d            d      t        t        dd |       d      t         |d            d      t        t        dd |             t         |d            t        d      t        t        d	d
 |             t         |d            t        d      gS )Nr   c                  l    t        j                  dt         j                         j                         S )N)r   r   r   rv  rw  r   s   r>   ry  zGmodule_inputs_torch_nn_FractionalMaxPool3d.<locals>.make_random_samples%  rz  r@   r   r  r{  )r   r   r   r   r   r~  r   r1  )r   r   r   r  )r   r   rO  rO  rO  r  )r   r   r   )r   r   r   )r   r      rO  r   asymsizeTr  r  )r   r   r   r   r  r  )r   rO  rO  rO  r  r"  r  s    `      r>   *module_inputs_torch_nn_FractionalMaxPool3dr  "  s/   V5P]^JT 	+ACQdQfg'
?(CD	 	+I9^q^st'
?(CD	 	+I:_r_tu'
3C(DE	 	+5H5J[_ (
?(CD'	) 	+ACQdQfg'
<(@A2%		'
 	+I9^q^st'
<(@A2$		&1 r@   c                 V   t        t        |||      }t        t               t         |d            d      t        t               t         |d            t        d      t        t               t         |d            d	      t        t               t         |d
            d      gS r  r"  r#  s          r>   module_inputs_torch_nn_Sigmoidr  H  s    V5P]^J 	+o'
27	

 	+o'
162		
 	+o'
<(@A+	

 	+o'
?(CD.	
# r@   c           
         t        t        |||      }t        t               t         |d            d d      t        t               t         |d            d       t        t               t         |d	            t        d
      gS )Nr   rO   c                 >    |j                         j                         S r6   r  r  r   s      r>   r   z3module_inputs_torch_nn_LogSigmoid.<locals>.<lambda>k      ):r@   r  r  r  c                 >    |j                         j                         S r6   r  r   s      r>   r   z3module_inputs_torch_nn_LogSigmoid.<locals>.<lambda>q  r  r@   r   r   r   r"  r#  s          r>   !module_inputs_torch_nn_LogSigmoidr  d  s~    V5P]^J 	+o'
27:		
 	+o'
9(=>:	

 	+o'
162		
 r@   c           	         g }t        d ||||      D ]  }|j                  j                  |j                  j                  }	}||	d<   ||	d<   t	        j
                  j                  |i |	}
d}|j                  }d|j                  v r)|j                  d   |j                  d<   |j                  d= |j                  t        t        |
|      ||j                                |S )Nr   rL   r   src_maskmaskr   ).module_inputs_torch_nn_TransformerEncoderLayerru   rP   rQ   r   nnTransformerEncoderLayerrv   rC   rs   rn   rw   )rE   r   rL   r   rM   rQ   r.  layer_module_inputl_argsl_kwargsencoder_layer
num_layersrv   s                r>   )module_inputs_torch_nn_TransformerEncoderr  |  s    GL&%: /@@EE.@@GG #!88&MHM
 +88---+8+?+?
+KM  ($$Z0{+M:F'#((
 	:( Nr@   c                    t        t        |||      }t        t        dddd      t         |d            d      t        t        ddd	dt        j
                        t         |d            d
      g}d t        j                  g d|t        j                        f}d t        j                  g d|t        j                        j                  d      f}	t        j                  |	|d      D ]  \  }
}}|j                  t        t        ddd	dd|      t         |d      |
|      t        t        dddi      d             |j                  t        t        ddd	dd|      t         |d      |
|      t        t        dddi      d              d }|sGdD ]B  }|j                  t        t        ddd	dd|      t         |d            ||rdnd             D |S )Nr   r   r   r  r   r  relu_activationr   r   gelu_activationFFTr   rL   ro  TFTd_modelnheaddim_feedforwarddropoutr   
norm_firstrI  )r  src_key_padding_maskr  r   r   r   no_batch_dim_batch_firstr  Fr  r   r  r   c                 v    | j                   rJ | j                  d      }  | |i |}| j                  d      } |S )NTF)rM   train)moduler{   rP   rQ   r  s        r>   fast_path_reference_fnzNmodule_inputs_torch_nn_TransformerEncoderLayer.<locals>.fast_path_reference_fn  s?    ??""d#((e$r@   fast_path_norm_first	fast_pathr   r
   rs   rn   r  gelur   tensorboolr   ry  r   rC   r   )rE   r   rL   r   rM   rQ   r   r.  key_padding_masks
attn_masksr  r  r  r  s                 r>   r  r    s   V5P]^J 	+Aq"c:'9% #	
 	+Aq!S!&&A'9% #	
G" u||,@W\WaWabc%9&PUPZPZ[bbcijkJ6?6G6G
Tegt6u2&
"/TU8;Zd#f+v&Pd %%>15KacdJeg/	
	 	"/1aRWdn"o+v&Pd %%>16LbdeKfh#		 7v0 'JNN&3Aq!SVZgq&r"/"9-# "83=/;	 ( Nr@   c                    t        t        |||      }t        t        dddd      t         |d       |d            d      t        t        ddd	dt        j
                        t         |d       |d            d
      g}d t        j                  g d|t        j                        f}d t        j                  g d|t        j                        j                  d      f}	t        j                  |	|d      D ]  \  }
}}|
}|}|j                  t        t        ddd	dd|      t         |d       |d      |
|||      t        t        dddd      d             |j                  t        t        ddd	dd|      t         |d       |d      |
|||      t        t        dddd      d              |S )Nr   r   r   r  r   r  r  r   r   r  r  r  ro  r  Tr  rI  )tgt_maskmemory_masktgt_key_padding_maskmemory_key_padding_maskr   )r  r  r  r  r  Fr  r   r  )rE   r   rL   r   rM   rQ   r   r.  r  r  r  r  r  r  r  s                  r>   .module_inputs_torch_nn_TransformerDecoderLayerr    s   V5P]^J 	+Aq"c:'9%z)'< #	
 	+Aq!S!&&A'9%z)'< #	
G" u||,@W\WaWabc%9&PUPZPZ[bbcijkJ6?6G6G
Tegt6u2&
"6"/TU8;Zd#f+v&
6(:X[f)=Wn %%>15QRop8qs 0	 	"/1aRWdn"o+v&
6(:X[f)=Wn %%>16QRop8qs $
	% 7v> Nr@   c                    t        t        |||      }g }d t        j                  g d|t        j                        f}d t        j                  g d|t        j                        j                  d      f}	t        j                  |	|dd      D ]  \  }
}}}|
fdz  \  }}|fdz  \  }}|j                  t        t        dddd	d	d
d||	      t         |d       |d      ||||      t        t        dddd      d             |j                  t        t        dddd	d	d
d|      t         |d       |d      ||||      t        t        dddd      d              |S )Nr   r  r  ro  r  r   r   r   rB   r   T)	r  r  r  num_encoder_layersnum_decoder_layersr  r   r  r   rI  )r  r  r  r  r   )r  r  r  r  r  F)r  r  r  r  r  r  r   r  r   )r   r
   r   r  r  r   ry  r   rC   rs   rn   r   )rE   r   rL   r   rM   rQ   r   r.  r  r  r  r  r  r   r  r  r  r  s                     r>   "module_inputs_torch_nn_Transformerr    s   V5P]^JGu||,@W\WaWabc%9&PUPZPZ[bbcijkJj*;]MZ 	1
D  $gk86F5H15L22"/TUCDYZ8;Zdko#q ,v&
6(:XX`)=Th %%>15QRlm8np 0	 	"/TUCDYZ8;[e#g ,v&
6(:XX`)=Th %%>16QRlm8np $	' [D Nr@   c           
      V   t        t        j                  |t        j                  d      }t	        t        dd      t         |dd      j                  d                  t	        t        dd      t         |dd	      j                  d      j                  d
d	            d      gS )NFr   r   r   )num_embeddingsembedding_dimr   r  rB   i   rO  discontiguousr   )r   r   r   r   rs   rn   random_r   )rE   r   rL   r   rM   rQ   
make_emptys          r>    module_inputs_torch_nn_Embeddingr  >  s    V5::UZ[J+1AN'
1a(8(@(@(CD	
 	+1AN'
1c(:(B(B1(E(L(LQPS(TU 	

 
r@   c                    t        t        |||      }g }d}d t        j                  g d|t        j                        f}	d t        j                  g d|t        j                        j                  d      f}
t        j                  ||||	|
      }|D ]  \  }}}}}|j                  t        t        ddd|||      t         |d	       |d	       |d	      ||
      t                     |j                  t        t        ddd|||      t         |d	       |d	       |d	      ||
      t        t        d                    |S )Nr   r  r  r  )r   r   r   r   T)	embed_dim	num_headsr   r   add_bias_kvadd_zero_attnro  )r  	attn_maskr   Fr   )r   r
   r   r  r  r   ry  r   rC   rs   rn   r  )rE   r   rL   r   rM   rQ   r   r.  	bool_valsr  r  productsr   r  r  r  r  s                    r>   )module_inputs_torch_nn_MultiheadAttentionr  M  sU   V5P]^JGIu||,@W\WaWabc%9&PUPZPZ[bbclmnJ  IyBSU_`HIQEk=*:I"/!qVZ59{bo#q+Jv,>
6@RT^_eTf=MYbd7	
 	"/!qV[59{bo#q+Jv,>
6@RT^_eTf=MYbd$%?US	
 JR( Nr@   c                    t        t        |||      }t        t        dd      t         |d       |d            t              t        t        ddd      t         |d       |d            t              g}|j                  dd      }|rD|j                  t        t        dddd	
      t         |d       |d            t                     |S )Nr   r   r   r   Tr   is_rnnFrelu)r   nonlinearity)r   r
   rs   rn   r   r   rC   )	rE   r   rL   r   rM   rQ   r   r.  r  s	            r>   #module_inputs_torch_nn_RNN_GRU_Cellr  l  s    V5P]^J+Ar2'
1z"~F2	

 	+Ar='
1z"~F2	
G ZZ%(F 	"/2Dv"V+JqM:b>J6	
 Nr@   c                    t        t        |||      }t        t        dd      t         |d       |d       |d      f      t              t        t        ddd      t         |d       |d       |d      f      t              f}|S )Nr   r   r   r   Tr   )r   r
   rs   rn   r  rE   r   rL   r   rM   rQ   r   r.  s           r>   module_inputs_torch_nn_LSTMCellr    s    V5P]^J+Ar2'
1
2
SU7WX8	

 	+Ar='
1
2
SU7WX8	
G Nr@   c                     | j                   }| j                  d       t        | |      }|j                  j                  |       |S )NF)r   r   r	   data)r  batch_sizesrequired_gradseqs       r>   make_packed_sequencer    s>    %%Mu
sK
0CHHM*Jr@   Fc                    t        t        |||      }|d   }d}	d}
d}d}g }|rt        |	|
||      }nt        |
||      }|D ]  }|r|\  }}}}n|\  }}}ddd|||d}ddd|||d}|r
|d<   ||d<   |j                  t	        t        di |t         |d	            t        t        |
                   |j                  t	        t        di |t         |d	       ||rdnddf            t        t        |
                   |s|j                  t	        t        di |t        t         |d      t        j                  ddg                  t        t        |
                   |j                  t	        t        di |t        t         |d      t        j                  g d                  t        t        |
                    |S )Nr   r  )r  r  FTr   )
input_sizehidden_sizer  r   r   bidirectionalr   r  r   r   r  r   r   )r   r   r   r   )r   r   r   )r   r   r   r   r   rO   )
r   r
   r   rC   rs   rn   r  r  r   r  )rE   r   rL   r   rM   with_packed_sequencerQ   r   r  r  r   r   r  r.  prod_genrP   nlr#  b_fbidir	cons_argscons_args_hiddens                         r>   module_inputs_torch_nn_RNN_GRUr    s   V5P]^JHF#LDK!MG<{MJ4m< $B3 MAsE#$Qa$'UL	*+AQ+.ES (*In%/1^,"/"<)"<+Jv,>?$%CQTU	
 	"/"C2B"C+Jv,>
QVA\]_`Ka@bc$%CQTU	
  NN&3&@i&@"/0DZPYEZ\a\h\hjkmnio\p0q"r!()GUX!Y NN&3&@i&@"/0DZPYEZ\a\h\hix\y0z"{!()GUX!YI X Nr@   c                     t        t        |||      }d}d}d}	d}
g }t        |||	|
      }|D ]  }|\  }}}}d}d|d||||d}d|d||||d}|j                  t	        t        di |t         |d            t        t        |      	             |d
kD  r|n|} ||rdnd|f       ||rdnd|f      f}|j                  t	        t        di |t         |d      |      t        t        |      	              |S )Nr   r  )r   r   r   r   )r  r  r  	proj_sizer   r   r  r&  r  r   r   r   r  rO   )r   r
   r   rC   rs   rn   r  )rE   r   rL   r   rM   rQ   r   r   r   r  
proj_sizesr.  r  rP   r#  r  r  r  r  r  r  h_outhxs                          r>   module_inputs_torch_nn_LSTMr    s?   V5P]^JDK!MJGt[-DH#' 3y#$[PQ`i$'UL	*+KWXgp+.ES 	"/"<)"<+Jv,>?$%@cR	
 ']	u!!U34ju!RSU`Aa6bc"/"C2B"C+Jv,>C$%@cR	
% 6 Nr@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS )Nr   rB   r  r   rB   r   r  r  r"  r#  s          r>   &module_inputs_torch_nn_ReflectionPad1dr    ^    V5P]^J 	+A.'
6(:;2	

 	+F3'
9(=>	

 
r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS Nr   rB   rP  r   rB   r   r   r   r   r   r   r  r  r"  r#  s          r>   &module_inputs_torch_nn_ReflectionPad2dr    ^    V5P]^J 	+A.'
9(=>2	

 	+L9'
<(@A	

 
r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS )Nr   rB   r  r   rB   r   rB   r   rB   r   )r   r   r   r   r   r  r"  r#  s          r>   &module_inputs_torch_nn_ReflectionPad3dr  +  _    V5P]^J 	+A.'
<(@A2	

 	+,>?'
?(CD	

 
r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS Nr   rB   rI  r   r  rP  r  r"  r#  s          r>   'module_inputs_torch_nn_ReplicationPad1dr  :  r  r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS r   r"  r#  s          r>   'module_inputs_torch_nn_ReplicationPad2dr  I  r  r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS )Nr   rB   r  r   rB   r   r   r   r   r  )r   r   r   r  rO  r  r"  r#  s          r>   'module_inputs_torch_nn_ReplicationPad3dr  X  r  r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS r
  r"  r#  s          r>    module_inputs_torch_nn_ZeroPad1dr  g  r  r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS )Nr   rB   rL  r   r  r  r"  r#  s          r>    module_inputs_torch_nn_ZeroPad2dr  v  r  r@   c           	          t        t        |||      }t        t        d      t         |d            t              t        t        d      t         |d                  gS )Nr   rB   r  r   r  )rB   r   r   r   r   r  r"  r#  s          r>    module_inputs_torch_nn_ZeroPad3dr    r  r@   c           	          t        t        |||      }t        t        dd      t         |d            t              t        t        dd      t         |d            	      gS )
Nr   rB   r   rI  r   r  r   rP  r  r"  r#  s          r>   $module_inputs_torch_nn_ConstantPad1dr    sb    V5P]^J 	+Aq1'
6(:;2	

 	+FA6'
9(=>	

 
r@   c           	          t        t        |||      }t        t        dd      t         |d            t              t        t        dd      t         |d                  gS )	Nr   rB   r   rP  r   r  r   r  r"  r#  s          r>   $module_inputs_torch_nn_ConstantPad2dr    sb    V5P]^J 	+Aq1'
9(=>2	

 	+L!<'
<(@A	

 
r@   c           	          t        t        |||      }t        t        dd      t         |d            t              t        t        dd      t         |d            	      gS )
Nr   rB   r   r  r   r  rO  )rB   r   rB   r   rB   r  r"  r#  s          r>   $module_inputs_torch_nn_ConstantPad3dr    sc    V5P]^J 	+Aq1'
<(@A2	

 	+,>B'
?(CD	

 
r@   c                 v   t        t        |||      }d t        t        d      t         |d            t              t        t        d      t         |d            fd      t        t        d	      t         |d            fd
      t        t        d      t         |d            fd      gS )Nr   c           
      t    t        j                  | dddd|d    df   | | ddddd|d   f   gd      S )z input:
                [[[0., 1., 2.],
                  [3., 4., 5.]]]
                pad: (1, 2)
                output:
                    [[[2., 0., 1., 2., 0., 1.],
                      [5., 3., 4., 5., 3., 4.]]]
            Nr   rB   r   r   r   catr  pads     r>   padding1d_circular_refzDmodule_inputs_torch_nn_CircularPad1d.<locals>.padding1d_circular_ref  sB     yy#aSVGHn-sC1gs1vg4FGQOOr@   rB   rI  r   r  rL  c                 *     || j                         S r6   rs  r|   r   r   r#  s      r>   r   z6module_inputs_torch_nn_CircularPad1d.<locals>.<lambda>      )?199)Mr@   )r   rB   c                 *     || j                         S r6   r%  r&  s      r>   r   z6module_inputs_torch_nn_CircularPad1d.<locals>.<lambda>  r'  r@   ro  c                 *     || j                         S r6   r%  r&  s      r>   r   z6module_inputs_torch_nn_CircularPad1d.<locals>.<lambda>  r'  r@   r"  )rE   r   rL   r   rM   rQ   r   r#  s          @r>   $module_inputs_torch_nn_CircularPad1dr*    s    V5P]^J	P 	+A.'
6(:;2	

 	+F3'
9(=>M	

 	+F3'
9(=>M	

 	+F3'
9(=>M	
! r@   c                 v   t        t        |||      }d t        t        d      t         |d            t              t        t        d      t         |d            fd      t        t        d	      t         |d            fd
      t        t        d      t         |d            fd      gS )Nr   c                     t        j                  | dddd|d    df   | | ddddd|d   f   gd      } t        j                  | dddddd|d    df   | | ddddddd|d   f   gd      S )aS  input:
                [[[[0., 1., 2],
                   [3., 4., 5.]]]]
                pad: (1, 2, 2, 1)
        output:
            [[[[2., 0., 1., 2., 0., 1.],
               [5., 3., 4., 5., 3., 4.],
               [2., 0., 1., 2., 0., 1.],
               [5., 3., 4., 5., 3., 4.],
               [2., 0., 1., 2., 0., 1.]]]]
        Nr   r   r   r   rB   r  r!  s     r>   padding2d_circular_refzDmodule_inputs_torch_nn_CircularPad2d.<locals>.padding2d_circular_ref  s     iiQCF78^,c3q!Wc!fW}3EFANyy#aAAwx/0#s1aGSVG;K7LMSTUUr@   rB   rP  r   )rB   r   r   rB   )rB   rB   r   r   c                 *     || j                         S r6   r%  r|   r   r   r-  s      r>   r   z6module_inputs_torch_nn_CircularPad2d.<locals>.<lambda>	  r'  r@   )r   r   r   r   c                 *     || j                         S r6   r%  r/  s      r>   r   z6module_inputs_torch_nn_CircularPad2d.<locals>.<lambda>	  r'  r@   )r   r   r   rB   )rB   rB   r   r   c                 *     || j                         S r6   r%  r/  s      r>   r   z6module_inputs_torch_nn_CircularPad2d.<locals>.<lambda>	  r'  r@   r"  )rE   r   rL   r   rM   rQ   r   r-  s          @r>   $module_inputs_torch_nn_CircularPad2dr2    s    V5P]^JV  	+A.'
9(=>2	

 	+L9'
<(@AM	

 	+L9'
<(@AM	

 	+L9'
<(@AM	
! r@   c                 v   t        t        |||      }d t        t        d      t         |d            t              t        t        d      t         |d            fd      t        t        d	      t         |d            fd
      t        t        d      t         |d            fd      gS )Nr   c                 |   t        j                  | dddd|d    df   | | ddddd|d   f   gd      } t        j                  | dddddd|d    df   | | ddddddd|d   f   gd      } t        j                  | dddddddd|d    df   | | ddddddddd|d   f   gd      S )	aN  input:
                [[[[[ 0.,  1.,  2.],
                    [ 3.,  4.,  5.]],
                   [[ 6.,  7.,  8.],
                    [ 9., 10., 11.]]]]]
            pad: (1, 2, 2, 1, 1, 2)
            output: [[[[[ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.]],

                       [[ 2.,  0.,  1.,  2.,  0.,  1.],
                        [ 5.,  3.,  4.,  5.,  3.,  4.],
                        [ 2.,  0.,  1.,  2.,  0.,  1.],
                        [ 5.,  3.,  4.,  5.,  3.,  4.],
                        [ 2.,  0.,  1.,  2.,  0.,  1.]],

                       [[ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.]],

                       [[ 2.,  0.,  1.,  2.,  0.,  1.],
                        [ 5.,  3.,  4.,  5.,  3.,  4.],
                        [ 2.,  0.,  1.,  2.,  0.,  1.],
                        [ 5.,  3.,  4.,  5.,  3.,  4.],
                        [ 2.,  0.,  1.,  2.,  0.,  1.]],

                       [[ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.],
                        [11.,  9., 10., 11.,  9., 10.],
                        [ 8.,  6.,  7.,  8.,  6.,  7.]]]]]
        Nr   r   r   r   r   r   rB   r  r!  s     r>   padding3d_circular_refzDmodule_inputs_torch_nn_CircularPad3d.<locals>.padding3d_circular_ref	  s    J iiQCF78^,c3q!Wc!fW}3EFANiiQ1s1vgh./c!Q7CF7:J6KLRSTyy#aAq3q6'(23S#aAq'3q6'>Q:RSYZ[[r@   rB   r  r   r  )rB   rB   r   r   r   c                 *     || j                         S r6   r%  r|   r   r   r5  s      r>   r   z6module_inputs_torch_nn_CircularPad3d.<locals>.<lambda>E	  r'  r@   )r   r   r   rB   rB   r   c                 *     || j                         S r6   r%  r7  s      r>   r   z6module_inputs_torch_nn_CircularPad3d.<locals>.<lambda>J	  r'  r@   )r   r   r   rB   r   r   c                 *     || j                         S r6   r%  r7  s      r>   r   z6module_inputs_torch_nn_CircularPad3d.<locals>.<lambda>O	  r'  r@   r"  )rE   r   rL   r   rM   rQ   r   r5  s          @r>   $module_inputs_torch_nn_CircularPad3dr:  	  s    V5P]^J'\T 	+A.'
<(@A2	

 	+,>?'
?(CDM	

 	+,>?'
?(CDM	

 	+,>?'
?(CDM	
! r@   
TestModule	test_gradcuda)	active_ifr\   test_gradgradtest_non_contiguous_tensors)r>  rV   r\   )   rO  TestExpandedWeightModuletest_module)r\   
TestDecomptest_rnn_decomp_modulec                    t        t        |||      }t        t        t	        dd      t	         |dd       |dd                  t
        j                  t        d      t        t        t	        dd      t	         |dd       |dd	                  t
        j                  t        d
      t        t        t	        dd      t	         |dd       |dd                  t
        j                  t        d      t        t        t	        dd      t	         |dd       |dddd                  t
        j                  t        d      t        t        t	        ddd      t	         |dd       |dd	                  t
        j                  t        d
      t        t        t	        ddd      t	         |dd       |dd	                  t
        j                  t        d
      g}|S )Nr   r   r  r   rA  r  5input has inconsistent input_size: got 11 expected 10r   r   r      9hidden0 has inconsistent hidden_size: got 21, expected 20r   5Input batch size 3 doesn't match hidden0 batch size 5rB   z.Expected hidden to be 1D or 2D, got 4D insteadr  r  	r   r
   r   rs   rn   r   r   rU   
ValueErrorr  s           r>   )module_error_inputs_torch_nn_RNN_GRU_CellrN  x	  s   V5P]^J"/B"7+Jq",=z!R?PQ %22#O	
 	"/B"7+Jq",=z!R?PQ %22#S	
 	"/B"7+Jq",=z!R?PQ %22#O	
 	"/B"7+Jq",=z!QPQSU?VW %22!H	
 	"/B"?+Jq",=z!R?PQ %22#S	
 	"/B"?+Jq",=z!R?PQ %22#S	
]7Gp Nr@   c                    t        t        |||      }t        t        t	        dd      t	         |dd       |dd       |dd      f            t
        j                  t        d      t        t        t	        dd      t	         |dd       |dd	       |dd	      f            t
        j                  t        d
      t        t        t	        dd      t	         |dd       |dd       |dd      f            t
        j                  t        d      t        t        t	        dd      t	         |dd       |dddd       |dddd      f            t
        j                  t        d      g}|S )Nr   r   r  r   rA  r  rG  rH  rI  rJ  r   rK  rB   z/Expected hx\[0\] to be 1D or 2D, got 4D insteadrL  r  s           r>   %module_error_inputs_torch_nn_LSTMCellrP  	  s|   V5P]^J"/B"7+Jq",=
1b@QS]^_acSd?ef %22#O	
 	"/B"7+Jq",=
1b@QS]^_acSd?ef %22#S	
 	"/B"7+Jq",=
1b@QS]^_acSd?ef %22#O	
 	"/B"7+Jq",=
1aQRTV@WYcdeghjkmoYp?qr %22!K	
9%GL Nr@   c           
          t        t        t        ddd            t        j                  t
        d      t        t        t        ddd            t        j                  t
        d      g}|S )Nr   r   rB   )ru   z%hidden_size must be greater than zerorH  z$num_layers must be greater than zero)r   rs   rn   r   r   rM  )rE   r   rL   r   rM   rQ   r.  s          r>   $module_error_inputs_torch_nn_RNN_GRUrR  	  sb    -Aq*AB$77!?		
 	-B*BC$77!>		
G Nr@   c           
          t        t        |||      }|j                  dd      }t        t	        |rt        dd      n
t        d      t         |d                  t        j                  t        d	      gS )
Nr   is_constantFrB   r   r  r  z(expected 2D or 3D input \(got 4D input\)rH  	r   r
   r   r   rs   rn   r   r   rM  rE   r   rL   r   rM   rQ   r   rT  s           r>   "module_error_inputs_torch_nn_Pad1drW  	  sq    V5P]^J**]E2K 	9D-1"5-XYJZ+J|,DE %22!C		
 r@   c           
          t        t        |||      }|j                  dd      }t        t	        |rt        dd      n
t        d      t         |d                  t        j                  t        d	      gS )
Nr   rT  FrB   r   r  r  z(expected 3D or 4D input \(got 2D input\)rH  rU  rV  s           r>   "module_error_inputs_torch_nn_Pad2drY  
  q    V5P]^J**]E2K 	9D-1"5-XYJZ+Jv,>? %22!C		
 r@   c           
          t        t        |||      }|j                  dd      }t        t	        |rt        dd      n
t        d      t         |d                  t        j                  t        d	      gS )
Nr   rT  FrB   r   r  r  z(expected 4D or 5D input \(got 2D input\)rH  rU  rV  s           r>   "module_error_inputs_torch_nn_Pad3dr\  
  rZ  r@   )r   r   test_memory_formatc                     | d   S NrM   rO   r   s    r>   r   r   :
      1Z=r@   )r>  )r   r   r   zSkipped!)rV   c                     | d   S r_  rO   r`  s    r>   r   r   h
  ra  r@   )r   r   r   TTestEagerFusionModuleInfo,test_aot_autograd_symbolic_module_exhaustivec                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   #test_aot_autograd_module_exhaustivec                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   )rD   r   r   c                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   c                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   c                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   c                     | d   S r_  rO   r`  s    r>   r   r   
  ra  r@   rB   )rp  rq  i  )versiong-C6?)r   r   r   r   r   r   )r\   rV   mpsr   iE  )rp  rq  rr  test_cpu_gpu_parity)rV   r\   test_pickleg{Gzt?)r   r   r   rV   r   r   )r\   rV   r>  )r   rV   r   r   r   r   )atolrtoltest_forwardcpu)r   r   r   c                     | d   S r_  rO   r`  s    r>   r   r      ra  r@   )include_bfloat16include_half)r   rV   r   c                     | d   S r_  rO   r`  s    r>   r   r   P  ra  r@   )r   r   r   )rp  )r   rD   r   test_factory_kwargs)rD   r   r   r   )r\   r>  c                     | d   S r_  rO   r`  s    r>   r   r     ra  r@   )r  )r   r   r   c                     | d   S r_  rO   r`  s    r>   r   r     ra  r@   c                     | d   S r_  rO   r`  s    r>   r   r   G  ra  r@   c                     | d   S r_  rO   r`  s    r>   r   r   U  ra  r@   )rD   r   r   r   r   	module_db)F(#  r   unittestcopyr   enumr   	functoolsr   r   ry  r   r   r  torch.nn.functionalr  
functionalr  torch.nn.utils.rnnr	   torch.testingr
   #torch.testing._internal.common_cudar   $torch.testing._internal.common_dtyper   r   r   r   *torch.testing._internal.common_device_typer   r   r   r   r   r   r   r   r   r   2torch.testing._internal.common_methods_invocationsr   !torch.testing._internal.common_nnr   r   $torch.testing._internal.common_utilsr   r   r   r    r!   r"   typesr#   typingr$   r%   r&   r'   r(   r4   aoqatquantizable	quantizedr)   __annotations__Module	Container	NLLLoss2d	MaxPool2dr*   r7   __all__getattrr+   r,   str	namespacemodule_namerk   r[   r   namespace_namer/   rl   rn   rs   r   r   r   r   r   r   r   r   r  r  r  r  r  r$  r/  r>  rD  rM  rR  rT  rV  r\  rg  rk  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r
  r  r  r  r  r(  r/  r?  rA  rC  rJ  rS  r^  rb  rf  ri  rm  rp  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r2  r:  expectedFailurefloat#rnn_gru_lstm_module_info_decoratorsrN  rP  rR  rW  rY  r\  AdaptiveAvgPool1dAdaptiveAvgPool2dAdaptiveAvgPool3dskipAdaptiveMaxPool1dfloat64AdaptiveMaxPool2dAdaptiveMaxPool3d	AvgPool1d	AvgPool2d	AvgPool3dBatchNorm1dBatchNorm2dBatchNorm3dCELUConv1dfloat32Conv2dConv3dConvTranspose1dchalf
complex128ConvTranspose2d	complex32	complex64ConvTranspose3dELUFractionalMaxPool2dFractionalMaxPool3dL1Loss
LazyConv1d
LazyConv2d
LazyConv3dLazyConvTranspose1dLazyConvTranspose2dLazyConvTranspose3dLinearBilinearLPPool1dLPPool2d	MaxPool1d	MaxPool3dNLLLossGaussianNLLLossCrossEntropyLossGELUGLU	GroupNormbfloat16
Hardshrink	HardswishHardtanhInstanceNorm1dInstanceNorm2dInstanceNorm3dLocalResponseNorm	LayerNormTransformerEncoderr  TransformerDecoderLayerTransformerMultiheadAttention	EmbeddingReLU	LeakyReLUReLU6PReLURNNCellGRUCellLSTMCellSigmoid
LogSigmoidSiLUSoftmax	Softmax2d
LogSoftmaxSoftminSoftplus
SoftshrinkSoftsignTanh
Tanhshrink	ThresholdMishRNNGRULSTMReflectionPad1dReflectionPad2dReflectionPad3dReplicationPad1dReplicationPad2dReplicationPad3dSELU	ZeroPad1d	ZeroPad2d	ZeroPad3dCircularPad1dCircularPad2dCircularPad3dConstantPad1dConstantPad2dConstantPad3dr}  )r  r  clss   000r>   <module>r     s)       $ $     3 % :Z Zm m m L Nx x  / / 
HH	HHKKOO	HHKK##	HHKK!!	HHKK!!' 4
#  
HHOO	HH	HH	HHKK##	HHKK##T  "%&*(&	 9B8I8IJ8IWY$8IJ&*( #) *T
 * "0N#3o3M#N ') DsO ("I ((Y4
"++33HbAII*VXY //0>/?q-Nz* ) # _&ST= =@# 2 2,d 
' '(++ ++^(:"J2+\D&D0b0
<4($080Dh( (*&,
*(&-2(6(.(.(&&="=="9&9&0*"+J$L"*"
****$*:*$*"* **&*"WD,^,"0%N F&(&$,D#L802BJ5p)X>>$;|&T#J'RBR   ,4n"46   ,4n"46
   ,0M4n"46
   ,0M0.5;;.V\ 7)$&@- 7)$l4L7' #F:x(V"$$(Huxx))"J  (+H uxx))$8"J  (//#+!8			H* uxx))$8"Jj 9<I]^(++H: uxx))"J	<PS;HD uxx))$8"J	<PSEHP uxx))$8"Jj 9<I]^(+QH` uxx!!"B	<PSaHj uxx!!"B	<P  //#+!8#)kHH uxx!!"B$8  j 9<I]^(	+IHZ uxx##%)"D  (  //1LE!8  //1L<!8[HD uxx##%)"D  (  //1LE!8  //1L<!8EHn uxx##%)"D  (  //1LE!8  //1L<!8oHV uxx}}"=	<PSWH` uxx")*G1SX"Y$8,0   >t Ll\pq>R\a\i\i[jk	<P   15==%2H I<YmnaH| uxx")*G1SX"Y$8,0   >t Ll\pq>R\a\i\i[jk	<P   8 8,H\,2EMM?L   8 8,H\,15==/K   15==%2H I<Ymn%}Hf uxx")*G1SX"Y$8,0   >t Ll\pq>R\a\i\i[jk(   8 8,H\]
   15==%2H I<YmngHJ uxx''")*G1SXei"j$8,04U[[A   >t Ll\pq>R\a\i\i[jk	<'8emmUZUeUe'fh   8 8,H](-~6K   8 8,_d_j_j^lm   15==%2H I<Ymn 15;;2F GWkl%KHv uxx''")*G1SXei"j$8,04U[[A   >t Ll\pq>R\a\i\i[jk	<'8emmUZUeUe'fh   8 8,H\(-%JZJZ'[]   8 8,H\jp(-u7G7G'HJ   8 8,H\,15==/K   8 8,H](-~6K   8 8,_d_j_j^lm+0   15==%2H I<Ymn 15;;2F GWkl9wHv uxx''")*G1SXei"j4U[[A$8,0   >t Ll\pq>R\a\i\i[jk(   8 8,H\] 8 8,H\jp(-'IUce   8 8,H](-~6K   8 8,_d_j_j^lm#(   15==%2H I<Ymn 15??E2J K\[pq 15;;2F GWkl1wHp uxx||"<	<PSqHz uxx++"L$8  (j 9<I]^a{HJ	 uxx++"L$8  (j 9<I]^aK	HZ	 uxx"?  j 9<I]^	<PS[	Hh	 uxx""")*G1SW"X$8,0   >t Ll\pq>R\a\i\i[jk  )	<P	   15==%2H I<Ymni	HJ
 uxx""")*G1SW"X$8,0	<P >t Ll\pq>R\a\i\i[jk  )   8 8,H\,2EMM?L   8 8,H\,15==/K$   15==%2H I<Ymn+K
Hz
 uxx""")*G1SW"X$8,0   >t Ll\pq>R\a\i\i[jk  )(   8 8,H\]   15==%2H I<Ymn%{
Hd uxx++")*G1SWdh"i$8,0   >t Ll\pq>R\a\i\i[jk  )	<P	   15==%2H I<YmneHF uxx++")*G1SWdh"i$8,0   >t Ll\pq>R\a\i\i[jk  )	<P   8 8,H\jp(-8   8 8,H\,15==/K$   15==%2H I<Ymn+GHv uxx++")*G1SWdh"i$8,0   >t Ll\pq>R\a\i\i[jk  )(   8 8,H\]   15==%2H I<Ymn%wH` uxx"?	<Pj 9<I]^aaHn uxx  "A( ==#4d*C ==#4d*C*E F $^	H  	<Pj 9<I]^aoHJ uxx  "Aj 9<Uj 9<Y	<PSKHX uxx  "Aj 9<Uj 9<Y	<P  //#+!8#(YHx uxx!!"B	<PSyHB uxx!!"B	<PSCHL uxx!!"B$8  (+MHZ uxx"@  j 9<I]^	<PS[Hh uxx''"H  	<Pj 9<I]^abiHt uxx(("I	<PSuH~ uxx}}"=	<PSHH uxx||"<	<PSIHR uxx!!"B'DQ	<PUP^P^@_`j 9<I^_ 15==#4VZB[2\ ] ,.BPUW  j 9<I]kqrj 9<I]kpqj 9<*8fN
PSHp uxx"""C  (+qH| uxx!!"B	<P  //#+!8#(	
 "'(}HX uxx  "A	<PSYHb uxx&&")*OST"U%)	<Pj 9<I]^acHr uxx&&")*OST"U%)	<Pj 9<I]^asHB uxx&&")*OST"U%)  (j 9<I]^	aCHT uxx))"J  (+UH` uxx!!"B	<Pj 9<I]^aaHp uxx**%)"K  j 9<,13  j 9<I]^   8 8,H]^	<PSqHP uxx//%)"P 15==#4VZB[2\ ] ,.K,1ZI  j 9<,13  j 9<I]^	<PSQHp uxx//"P  j 9<,13  j 9<I]^	<PSqHH uxx##"D  j 9<,13  j 9<I]^	<PSIH` uxx**%)"K  j 9<I]^	<PSaHp uxx!!"Bj 9<I]^	<PSqH| uxx}}"=	<P  //#+!8#(	
}HX uxx!!"B	<PSYHb uxx~~">  (+cHp uxx~~">  (+qH~ uxx")*MVZ"[(Q	<PSHJ uxx"E(Q	<PSKHV uxx  "A(M	<PSWHb uxx"@	<P  //#+!8#(	
cH~ uxx"""C	<PSHH uxx}}"=	<PSIHR uxx"@	<PSSH\ uxx!!"B	<Pj 9<I]^a]Hj uxx"""C	<Pj 9<I]^akHx uxx"@	<Pj 9<I]^ayHF uxx  "A  (+GHT uxx"""C  (+UH` uxx  "A	<PSaHj uxx}}"=	<P  //#+!8#(	
kHF uxx"""C	<P  //#+!8#(	
GHb uxx!!"B  (+cHp uxx}}"=  (+qH| uxx||%)")*HQU"V(L	<PS=}HL uxx||%)")*HQV"W(L	<PS=?MHZ uxx}}%)"=(L  (+ >?[Hj uxx''"H	<PSkHt uxx''"H$8j 9<I],24j 9<I],13	<PS	uHH uxx''"H$8j 9<I],24j 9<I],13	<PS	IH\ uxx(("I	<PS]Hf uxx(("I$8j 9<I],24j 9<I],13	<PS	gHz uxx(("I$8j 9<I],24j 9<I],13	<PS	{HN uxx}}"=  (+OH\ uxx!!"B	<PS]Hf uxx!!"B	<P 8 8,H\jopsgHt uxx!!"B	<P 8 8,H\jopsuHB uxx%%"F(J	<PSCHN uxx%%"F(J	<PSOHZ uxx%%"F(J	<P 8 8,H\]`[Hj uxx%%"F	<PSkHt uxx%%"F	<P 8 8,H\jopsuHB uxx%%"F	<P 8 8,H\jopsCH	4
 HwO K*( Os+   BX;BX6)BX;	BYBYX6BX;