o
    Zhհ                     @   s  U d dl Z d dlmZmZmZmZmZmZmZ ee	e
f Zd dlZdee	 dee	 fddZdee	 dee	 dee	 fdd	Zdee	 dedee	 fd
dZdee	 dee	 fddZdee	 fddZdee	 fddZdee	 dee	 fddZdee	 dee	 fddZdee	 dee	 defddZdee	 de	dee	 fdd Zdee	 fd!dZdee	 dee	 fd"d#Zd$d%dee	 dee	 d&efd'd(Zdee	 d)eee	  d*ed+efd,d-Zdee	 d.e	d*efd/d0Zd1e	d2e	fd3d4Zd5e	d6e	d7e	d8e	d9e	d:e	d;efd<d=Zd5e	d6e	d7e	d9e	d:e	d;efd>d?Z d@ee	 dAe	dBe	dCe	dDe	dEe	dFe	dGe	dHe	dIe	dJe	dKe	dLe	dMe	fdNdOZ!d@ee	 dPee	 d9ee	 dQee	 d:ee	 d;efdRdSZ"d@ee	 dPee	 d9ee	 dQee	 d:ee	 d;efdTdUZ#d@ee	 dVeee	  dWeee
  fdXdYZ$dee	 dZee	 fd[d\Z%dee	 d]ee	 fd^d_Z&dee	 d`ee	 fdadbZ'dcee	 d.e	fdddeZ(dcee	 fdfdgZ)dcee	 d.e	fdhdiZ*dcee	 djee	 fdkdlZ+dee	 d.e	dmee	 fdndoZ,	p	$	$dadqee	 dree	 dse	dteduef
dvdwZ-dxdy Z.dee	 d.e	dzee	 d{ee	 d|e	f
d}d~Z/deee	  fddZ0d.e	deee	  fddZ1d]ee	 fddZ2dee	 dee	 de	dme	fddZ3deee	  d.e	fddZ4deee	  d.e	fddZ5dee	 d.e	dme	fddZ6dee	 dee	 fddZ7dee	 fddZ8dee	 de	de	fddZ9d@ee	 dqee	 deee	  fddZ:dee	 dee	 dZee	 dedef
ddZ;dee	 defddZ<d@ee	 dee	 deee	  d9ee	 dQee	 d:ee	 de	fddZ=dee	 dee	 deee	  d9ee	 dQee	 d:ee	 de	fddZ>d@ee	 dqee	 deee	  d9ee	 dQee	 d:ee	 de	fddZ?d@ee	 dqee	 deee	  d9ee	 dQee	 d:ee	 de	fddZ@dee	 d@ee	 dqee	 deee	  fddZA						dbd@ee	 dqee	 deee	  d9eee	  dQeee	  deee	  de	d:eee	  dee	 fddZBd@ee	 dqee	 deee	  d9ee	 dQee	 d:ee	 dedee	 de	dee	 fddZCd@ee	 dqee	 deee	  d9ee	 dQee	 d:ee	 dedee	 de	dededededee	 fddÄZDd@ee	 dqeee	  deee	  deee	  deee	  dede
de
defddʄZEd@ee	 dqee	 deee	  d9ee	 dQee	 d:ee	 de	fdd̄ZFdcd.e	de	defddфZGd@efddӄZHdcee	 fddՄZId{ededededef
ddڄZJdzed{ededededefdd܄ZKdzed{ed|ededededefddބZLd@ee	 djee	 fddZMdee	 dee	 dee	 dee	 fddZNd@ee	 de	de	fddZOd@ee	 fddZPd@ee	 fddZQdee	 d.e	defddZR	$dddee	 d.ee	 dedee	 fddZSdee	 dZee	 dee	 fddZTdee	 dee	 fddZUdedee	 de	d.e	deVee	 ee	 f fddZWdee	 dee	 dqeee	  de	deVee	 ee	 f f
ddZXd@ee	 dee	 deVee	 ee	 ee	 f fddZYd@ee	 dqeee	  deee	  deee	  deee	  dedeVee	 ee	 ee	 f fd dZZd@ee	 dqeee	  deee	  deee	  deee	  deVee	 ee	 ee	 ee	 f fddZ[				dfdee	 dee	 dqeee	  de	de	de
dee	 fdd	Z\	 ej]j^Z_i a`eaebe_f ecd
< i ZdeaebeVe_e_f f ecd< i Zeeaee_f ecd< defddZfdebdefddZgdebdedefddZhegde egde egde egde egdeH egdeH egde egde egdeJ egd eK egd!eL egd"e) egd#e* egd$e+ egd%e( egd&e/ egd'e6 egd(e, egd)e egd*e egd+e egd,e egd-e- egd.e% egd/e& egd0e' egd1e7 egd2e: egd3e" egd4e# egd5e8 egd6e9 egd7e? egd8e@ egd9eE egd:eF egd;eA egd<eC egd=eD egd>eB egd?eO egd@e4 egdAe5 egdBeM egdCeN egdDe egdEe egdFe egdGe egdHe egdIe egdJeH egdKeH egdLe; egdMe$ egdNe egdOe egdPe egdQe egdReS egdSeT egdTeU egdUeW egdVeX egdWeY egdXeZ egdYeZ egdZeZ egd[e[ egd\e\ egd]e egd^e egd_e ehd`ePeQ dS (g      N)AnyCallableDictListOptionalTupleUnionabc                 C   s   t | }t |}t||}g }t|D ]L}|d | }|d | }|d | }	|dkr/| | nd}
|	dkr9||	 nd}|
|krT|
dkrT|dkrTtd|
 d| d| ||
