U
    9%e                     @   sv  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ee	 ee	 dddZee	 ee	 ee	 dddZee	 eee	 dd	d
Zee	 ee	 dddZee	 dddZee	 dddZee	 ee	 dddZee	 ee	 dddZee	 ee	 edddZee	 e	ee	 dddZee	 ddd Zee	 ee	 dd!d"Zd#d$ee	 ee	 ed%d&d'Zee	 eee	  eed(d)d*Zee	 e	ed+d,d-Ze	e	d.d/d0Ze	e	e	e	e	e	ed1d2d3Ze	e	e	e	e	ed4d5d6Zee	 e	e	e	e	e	e	e	e	e	e	e	e	e	d7d8d9Z ee	 ee	 ee	 ee	 ee	 ed:d;d<Z!ee	 ee	 ee	 ee	 ee	 ed:d=d>Z"ee	 eee	  eee
  d?d@dAZ#ee	 ee	 dBdCdDZ$ee	 ee	 dEdFdGZ%ee	 ee	 dHdIdJZ&ee	 e	dKdLdMZ'ee	 dNdOdPZ(ee	 e	dKdQdRZ)ee	 ee	 dSdTdUZ*ee	 e	ee	 dVdWdXZ+d4ee	 ee	 e	eedZd[d\Z,d]d^ Z-ee	 e	ee	 ee	 e	d_d`daZ.eee	  dbdcddZ/e	eee	  dedfdgZ0ee	 dhdidjZ1ee	 ee	 e	e	dkdldmZ2eee	  e	dndodpZ3eee	  e	dndqdrZ4ee	 e	e	dVdsdtZ5ee	 ee	 dudvdwZ6ee	 ddxdyZ7ee	 e	e	dzd{d|Z8ee	 ee	 eee	  d}d~dZ9ee	 ee	 ee	 eedddZ:ee	 edddZ;ee	 ee	 eee	  ee	 ee	 ee	 e	dddZ<ee	 ee	 eee	  ee	 ee	 ee	 e	dddZ=ee	 ee	 eee	  ee	 ee	 ee	 e	dddZ>ee	 ee	 eee	  ee	 ee	 ee	 e	dddZ?ee	 ee	 ee	 eee	  dddZ@d5ee	 ee	 eee	  eee	  eee	  eee	  e	eee	  ee	 d	ddZAee	 ee	 eee	  ee	 ee	 ee	 eee	 e	ee	 d
