
    ΧgK=                    .   d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZ g dZ ej        ej        d          Zd?dZ ed           ej        ddd          d@d?d                        Z ed           ej        dd          d?d                        ZdAdZ ed           ej        ddd          d?d                        Z ed            ej        ddd          d?d!                        Z ed"          d?d#            Z ed$          d?d%            Z ed&          d?d'            Z ed(          d?d)            Z  ed*           ej        ddddd+          d?d,                        Z! ed-          d?d.            Z" ed/           ej        ddd          dBd2                        Z# ed3           ej        ddd          dBd4                        Z$ ed5          d?d6            Z% ed7          d?d8            Z& ed9          d?d:            Z' ed;           ej        dd+dd          d?d<                        Z( ed=           ej        ddddd          d@d?d>                        Z)dS )C    )annotationsN)_onnx)_type_utilserrorssymbolic_helpersymbolic_opset9utils)	jit_utilsregistration)argmaxargmin binary_cross_entropy_with_logitscelucross_entropy_lossdropouteinsumgelenative_dropoutnll_loss
nll_loss2dnll_loss_ndouterpow	tensordotunfold   )opsetgjit_utils.GraphContextc                    |st          d          t          j        |d                   rD fd|D             }                     d  j        dg|R d|it          j        j                  S   j        dg|R d|iS )NzEinsum inputs are empty.r   c                ^    g | ])}                     d |t          j        j                  *S )Castto_i)op_C_onnxTensorProtoDataTypeINT64).0tensorr   s     W/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/onnx/symbolic_opset12.py
<listcomp>z"_einsum_helper.<locals>.<listcomp>5   sA     
 
 
 DDg&A&GDHH
 
 
    r#   Einsum
equation_sr$   )RuntimeErrorr   _is_boolr&   r'   r(   BOOL)r   equationtensorss   `  r,   _einsum_helperr6   0   s     75666
++ =
 
 
 
!
 
 
 ttAD9G99999,1  
 
 	
 qtH<w<<<8<<<r.   zaten::einsumsvisc                L    t          j        |          }t          | ||          S N)r   _unpack_listr6   )r   r4   tensor_listpathr5   s        r,   r   r   B   s&     *;77G!Xw///r.   zaten::outerc                V   t           j                            |t           j        j                  t           j                            |          k    rG|                     d|t           j                            |                                                    }t          | d||g          S )Nr#   r$   zi,j->ij)r   JitScalarType
from_value	UNDEFINEDr&   	onnx_typer6   r   inputothers      r,   r   r   I   s      ++{(2 		"	-	-e	4	45 5 *55e<<FFHH  
 

 !Y777r.   rE   torch._C.Valuepfloattrainboolreturn,tuple[torch._C.Value, torch._C.Value | None]c                6   t          j        |d           |s|d fS |                     dt          j        |                    }|                     dt          j        |t          j                            }|                     d|||d          \  }}||fS )Nr   Constantvalue_tdtypeDropout   )outputs)r   check_training_moder&   torchr+   rK   )r   rE   rH   rJ   trmasks          r,   &_dropout_returns_masked_input_and_maskr\   X   s     'y999  d{	Za11A	Ze5:!F!F!FGGAdd9eQ1d55GAtd7Nr.   zaten::dropoutfbc                0    t          | |||          \  }}|S r;   r\   )r   rE   rH   rJ   masked_s         r,   r   r   f   s      7q%EJJIFAMr.   zaten::native_dropoutc                &    t          | |||          S r;   r`   )r   rE   rH   rJ   s       r,   r   r   m   s     2!UAuEEEr.   zaten::nll_lossc                *   t          j        |d          }g d}||         }t          j        |d          }|                                                                r|                     d||||          }n|                     d|||||          }|S )NinonemeansumNegativeLogLikelihoodLossreduction_signore_index_i)r   _maybe_get_constnode
mustBeNoner&   )r   selftargetweight	reductionignore_indexreduction_valsnlllosss           r,   r   r   s   s    
  0C@@I,,,Ny)I #3L#FFL{{}}!! 
$$'!'  
 
 $$'!'  
 
 Nr.   zaten::nll_loss2dc                *    t          | |||||          S r;   r   r   rq   rr   rs   rt   ru   s         r,   r   r           AtVVYEEEr.   zaten::nll_loss_ndc                *    t          | |||||          S r;   ry   rz   s         r,   r   r      r{   r.   zaten::cross_entropy_lossc                   t          j        |d          }g d}||         }t          j        |d          }||dk    rt          j        d|          t          j        |d          }|                                                                r|                     d||||          }n|                     d|||||          }|S )Nre   rf   r]   g        z2Unsupported: ONNX does not support label_smoothingSoftmaxCrossEntropyLossrk   )r   rn   r   SymbolicValueErrorro   rp   r&   )	r   rq   rr   rs   rt   ru   label_smoothingrv   celosss	            r,   r   r      s      0C@@I,,,Ny)I%6LLO"'<'<'@$
 
 	
 #3L#FFL{{}}!! 