dkr\|n|
 q|S )N   r   zThe size of tensor a z" must match the size of tensor b (z) at non-singleton dimension )lenmaxrangeAssertionErrorappend)r	   r
   dimsAdimsBndimZexpandedSizesioffsetdimAdimBsizeAsizeB r   I/var/www/auris/lib/python3.10/site-packages/torch/jit/_shape_functions.py	broadcast   s    
r   cc                 C   s   t t | ||S Nr   r	   r
   r   r   r   r   broadcast_three3      r!   c                 C   s
   t | |S r   r   r    r   r   r   broadcast_one_three7      
r#   selfoutc                 C   s   t |dksJ t | dkst | dksJ tdt | D ]
}| | dks'J qg }tdt | d D ]	}|| |  q3|D ]}|| q?|S )N         r   r   )r   r   r   )r%   r&   r   shapeelemr   r   r   adaptive_avg_pool2d;   s   r,   c                 C   s   g }| D ]}| | q|S r   r   )r%   r&   r+   r   r   r   _copyI   s   r.   c                 C   s   t | S r   r.   r%   r   r   r   unaryP      r1   c                 C   s   t | }t |}||krtd| d| dt|D ]'}|| | }| | }|dkr/|| nd}||krB|dkrBtd|||qt| S )NzThe dims of tensor b (z5) must be less than or equal tothe dims of tensor a (z) r   r   zZThe size of tensor a {} must match the size of tensor b ({}) at non-singleton dimension {})r   r   r   formatr.   )r	   r
   r   r   r   r   r   r   r   r   r   broadcast_inplaceT   s"   
r4   sizesc           
      C   s   t |t | ks
J t |}t | }|dkrt|S g }t|D ]9}|d | }|d | }|dkr6| | nd}|| }	|	dkrH|dksFJ |}	||	krT|dksRJ |	}|| q |S )Nr   r   )r   r.   r   r   )
r%   r5   r   Z
tensor_dimr&   r   r   dimsizeZ
targetSizer   r   r   expandh   s&   r9   inp0c                 C   
   t | |S r   )r9   )r%   r5   r:   r   r   r   expand_one_unused~   r$   r<   r*   numelreturnc                 C   s   d}d }t t| D ]#}| | dkr|d urtd|}q