ddZBee	 ee	 eee	  ee	 ee	 ee	 eee	 e	eeeeee	 dddZCee	 eee	  eee	  eee	  eee	  ee
e
ed	ddZDee	 ee	 eee	  ee	 ee	 ee	 e	dddZEd6e	e	edddZFedddZGee	 dNddZHeeeeedddZIeeeeeedddZJeeeeeeedddZKee	 ee	 dddZLee	 ee	 ee	 ee	 dddZMee	 e	e	dddZNee	 dddZOee	 dddZPee	 e	edddĄZQd7ee	 ee	 eee	 dŜddǄZRee	 ee	 ee	 dȜddʄZSee	 ee	 d˜dd̈́ZTd8ee	 e	e	eee	 ee	 f dΜddЄZUee	 ee	 eee	  e	eee	 ee	 f dќddӄZVee	 ee	 eee	 ee	 ee	 f dԜddքZWee	 eee	  eee	  eee	  eee	  eeee	 ee	 ee	 f dלddلZXd9ee	 ee	 eee	  e	e	e
ee	 dܜddބZYejZj[Z\i a]ee^e\f e_d< i Z`ee^ee\e\f f e_d< i Zaeee\f e_d< edddZbe^edddZce^eedddZdecde ecde ecde ecde ecdeG ecdeG ecde ecde ecdeI ecdeJ ecdeK ecde( ecde) ecde* ecde' ecde. ecde5 ecde+ ecde ecde ecde ecd e ecde, ecde$ ecde% ecde& ecde6 ecde9 ecde! ecde" ecd	e7 ecd
e8 ecde> ecde? ecdeD ecdeE ecde@ ecdeB ecdeC ecdeA ecdeN ecde3 ecde4 ecdeL ecdeM ecde ecde ecde ecde ecde ecde ecdeG ecdeG ecd e: ecd!e# ecd"e ecd#e ecd$e ecd%e ecd&eR ecd'eS ecd(eT ecd)eU ecd*eV ecd+eW ecd,eX ecd-eX ecd.eX ecd/eY ecd0e ecd1e ecd2e edd3eOeP dS (:      N)AnyCallableDictListOptionalTupleUnion)abc                 C   s   t | }t |}t||}g }t|D ]}|d | }|d | }|d | }	|dkr^| | nd}
|	dkrr||	 nd}|
|kr|
dkr|dkrt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   Y/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torch/jit/_shape_functions.py	broadcast   s     
r   r	   r
   cc                 C   s   t t | ||S Nr   r   r   r   r   broadcast_three1   s    r!   c                 C   s
   t | |S r   r    r   r   r   r   broadcast_one_three5   s    r"   )selfoutc                 C   s   t |dkstt | dks,t | dks,ttdt | D ]}| | dks:tq:g }tdt | d D ]}|| |  qf|D ]}|| q~|S )N         r   r   )r   r   r   r   )r#   r$   r   shapeelemr   r   r   adaptive_avg_pool2d9   s    r*   r#   c                 C   s   g }| D ]}| | q|S r   r   )r#   r$   r)   r   r   r   _copyG   s    r-   c                 C   s   t | S r   r-   r+   r   r   r   unaryN   s    r/   c                 C   s   t | }t |}||kr.td| d| dt|D ]N}|| | }| | }|dkr^|| nd}||kr6|dkr6td|||q6t| 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_inplaceR   s&      r1   r#   sizesc           
      C   s   t |t | kstt |}t | }|dkr4t|S g }t|D ]r}|d | }|d | }|dkrl| | nd}|| }	|	dkr|dkst|}	||	kr|dkst|	}|| q@|S )Nr   r   )r   r   r-   r   r   )
r#   r3   r   Z
tensor_dimr$   r   r   dimsizeZ
targetSizer   r   r   expandf   s&    r7   r#   r3   inp0c                 C   s
   t | |S r   )r7   r8   r   r   r   expand_one_unused|   s    r:   )r(   numelreturnc                 C   s   d}d }t t| D ]H}| | dkr:|d k	r4td|}q| | dkrT|| | 9 }qtdq||ks|d k	r|dkr|| dkstdt| }|d k	r|| ||< |S )Nr   r4   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r-   )r(   r;   ZnewsizeZ	infer_dimr5   r$   r   r   r   infer_size_impl   s.    

r=   )r3   c                 C   s   d}| D ]}||9 }q|S Nr   r   )r3   r;   r)   r   r   r   r;      s    
r;   c                 C   s   t |t| S r   )r=   r;   r2   r   r   r   view   s    r?   F)implicitr#   r3   r@   c                C   s
   t | |S r   )r?   rA   r   r   r   view_one_unused   s    rB   )r#   opt_dimskeep_dimdtc           	      C   s   g }|d kst |dkr*ttt | }n|}tt | D ]J}d}|D ]}|t|t | krFd}qF|rv|r|d q:|| |  q:|S )Nr   FTr   )r   listr   maybe_wrap_dimr   )	r#   rC   rD   rE   r$   dimsidxZis_mean_dimZ
reduce_dimr   r   r   sum_mean_dim   s    rJ   )r#   r5   rD   c                 C   s   t | |g|d }||fS r   )rJ   )r#   r5   rD   r$   r   r   r   max_dim   s    rK   xyc                 C   s   | | S r   r   rL   r   r   r   div_rtn   s    rO   )	inputSize
kernelSizepad_lpad_rstridedilation	ceil_modec                 C   sZ   t | | | ||d   d |r(|d nd |d }|rV|d | | | krV|d }|S Nr   r   )rO   )rP   rQ   rR   rS   rT   rU   rV   Z
outputSizer   r   r   pooling_output_shape_pad_lr   s*    

	rX   rP   rQ   rR   rT   rU   rV   c                 C   s$   |dkst dt| ||||||S )Nr   zstride should not be zeero)r   rX   rY   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 t|dkr0|dks4t|dkrD|dksHt| d dko^| d dk}|dkrx| d dkrx|s|dkr|r| d dkst|d |kr|d |kst|dkr|dkstd S )Nr   r   r%   r&   r'   r   r   )r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   r   ZnOutputPlaneZ
valid_dimsr   r   r   pool2d_shape_check   s(    

rj   )r[   kernel_sizerT   paddingrU   rV   c                 C   s  t |dks t |dks td|d }t |dkr8|n|d }t |dkslt |dkslt |dksltdt |dkr||n|d }t |dkr|}	nt |dkr|}	n|d }	t |dkst |dkstd|d }
t |dkr|
n|d }t |dkst |dkstd|d }t |dkr.|n|d }t | dksVt | d	ksVtt | d	krl| d
 nd}| d }| d }| d }t|||
|||}t||||	||}t| ||||	|
|||||||| t | dkr|||gS ||||gS d 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'   r4   )r   r   rZ   rj   )r[   rk   rT   rl   rU   rV   r\   r]   r^   r_   r`   ra   rb   rc   Znbatchrd   re   rf   rg   rh   r   r   r   
max_pool2d  s    	








 
rp   c                 C   s   t | |||||}||fS r   )rp   )r[   rk   rT   rl   rU   rV   r$   r   r   r   max_pool2d_with_indicesX  s    rq   )r[   output_sizescale_factorsc                 C   s   g }| | d  | | d  |d kr<|d kr<ds<td|d k	r|d ksTtdt|dksdt| |d  | |d  |d k	r|d kstdt|dkst| 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   r   int)r[   rr   rs   r$   r   r   r   upsample_nearest2dd  s,    ru   r#   mat2c                 C   sL   t | dkstdt |dks(td| d |d ks<t| d |d gS )Nr%   zself must be a matrixzmat2 must be a matrixr   r   ri   rv   r   r   r   mm  s    rx   )r#   tensorc                 C   s8   t | dkrt |dkst| d |d ks0tg }|S rW   ri   )r#   ry   r$   r   r   r   dot  s    rz   r#   Zvecc                 C   s:   t | dkrt |dkst| d |d ks0t| d gS Nr%   r   r   ri   r{   r   r   r   mv  s    r}   )lir5   c                 C   s*   t |t| d }t| }||d |S r>   )rG   r   r-   insert)r~   r5   r$   r   r   r   	unsqueeze  s    r   )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 ]6}||krF| | dkrT|| |  q|| |  q|S r>   )rG   r   r   r   )r~   r5   r$   Zwrapped_dimr   r   r   r   squeeze  s    r   )r~   rH   c                 C   s   t |dkr| S t|}tt |D ]}t|| t | ||< q$g }tt | D ]6}| | dkrx||kr|| |  qP|| |  qP|S Nr   r   )r   r-   r   rG   r   )r~   rH   Zwrapped_dimsr   resultr   r   r   squeeze_dims  s    r   )r#   r5   indexc                 C   sz   t |t| }t|}t|dks&t|dks>|t| k s>tg }tt| D ]&}||krf|| qN|| |  qN|S rW   )rG   r   multiply_integersr   r   r   )r#   r5   r   r;   result_sizer   r   r   r   index_select  s    r   r4   )weightindicespadding_idxscale_grad_by_freqsparsec                 C   sB   t | dkstt |dkr(t| d|S t|}|| d  |S r|   )r   r   r   r-   r   )r   r   r   r   r   r6   r   r   r   	embedding  s    r   c                   C   s   dS )Nl    r   r   r   r   r   max_int  s    r   )r#   r5   startendstepc           
      C   s   t | }|dkstt||}|d k	r*|nd}|d k	r:|nt }|dksLt|t krZd}|dk rn|| | 7 }|dk r|| | 7 }|dk rd}n|| | kr| | }||k r|}n|| | kr| | }|| }t| }	|| d | |	|< |	S r   )r   r   rG   r   r-   )