%!'  
 
 %!'  
 
 Mr.   z&aten::binary_cross_entropy_with_logitsre   c                   |                      dt          j        dg                    }t          j        | |          }t          j        | |          }t          j        | ||          }	t          j        | ||          }
t          j        | |	          }|t          j        |          rRt          j	        | t          j
        | t          j        | ||          t          j        | |
|                              }net          j	        | t          j
        | t          j        | t          j        | ||          |          t          j        | |
|                              }|*t          j        |          st          j        | ||          }t          j        |d          }|dk    r|S |dk    r|                      d|d          S |dk    r|                      d	|d          S t          j        d
|          S )NrO      rP   re   r   
ReduceMean)
keepdims_irU   	ReduceSumzMbinary_cross_entropy_with_logits with reduction other than none, mean, or sum)r&   rX   r+   opset9sigmoidlogsubr   _is_nonenegaddmulrn   _onnx_unsupported)r   rE   rr   rs   
pos_weightrt   rH   sig_x	log_sig_xsub_1_xsub_1_ylog_1_xoutputs                r,   r   r      s   
 	
Zqc!2!233AN1e$$E
1e$$IjAu%%GjAv&&GjG$$G_5jAAJ6:a33VZ7G5T5T 
 
 J
1fjFI>>
KK
1gw// 
 
 /":6"B"BAvv..0C@@IA~~	attL&Qt777	attKAt6660[
 
 	
r.   z
aten::celuc                   t          j        |d          }t          j                            |t          j        j                  t          j        j        k    rf|                     d|t          j	        j
                  }|                     d||          }|                     d|t          j	        j                  S |                     d||          S )Nr]   r#   r$   Celu)alpha_f)r   rn   r   r@   rA   rB   DOUBLEr&   r'   r(   FLOAT)r   rq   alphaouts       r,   r   r      s    ,UC88E 	!,,T;3L3VWW$+	, 	, ttFDw'B'HtIIdd64d//ttFCg&A&HtIII44e4,,,r.   zaten::argmaxdimkeepdimc                2    t          j        | |||d          S )NArgMaxr   _argmin_argmax_helperr   rE   r   r   s       r,   r   r          0E3RRRr.   zaten::argminc                2    t          j        | |||d          S )NArgMinr   r   s       r,   r   r     r   r.   z	aten::powc                0    |                      d||          S )NPowr&   )r   rq   exponents      r,   r   r   #  s    44tX&&&r.   zaten::gec                0    |                      d||          S )NGreaterOrEqualr   rD   s      r,   r   r   (  s    44 %///r.   zaten::lec                0    |                      d||          S )NLessOrEqualr   rD   s      r,   r   r   -  s    44ue,,,r.   zaten::unfoldc           
     	   t          j        |d          }t          j        |d          }t          j        |          s,t          j        |          st          j        | ||||          S t          j        ||          }||                     dt          j        d                    }|                     dt          j        |                    }	|                     dt          j        |dz                       }
|                     d||	|          }|                     d||
|          }t          j	        | ||                     dt          j        d                              }t          j	        | ||                     dt          j        d                              }t          j
        |          }|J t          t          d|                    }|                    |                    |                     g }|                     dt          j        d                    }|                     d|t          j        j                  }|                     d	||          }t%          j        | d
||d          \  }\  }}|j        }t+          j        |          }t+          j        |          }|                    d||          }|                    d||          }|                    dt          j        dg                    }t          j        ||dg          }t          j        ||dg          }|                    d||||          }t          j        ||                    d||          |g          }|                    |            |j        dg|R ddi}|                    d|t          j        j                  } t+          j        ||            t+          j        ||           |                                                                }!g d}||dz            |d         c|d<   ||dz   <   |                     d|!|          }"t          j        | |"dg          }#|#S t          j        dd          S )Nre   rO   r   rP   r   Ranger#   r$   MinLoop)n_blocksGatherrU   Slice	Transpose)perm_iConcataxis_i)r   r   rU         Unfoldzinput size not accessible)r   rn   	_is_valuer   r   _get_tensor_dim_sizer&   rX   r+   _size_helper_get_tensor_ranklistrangeappendpopr'   r(   r3   r
   add_op_with_blocksblockr	   _add_input_to_block_unsqueeze_helper_add_output_to_blockro   r   _squeeze_helper_unimplemented)$r   rE   	dimensionsizestep