| | dkr*|| | 9 }q
td||ksD|d ur@|dkr@|| dksDtdt| }|d urR|| ||< |S )Nr   r6   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r.   )r*   r=   ZnewsizeZ	infer_dimr7   r&   r   r   r   infer_size_impl   s"   r?   c                 C   s   d}| D ]}||9 }q|S Nr   r   )r5   r=   r+   r   r   r   r=         
c                 C   s   t |t| S r   )r?   r=   )r%   r5   r   r   r   view   s   rB   F)implicitrC   c                C   r;   r   )rB   )r%   r5   rC   r   r   r   view_one_unused   r$   rD   opt_dimskeep_dimdtc           	      C   s   g }|d u st |dkrttt | }n|}tt | D ]%}d}|D ]}|t|t | kr0d}q#|r;|r:|d q|| |  q|S )Nr   FTr   )r   listr   maybe_wrap_dimr   )	r%   rE   rF   rG   r&   dimsidxZis_mean_dimZ
reduce_dimr   r   r   sum_mean_dim   s    
rL   r7   c                 C   s   t | |g|d }||fS r   )rL   )r%   r7   rF   r&   r   r   r   max_dim   s   rM   xyc                 C   s   | | S r   r   )rN   rO   r   r   r   div_rtn   r2   rP   	inputSize
kernelSizepad_lpad_rstridedilation	ceil_modec                 C   sZ   t | | | ||d   d |r|d nd |d }|r+|d | | | kr+|d }|S Nr   r   )rP   )rQ   rR   rS   rT   rU   rV   rW   Z
outputSizer   r   r   pooling_output_shape_pad_lr   s*   

	rY   c                 C   s$   |dksJ dt | ||||||S )Nr   zstride should not be zeero)rY   )rQ   rR   rS   rU   rV   rW   r   r   r   pooling_output_shape   s   rZ   inputkHkWdHdWpadHpadW	dilationH	dilationWnInputPlaneinputHeight
inputWidthoutputHeightoutputWidthc                 C   s   t | }|dkr|dksJ |dkr|dksJ |dkr |dks"J | d dko-| d dk}|dkr:| d dkr:|sH|dkrF|rF| d dksHJ |d |krT|d |ksVJ |dkr^|dks`J d S )Nr   r   r'   r(   r)   r   )r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   r   Z
valid_dimsr   r   r   pool2d_shape_check   s   rj   kernel_sizepaddingc                 C   s  t |dkst |dksJ d|d }t |dkr|n|d }t |dks6t |dks6t |dks6J dt |dkr>|n|d }t |dkrK|}	nt |dkrT|}	n|d }	t |dksht |dkshJ d|d }
t |dkrt|
n|d }t |dkst |dksJ d|d }t |dkr|n|d }t | dkst | d	ksJ t | d	kr| d
 nd}| d }| d }| d }t|||
|||}t||||	||}t| ||||	|
|||||||| t | dkr|||gS ||||gS )Nr   r'   zKmax_pool2d: kernel_size must either be a single int, or a tuple of two intsr   zOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intszGmax_pool2d: padding must either be a single int, or a tuple of two intszHmax_pool2d: dilation must be either a single int, or a tuple of two intsr(   r)   r6   )r   rZ   rj   )r[   rk   rU   rl   rV   rW   r\   r]   r^   r_   r`   ra   rb   rc   Znbatchrd   re   rf   rg   rh   r   r   r   
max_pool2d  sd   	&
rp   c                 C   s   t | |||||}||fS r   )rp   )r[   rk   rU   rl   rV   rW   r&   r   r   r   max_pool2d_with_indicesY  s   rq   output_sizescale_factorsc                 C   s   g }| | d  | | d  |d u r|d u rJ d|d ur>|d u s(J dt|dks0J | |d  | |d  |d url|d u sJJ dt|dksRJ | t| d |d   | t| d |d   |S )Nr   r   z5Either output_size or scale_factors must be presentedz9Must specify exactly one of output_size and scale_factorsr'   r(   )r   r   int)r[   rr   rs   r&   r   r   r   upsample_nearest2de  s(   