r#   r5   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tqd S Nr   ri   )r   ry   r   r   r   check_cat_no_zero_dim  s    r   )r5   tensor_sizesc                 C   sL   d }|D ]2}t |dkr$|d dks|d krt| t |}q|d krH| }|S rW   )r   rG   )r5   r   Zout_dimr6   r   r   r   legacy_cat_wrap_dim  s    r   ry   c                 C   s   t | dkot| dkS r   r;   r   r   r   r   r   should_skip  s    r   )firstsecond	dimensionr   c                 C   sT   t | }t |}||ks tdtd|D ]$}||kr*| | || ks*t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   r   Z
first_dimsZsecond_dimsr5   r   r   r   check_cat_shape_except_dim  s    r   )r   r5   c                 C   s   t |  t|| }t| dks"td }| D ]}t|s*|}q*|d krJdgS d}tt| D ].}| | }t|sZt|||| |||  }qZt|}|||< |S r   )r   r   r   r   r   r   r   r-   )r   r5   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   r5   Zunsqueezed_tensorsry   Z
unsqueezedr   r   r   stack;  s
    
r   c                 C   sx   t | }|dkstt||}| | }|| k s8||kr<t|dk rL||7 }g }t|D ]}||krX|| |  qX|S r   )r   r   rG   r   r   )r#   r5   r   r   r6   r$   r   r   r   r   selectC  s    
r   )tensor1tensor2c                 C   sf  t | }t |}|dkr*|dkr*t| |S |dkrD|dkrDt| |S |dkrj|dkrjttt| d|dS |dkr|dkrt| |S |dkrT|dkrT|dkr| d nd}| d }g }t|d D ]}|| |  q|dkr|d nd}|d }	g }
t|d D ]}|
||  qt||
}|}|dkr<|| |dkrP||	 |S dsbt	dd S )Nr   r%   r   ro   r4   Fz0both  arguments to matmul need to be at least 1D)
r   rz   r}   r   rx   r   r   r   r   r   )r   r   Zdim_tensor1Zdim_tensor2nm1Zbatch_tensor1r   m2pZbatch_tensor2Zexpand_batch_portionZoutput_shaper   r   r   matmulR  s:    