const_size
const_stepsizedim	low_startlow_endhi_endlow_indices
hi_indiceslow_sizehi_sizendimpermunsqueeze_listloop_conditionloop_lenlooploop_contextrb   
loop_blockblock_input_itercondstartsendsaxesstack	unsqueezeconcatcond_outloop_output	transposesqueezes$                                       r,   r   r   2  sH    !1$<<J 1$<<J$Z00 J9R: : J }Qy*jIII25)DDGDDU\!__D==	$$z5<+@+@$AAj%,w{*C*CDDdd7Iw==TT'466
"/{ADDU\!__DEE
 
 ".z144
ELOO4DD
 
 /66E!TNN##DHHY''(((j%,q//BBN)D)I  
 
 44x11#,#?vx!$
 $
 $
 o|q "'
 4Z@@(44;8HIIx5EFFz5<3D3DEE 2<!MM0taSIIdCC#5,//+uT/JJYK
 
	 	i((( ENEEE1EE??NG$?$D
 
 	":x888":v666iikk((**'+IM':DG$Qi!m$DDk$D??	!1!YDD)(4OPPPr.   zaten::tensordotc           	        |t          j        dd           t          j        |          t          j        d|          t          j        |          t          j        d|          fdt          t                              D             fdt          t                              D             fdt                    D             }fdt                    D             }t          j        | ||z             }t          j        | ||z             }	| 	                    d	|          }
t          j
        | |
d
gd
gt          |          g          }|| 	                    dt          j        dgt          j                            g}t          j        | ||          }| 	                    d	|          }
t          j
        | |
d
gdgt          j        g          }| 	                    dt          j        dgt          j                            |g}t          j        | ||          }| 	                    d	|	          }
t          j
        | |
d
gt                    gt          j        g          }t          j
        | |
d
gd
gt                    g          }|| 	                    dt          j        dgt          j                            g}t          j        | |	|          }| 	                    d	|          }
t          j
        | |
d
gdgt          j        g          }| 	                    dt          j        dgt          j                            |g}t          j        | |	|          }t#          | d | j	        dg||gR            }||g}t          j        | ||          S )N	Tensordotz-Out parameter is not supported for tensordot.zJUnsupported: ONNX export of tensordot for tensor(input_a) of unknown rank.zJUnsupported: ONNX export of tensordot for tensor(input_b) of unknown rank.c                N    g | ]!}|         d k     r|         z   n|         "S r    )r*   re   dim_count_adims_as     r,   r-   ztensordot.<locals>.<listcomp>  G        '-Qi!mm[	 	 &)  r.   c                N    g | ]!}|         d k     r|         z   n|         "S r   r   )r*   re   dim_count_bdims_bs     r,   r-   ztensordot.<locals>.<listcomp>  r   r.   c                    g | ]}|v|	S r   r   )r*   re   r   s     r,   r-   ztensordot.<locals>.<listcomp>      FFFQf__1___r.   c                    g | ]}|v|	S r   r   )r*   re   r   s     r,   r-   ztensordot.<locals>.<listcomp>  r   r.   Shaper   )r   r   r   rO   rR   rP   z	ij,jk->ikzprim::ListConstruct)r   r   r   r   r   r   lenr   permuter&   _slice_helperrX   r+   long_reshape_from_tensorsysmaxsizer   )r   input_ainput_br   r   r   left_dims_aleft_dims_bnew_input_anew_input_binput_shapeleft_sizes_ashape_sizesoutput_aslicesleft_sizes_boutput_br   r   r   s      ``             @@r,   r   r   ~  s    &H	
 	
 	
 "27;;K'X
 
 	

 "27;;K'X
 
 	

    s6{{##  F    s6{{##  F
 GFFFeK00FFFKFFFFeK00FFFK.G[6-ABBK.GVk-ABBK$$w,,K"0	;aS!C4D4D3E  L 		Zrd%*!E!E!EFFK *1k;GGH$$w))K*	;aS"S[M  F 	
Zrd%*!E!E!EFFK *1k;GGH$$w,,K"0	;aS#f++ck]  L *	;aS!CKK=  F 		Zrd%*!E!E!EFFK *1k;GGH$$w))K*	;aS"S[M  F 	
Zrd%*!E!E!EFFK *1k;GGHA{DAD)>$V(HAU$V$V$VWWF.K&q&+>>>r.   )r   r    r;   )
r   r    rE   rG   rH   rI   rJ   rK   rL   rM   )r   r    rE   rG   r   rG   r   rK   )*
__future__r   	functoolsr  rX   torch._Cr   r'   
torch.onnxr   r   r   r   r   r	   torch.onnx._internalr
   r   __all__partialonnx_symbolic_onnx_symbolicr6   
parse_argsr   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r,   <module>r     s   # " " " " "     



  % % % % % %              9 8 8 8 8 8 8 8  ( #"<#=RHHH= = = =$ Cd++0 0 0 0 ,+  0
 C%%
8 
8 
8 &% 
8      Cc**   +* ! 
 &''Cc**F F F +* ('F  !!   "!@ "##F F F $#F #$$F F F %$F *+++ + + ,++\ 899Cc344(
 (
 (
 54 :9(
V - - - - Cc**S S S +*  S Cc**S S S +*  S ' ' ' ' 
0 0 0 0 
- - - - Cc3//GQ GQ GQ 0/  GQT !""CdD#66Q? Q? Q? Q? 76 #"Q? Q? Q?r.   