ru   mat2c                 C   sL   t | dks
J dt |dksJ d| d |d ksJ | d |d gS )Nr'   zself must be a matrixzmat2 must be a matrixr   r   ri   r%   rv   r   r   r   mm  s   rx   tensorc                 C   s8   t | dkrt |dksJ | d |d ksJ g }|S rX   ri   )r%   ry   r&   r   r   r   dot  s   rz   vecc                 C   s:   t | dkrt |dksJ | d |d ksJ | d gS Nr'   r   r   ri   )r%   r{   r   r   r   mv  s   
r}   lic                 C   s*   t |t| d }t| }||d |S r@   )rI   r   r.   insert)r~   r7   r&   r   r   r   	unsqueeze  s   r   c                 C   s4   g }t t| D ]}| | dkr|| |  q|S r@   )r   r   r   )r~   r&   r   r   r   r   squeeze_nodim  s   r   c                 C   sZ   g }t |t| }tt| D ]}||kr#| | dkr"|| |  q|| |  q|S r@   )rI   r   r   r   )r~   r7   r&   Zwrapped_dimr   r   r   r   squeeze  s   r   rJ   c                 C   s   t |dkr| S t|}tt |D ]}t|| t | ||< qg }tt | D ]}| | dkr<||vr;|| |  q(|| |  q(|S Nr   r   )r   r.   r   rI   r   )r~   rJ   Zwrapped_dimsr   resultr   r   r   squeeze_dims  s   r   indexc                 C   sz   t |t| }t|}t|dksJ |dks|t| k sJ g }tt| D ]}||kr3|| q'|| |  q'|S rX   )rI   r   multiply_integersr   r   )r%   r7   r   r=   result_sizer   r   r   r   index_select  s   r   r6   weightindicespadding_idxscale_grad_by_freqsparsec                 C   sB   t | dksJ t |dkrt| d|S t|}|| d  |S r|   )r   r   r.   r   )r   r   r   r   r   r8   r   r   r   	embedding  s   r   c                   C   s   dS )Nl    r   r   r   r   r   max_int  s   r   startendstepc           
      C   s   t | }|dks
J t||}|d ur|nd}|d ur|nt }|dks&J |t kr-d}|dk r7|| | 7 }|dk rA|| | 7 }|dk rHd}n
|| | krR| | }||k rY|}n
|| | krc| | }|| }t| }	|| d | |	|< |	S r   )r   rI   r   r.   )
r%   r7   r   r   r   r   Z	start_valZend_valZ	slice_lenr&   r   r   r   slice  s0   

r   tensorsc                 C   s   | D ]
}t |dksJ qd S Nr   ri   )r   ry   r   r   r   check_cat_no_zero_dim  s   r   tensor_sizesc                 C   sL   d }|D ]}t |dkr|d dks|d u rt| t |}q|d u r$| }|S rX   )r   rI   )r7   r   Zout_dimr8   r   r   r   legacy_cat_wrap_dim  s   r   c                 C   s   t | dkot| dkS r   r=   r   )ry   r   r   r   should_skip  s   r   firstsecond	dimensionc                 C   sT   t | }t |}||ksJ dtd|D ]}||kr'| | || ks'J dqd S )Nz+Tensors must have same number of dimensionsr   z/Sizes of tensors must match except in dimension)r   r   )r   r   r   r   Z
first_dimsZsecond_dimsr7   r   r   r   check_cat_shape_except_dim  s   r   c                 C   s   t |  t|| }t| dksJ d }| D ]}t|s|}q|d u r%dgS d}tt| D ]}| | }t|sDt|||| |||  }q-t|}|||< |S r   )r   r   r   r   r   r   r.   )r   r7   Znot_skipped_tensorry   Zcat_dim_sizer   r   r   r   r   cat$  s(   
r   c                 C   s,   g }| D ]}t ||}|| qt||S r   )r   r   r   )r   r7   Zunsqueezed_tensorsry   Z
unsqueezedr   r   r   stack<  s
   

r   c                 C   sx   t | }|dks
J t||}| | }|| k s||krJ |dk r&||7 }g }t|D ]}||kr9|| |  q,|S r   )r   rI   r   r   )r%   r7   r   r   r8   r&   r   r   r   r   selectD  s   
r   tensor1tensor2c                 C   s6  t | }t |}|dkr|dkrt| |S |dkr"|dkr"t| |S |dkr5|dkr5ttt| d|dS |dkrB|dkrBt| |S |dkr|dkr|dkrR| d nd}g }t|d D ]	}|| |  q\|d }g }t|d D ]	}|||  qrt||}	|	}
|dkr|
| |dkr|
| |
S J d)Nr   r'   r   ro   r6   Fz0both  arguments to matmul need to be at least 1D)	r   rz   r}   r   rx   r   r   r   r   )r   r   Zdim_tensor1Zdim_tensor2nZbatch_tensor1r   pZbatch_tensor2Zexpand_batch_portionZoutput_shaper   r   r   matmulS  s6   





r   c                 C   sJ   t | dksJ t | }|dkrg }|S |dkr| d gS | d | d gS )Nr'   r   r   ri   )r%   Zself_lenr&   r   r   r   t|  s   
r   dim0dim1c                 C   s   t | }t||}t||}||krt| S g }t|D ]!}||kr*|| |  q||kr6|| |  q|| |  q|S r   )r   rI   r.   r   r   )r%   r   r   Zndimsr&   r   r   r   r   	transpose  s   