r   c                 C   sN   t | dkstt | }|dkr(g }|S |dkr:| d gS | d | d gS d S )Nr%   r   r   ri   )r#   Zself_lenr$   r   r   r   t}  s    
r   )r#   dim0dim1c                 C   s   t | }t||}t||}||kr,t| S g }t|D ]B}||krT|| |  q8||krl|| |  q8|| |  q8|S r   )r   rG   r-   r   r   )r#   r   r   Zndimsr$   r   r   r   r   	transpose  s    

r   )r[   r   biasc                 C   s,   t | t|}|d k	r(t|||ks(t|S r   )r   r   r   r   )r[   r   r   r$   r   r   r   linear  s    r   r#   Zmat1rw   betaalphac                 C   s   t | t||S r   )r   rx   r   r   r   r   addmm  s    r   )arrayr<   c                 C   s   d}| D ]}|dk rd}q|S )NFr   Tr   )r   Znon_negativevalr   r   r   check_non_negative  s
    r   )r[   weight_sizesr   rT   rl   rU   groupsc           
      C   s   t | }t |}t|rtt|r(t||ks4t|d |ksDt|d | dksXt| d |d | kspt|d kst |dkr|d |d ksttd|D ]<}	| |	 d||	d    ||	d  ||	 d  d kstqd S Nr   r   r%   )r   r   r   r   )
r[   r   r   rT   rl   rU   r   kZ
weight_dimr   r   r   r   check_shape_forward  s    	(r   )
input_sizeweight_sizer   rT   rl   rU   r   c                 C   s   t | |||||| t|dk}t| }g }	d}
d}|	| |
  |	||  td|D ]^}|rn||d  nd}||| d  d }|	| | d||d    | ||d   d  qZ|	S )Nr   r%   r   )r   r   r   r   )r   r   r   rT   rl   rU   r   has_dilationr5   rr   input_batch_size_dimweight_output_channels_dimd	dilation_kernelr   r   r   conv_output_size  s.    	      *r   r[   r   r   rT   rl   rU   r   c                 C   s4   t |dkstt | dks tt| ||||||S )Nr&   r   r   r   r   r   r   r   conv1d  s    	r   c                 C   s4   t |dkstt | dks tt| ||||||S )Nr'   r   r   r   r   r   conv2d  s    	r   Zgrad_outputr[   r   Zbiasesc                 C   s   t |t || d gfS r>   r.   r   r   r   r   conv_backwards  s    r   r   )	r[   r   r   rT   rl   output_paddingr   rU   r<   c                 C   s   |d krddg}|d kr ddg}|d kr0ddg}|d kr@ddg}t |dk}t | }	g }
d}d}|
| |  |
|| |  td|	D ]j}|r||d  nd}||| d  }|
| | d ||d   d||d    | ||d   d  q|
S )Nr   r   r%   r   r   r   )r[   r   r   rT   rl   r   r   rU   r   r5   rr   r   r   r   r   r   r   r   r   conv_transpose2d_input  s<    

r   )
r[   r   r   rT   rl   rU   
transposedr   r   r<   c	                 C   s:  t |dk}	t |dk}
t | }g }d}|r0dnd}|| |  |rZ||| |  n|||  td|D ]}|	r||d  nd}|
r||d  nd}|r||| d  }|| | d ||d   d||d    | | d  qr||| d  d }|| | d||d    | ||d   d  qr|S r   r   )r[   r   r   rT   rl   rU   r   r   r   r   Zhas_output_paddingr5   rr   r   r   r   r   Zoutput_padding_r   r   r   r   conv_forwards8  s>    *r   )r[   r   r   rT   rl   rU   r   r   r   	benchmarkdeterministiccudnn_enabled
allow_tf32r<   c              
   C   s   t | ||||||||	S r   )r   )r[   r   r   rT   rl   rU   r   r   r   r   r   r   r   r   r   r   _conv_forwardsc  s    r   )	r[   r   r   running_meanrunning_vartrainingmomentumepsr   c	                 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   s4   t |dkstt | dks tt| ||||||S )N   r   r   r   r   r   conv3d  s    	r   T)r5   dim_post_exprwrap_scalarc                 C   sJ   |dkr|st d}| }|d }| |k s2| |kr6t | dk rF| |7 } | S r   )r   )r5   r   r   minr   r   r   r   rG     s    rG   r[   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     s    
r   r   r9   inp1inp2inp3c                 C   s   | dkst tt| gS r   r   rt   mathceilr   r   r   r   
arange_end  s    r   r   r   r9   r   r   r   c                 C   s,   |dkst || kst tt||  gS r   r   r   r   r   r   arange_start  s    r   r   r   r   r9   r   r   r   c                 C   sF   |dkst |dk r"| |ks.t n|| ks.t tt||  | gS r   r   r   r   r   r   arange_start_step  s
    r   )r[   rH   c                 C   s   t | t |kstt |}g }g }t|D ]*}t|| |}|| || |  q,td|D ]&}t|D ]}|| || ksntqnqb|S r>   )r   r   r   rG   r   )r[   rH   r   Z	seen_dimsZnewSizesr   r5   jr   r   r   permute  s    
r   )r#   sourcedestinationr<   c                 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|	|| < qg }
g }|D ]}|dkr|
| q|	D ]}|dkr|| q|t | }t|D ]}|
| ||| < qt| |S )Nr   c                 S   s   g | ]}d qS )r4   r   .0r   r   r   r   
<listcomp>  s     zmovedim.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r   r   r   r   r     s     c                 S   s   g | ]}|qS r   r   r   r   r   r   r     s     r4   )r   r   r   rG   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  s6    r   )r[   	start_dimend_dimc                 C   s   t |t| }t |t| }||ks(tt| dkr:dgS ||kr^g }| D ]}|| qJ|S d}t||d D ]}|| | 9 }qpg }t|D ]}|| |  q|| t|d t| D ]}|| |  q|S r   )rG   r   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   r   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  s    r   r#   r5   keepdimc                 C   sJ   t |t| }g }t| D ]*\}}||kr:|rD|d q|| q|S r>   )rG   r   	enumerater   )r#   r5   r   r$   r   r   r   r   r   _reduce_along_dim   s    r  )r#   r5   r   r<   c                 C   s   |d krg S t | ||S r   )r  r   r   r   r   argmax,  s    r  )r#   rw   r<   c                 C   sn   t | dkstdt |dks(td| d |d ks@td| d |d ksXtd| d | d |d gS )Nr&   zbmm only supports 3D tensorsr   zmismatching batch dimensionr%   r   z!mismatching contracting dimensionri   rv   r   r   r   bmm4  s
    r  )r#   r<   c                 C   s
   t | gS r   r   r+   r   r   r   _shape_as_tensor<  s    r  )r#   r   r5   r<   c                 C   sT   t | dkrg }n:|| | ks<td| d| d| |  t| }|||< ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r   r-   )r#   r   r5   r   r   r   r   topk@  s    