r   biasc                 C   s,   t | t|}|d urt|||ksJ |S r   )r   r   r   )r[   r   r   r&   r   r   r   linear  s   r   mat1betaalphac                 C   s   t | t||S r   )r   rx   )r%   r   rv   r   r   r   r   r   addmm  r"   r   arrayc                 C   s   d}| D ]}|dk rd}q|S )NFr   Tr   )r   Znon_negativevalr   r   r   check_non_negative  s   r   weight_sizesgroupsc           
      C   s   t | }t |}t|rJ t|rJ ||ksJ |d |ks"J |d | dks,J | d |d | ks8J |d u sLt |dkrJ|d |d ksLJ td|D ]}	| |	 d||	d    ||	d  ||	 d  d ksoJ qQd S Nr   r   r'   )r   r   r   )
r[   r   r   rU   rl   rV   r   kZ
weight_dimr   r   r   r   check_shape_forward  s   	(
r   
input_sizeweight_sizec                 C   s   t | |||||| t|dk}t| }g }	d}
d}|	| |
  |	||  td|D ]/}|r7||d  nd}||| d  d }|	| | d||d    | ||d   d  q-|	S )Nr   r'   r   )r   r   r   r   )r   r   r   rU   rl   rV   r   has_dilationr7   rr   input_batch_size_dimweight_output_channels_dimd	dilation_kernelr   r   r   conv_output_size  s"   	*r   c                 C   4   t |dksJ t | dksJ t| ||||||S )Nr(   r   r   r[   r   r   rU   rl   rV   r   r   r   r   conv1d     	r   c                 C   r   )Nr)   r   r   r   r   r   conv2d  r   r   grad_outputbiasesc                 C   s   t |t || d gfS r@   r/   )r   r[   r   r   r   r   r   conv_backwards  s   r   r   output_paddingc                 C   s   |d u rddg}|d u rddg}|d u rddg}|d u r ddg}t |dk}t | }	g }
d}d}|
| |  |
|| |  td|	D ]5}|rO||d  nd}||| d  }|
| | d ||d   d||d    | ||d   d  qE|
S )Nr   r   r'   r   r   r   )r[   r   r   rU   rl   r   r   rV   r   r7   rr   r   r   r   r   r   r   r   r   conv_transpose2d_input  s<   

r   
transposedc	                 C   s:  t |dk}	t |dk}
t | }g }d}|rdnd}|| |  |r-||| |  n|||  td|D ]a}|	rC||d  nd}|
rM||d  nd}|rw||| d  }|| | d ||d   d||d    | | d  q9||| d  d }|| | d||d    | ||d   d  q9|S r   r   )r[   r   r   rU   rl   rV   r   r   r   r   Zhas_output_paddingr7   rr   r   r   r   r   Zoutput_padding_r   r   r   r   conv_forwards7  s>   *r   	benchmarkdeterministiccudnn_enabled
allow_tf32c              
   C   s   t | ||||||||	S r   )r   )r[   r   r   rU   rl   rV   r   r   r   r   r   r   r   r   r   r   _conv_forwardsb  s   r   running_meanrunning_vartrainingmomentumepsc	                 C   s   g }	| D ]}
|	 |
 q|	S r   r-   )r[   r   r   r   r   r   r   r   r   r&   r+   r   r   r   
batch_norm~  s   r   c                 C   r   )N   r   r   r   r   r   conv3d  r   r   Tdim_post_exprwrap_scalarc                 C   sJ   |dkr
|sJ d}| }|d }| |k s| |krJ | dk r#| |7 } | S r   r   )r7   r   r   minr   r   r   r   rI     s   rI   c                 C   s   g }|S r   r   )r[   r&   r   r   r   zero_dim_tensor  s   r   c                 C   s   d}| D ]}|| }q|S r@   r   )r~   r&   r+   r   r   r   r     rA   r   inp1inp2inp3c                 C   s   | dksJ t t| gS r   rt   mathceil)r   r:   r   r   r   r   r   r   
arange_end  s   r   c                 C   s,   |dksJ || ksJ t t||  gS r   r   )r   r   r:   r   r   r   r   r   r   arange_start  s   r   c                 C   sF   |dksJ |dk r| |ksJ n|| ksJ t t||  | gS r   r   )r   r   r   r:   r   r   r   r   r   r   arange_start_step  s
   r   c                 C   s   t | t |ks
J t |}g }g }t|D ]}t|| |}|| || |  qtd|D ]}t|D ]}|| || ksCJ q7q1|S r@   )r   r   rI   r   )r[   rJ   r   Z	seen_dimsZnewSizesr   r7   jr   r   r   permute  s   
r   sourcedestinationc                 C   s:  t | }|dkr
| S g }g }tt |D ]}|t|| | |t|| | qdd t|D }dd t|D }dd t|D }	tt |D ]}|| ||| < d||| < d|	|| < qLg }
g }|D ]}|dkrt|
| qi|	D ]}|dkr|| qw|t | }t|D ]
}|
| ||| < qt| |S )Nr   c                 S   s   g | ]}d qS r6   r   .0r   r   r   r   
<listcomp>      zmovedim.<locals>.<listcomp>c                 S      g | ]}|qS r   r   r   r   r   r   r     r   c                 S   r   r   r   r   r   r   r   r     r   r6   )r   r   r   rI   r   )r%   r   r   self_dimZnormalized_srcZnormalized_dstr   orderZsrc_dimsZdst_dimsZsource_dimsZdestination_dimsZeleZrest_dimr   r   r   movedim  s:   


r   	start_dimend_dimc                 C   s   t |t| }t |t| }||ksJ t| dkrdgS ||kr/g }| D ]}|| q%|S d}t||d D ]}|| | 9 }q8g }t|D ]	}|| |  qG|| t|d t| D ]	}|| |  q_|S r   )rI   r   r   r   )r[   r   r   r&   r+   Zslice_numelr   r*   r   r   r   flatten  s(   
r   c                 C   s   dt | gS r   ri   r[   r   r   r   nonzero_lower_bound  s   r   c                 C   s   t | t| gS r   r   r   r   r   r   nonzero_upper_bound  r"   r   keepdimc                 C   sJ   t |t| }g }t| D ]\}}||kr|r|d q|| q|S r@   )rI   r   	enumerater   )r%   r7   r   r&   r   r   r   r   r   _reduce_along_dim  s   
r   c                 C   s   |d u rg S t | ||S r   )r   )r%   r7   r   r   r   r   argmax+  s   r  c                 C   sn   t | dks
J dt |dksJ d| d |d ks J d| d |d ks,J d| d | d |d gS )Nr(   zbmm only supports 3D tensorsr   zmismatching batch dimensionr'   r   z!mismatching contracting dimensionri   rw   r   r   r   bmm3  s
   r  c                 C   s
   t | gS r   ri   r0   r   r   r   _shape_as_tensor;  r$   r  r   c                 C   sZ   t | dkrg }||fS || | ks!J d| d| d| |  t| }|||< ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r.   )r%   r   r7   r   r   r   r   topk?  s   r  target	reductionc           
      C   s   t | }t |}d|  k rdksJ  J |dksJ |dko#|dk}|s0| d |d ks0J | d }g }|d u sHt |dkrF|d |ksHJ |dkrY|dkrY| d g}	|	|fS |}	|	|fS )Nr   r'   r   r6   ri   )