r  )r#   targetr   	reductionr<   c           
      C   s   t | }t |}d|  k r$dks*n t|dks6t|dkoD|dk}|s^| d |d ks^t| d }g }|d kst |dkr|d |kst|dkr|dkr| d g}	n|}	|	|fS )Nr   r%   r   r4   ri   )
r#   r  r   r  r   Z
target_dimZno_batch_dimZ	n_classesZscalar_shapereduction_shaper   r   r   nll_loss_forwardL  s    $r
  )r[   normalized_shaper<   c                 C   sh   g }t | t | }|dks tt|D ]}|| |  q(t|t | D ]}|d qJt| ||fS r   )r   r   r   r   r-   )r[   r  r	  Znum_unreduced_dimensionsr   r   r   r   native_layer_norm`  s    r  )r[   r   r   r   r   r   r<   c                 C   s$   |r| d g}ndg}t | ||fS rW   r.   )r[   r   r   r   r   r   _sizer   r   r   native_batch_normm  s    r          )r#   r  r   r  ignore_indexlabel_smoothingr<   c                 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 krTt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_schemar  c                 C   s   t |t| < d S r   )r  r  r  r   r   r   add_shape_compute_mapping  s    r   )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)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))r4   FF)NNNNr   N)T)NF)r4   )Nr   r  r  )er   typingr   r   r   r   r   r   r   rt   floatnumberr  r   r!   r"   r*   r-   r/   r1   r7   r:   r=   r;   r?   boolrB   rJ   rK   rO   rX   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   rG   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r
  r  r  r  r  ZScriptFunctionZScriptFnr  str__annotations__r  r  r  r   r$  r   r   r   r   <module>   sD   $  
  $G

         +""

 



     




(
,





     	      $!    ,  
  



   
     

                