r%   r  r   r  r   Z
target_dimZno_batch_dimZ	n_classesZscalar_shapereduction_shaper   r   r   nll_loss_forwardK  s   $
r  normalized_shapec                 C   sh   g }t | t | }|dksJ t|D ]	}|| |  qt|t | D ]}|d q%t| ||fS r   )r   r   r   r.   )r[   r	  r  Znum_unreduced_dimensionsr   r   r   r   native_layer_norm_  s   r
  c                 C   s$   |r| d g}ndg}t | ||fS rX   r/   )r[   r   r   r   r   r   _sizer   r   r   native_batch_norml  s   r  c                 C   s   | d g}t | ||dgfS rX   r/   )r[   r   r   r   r   r  r   r   r   _batch_norm_with_update{  s   
r          ignore_indexlabel_smoothingc                 C   s   t | |||d }|S r   )r  )r%   r  r   r  r  r  Zresult_shaper   r   r   cross_entropy_loss  s   r  shape_compute_graph_mappingbounded_compute_graph_mappingscript_func_mapfuncc                 C   s\   | t vr*tj| }tj|j tdD ]}tj|j tj	|j q|t | < t |  S )Nr'   )
r  torchZjitscript_CZ_jit_pass_inlinegraphr   Z_jit_pass_peepholeZ_jit_pass_constant_propagation)r  Zscripted_func_r   r   r   process_func  s   r  operator_schemac                 C   s   t |t| < d S r   )r  r  )r  r  r   r   r   add_shape_compute_mapping  s   r  lower_bound_funcupper_bound_funcc                 C   s   t |t |f}|t| < d S r   )r  r  )r  r  r   fnsr   r   r   add_bounded_compute_mapping  s   r"  z^aten::contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a)zFaten::rsub.Tensor(Tensor self, Scalar other, Scalar alpha=1) -> Tensorz:aten::dropout(Tensor input, float p, bool train) -> TensorzDaten::adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensorz,prim::NumToTensor.Scalar(Scalar a) -> Tensorz(prim::NumToTensor.bool(bool a) -> Tensorzuaten::zeros(int[] size, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z{aten::to.dtype(Tensor(a) self, int dtype, bool non_blocking=False, bool copy=False, int? memory_format=None) -> (Tensor(a))zvaten::arange(Scalar end, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)zaten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorzaten::arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz*aten::squeeze(Tensor(a) self) -> Tensor(a)z7aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)z:aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)z5aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)zfaten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> Tensor(a)zAaten::select.int(Tensor(a) self, int dim, int index) -> Tensor(a)z@aten::index_select(Tensor self, int dim, Tensor index) -> Tensorzaten::layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> TensorzIaten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensorzhaten::_no_grad_embedding_renorm_(Tensor weight, Tensor input, float max_norm, float norm_type) -> Tensorzgaten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)z~aten::embedding(Tensor weight, Tensor indices, int padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensorz,aten::mm(Tensor self, Tensor mat2) -> Tensorz/aten::dot(Tensor self, Tensor tensor) -> Tensorz+aten::mv(Tensor self, Tensor vec) -> Tensorz1aten::matmul(Tensor self, Tensor other) -> TensorzFaten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensorzaten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensorzaten::max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)z$aten::t(Tensor(a) self) -> Tensor(a)zDaten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)zaten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> Tensorzaten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensorzaten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensorzaten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensorzaten::convolution_backward(Tensor grad_output, Tensor input, Tensor weight, int[]? bias_sizes, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor)zaten::convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensorzaten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensorzaten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> TensorzVaten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)z0aten::cat(Tensor[] tensors, int dim=0) -> Tensorz2aten::stack(Tensor[] tensors, int dim=0) -> Tensorz6aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)zSaten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)z3aten::view(Tensor(a) self, int[] size) -> Tensor(a)z:aten::expand_as(Tensor(a) self, Tensor other) -> Tensor(a)zMaten::expand(Tensor(a) self, int[] size, *, bool implicit=False) -> Tensor(a)zaaten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensorzhaten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> TensorzZaten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)z<aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensorz;aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensorz^aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensorzbaten::upsample_nearest2d.vec(Tensor input, int[]? output_size, float[]? scale_factors) -> (Tensor)z_aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensorzraten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensorz'aten::dequantize(Tensor self) -> TensorzNquantized::add(Tensor qa, Tensor qb, float scale, int zero_point) -> Tensor qczFaten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensorz-aten::bmm(Tensor self, Tensor mat2) -> Tensorz-aten::_shape_as_tensor(Tensor self) -> Tensorzraten::topk(Tensor self, int k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)zaten::nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)zaten::native_layer_norm(Tensor input, int[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)zaten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z_batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor)zaten::cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> TensorzCaten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> TensorzMaten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> TensorzQaten::add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)z&aten::nonzero(Tensor self) -> (Tensor))r6   FF)NNNNr   N)T)NFr   )Nr   r  r  )ir   typingr   r   r   r   r   r   r   rt   floatnumberr  rH   r   r!   r#   r,   r.   r1   r4   r9   r<   r?   r=   rB   boolrD   rL   rM   rP   rY   rZ   rj   rp   rq   ru   rx   rz   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   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r  r  r  tupler  r  r
  r  r  r  r  ZScriptFunctionZScriptFnr  dictstr__annotations__r  r  r  r  r"  r   r   r   r   <module>   s  
$"$



	

"
F






)&*	














	
'
	

+
	





	




*!
"2











