o
    ÙÜÓhz‰  ã                   @  s¨  d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dlZd dlm  m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 d dlmZmZmZ g d¢Zejej d	d
Z!dd„ Z"e!dƒej#dÑdd„ƒƒZ$e %ddd¡ej#dÑdd„ƒƒZ&e!dƒej#dÑdd„ƒƒZ'e!dƒe %dddd¡ej#dÒdÑdd„ƒƒƒZ(e!dƒe %dddddd¡ej#dÒdÑdd „ƒƒƒZ)e!d!e"d"ej*j+j,j-d#d$d%gd&e!d'e"d(ej*j+j,j.d)d$d%gd&e!d*e"d+ej*j+j,j/d,d$d%gd&e!d-e"d.ej*j+j,j-d#d/d%gd&e!d0e"d1ej*j+j,j.d)d/d%gd&e!d2e"d3ej*j+j,j/d,d/d%gd&ej#dÓd<d=„ƒƒƒƒƒƒƒZ0dÔdEdF„Z1e!dGe"dHd#ƒgd&e!dIe"dJd)ƒgd&e!dKe"dLd,ƒgd&ej#dMdN„ ƒƒƒƒZ2e!dOe"dPd,dQƒgd&e!dRe"dSdTdQƒgd&e!dUe"dVdWdQƒgd&e!dXe"dYd,dZƒgd&e!d[e"d\dTdZƒgd&e!d]e"d^dWdZƒgd&ej#d_d`„ ƒƒƒƒƒƒƒZ3e!daƒej#dÑdbdc„ƒƒZ4ej#	dÒdÕdldm„ƒZ5e!dnƒej#dÑdodp„ƒƒZ6e!dqƒe %ddr¡ej#dÑdsdt„ƒƒƒZ7e!duƒej#dÑdvdw„ƒƒZ8e!dxƒe %ddddddddd¡	ej#dÑdydz„ƒƒƒZ9e!d{ƒe %ddddd¡ej#	|	}dÖdÑd~d„ƒƒƒZ:e!d€ƒej#dÑdd‚„ƒƒZ;e!dƒƒej#dÑd„d…„ƒƒZ<e!d†ƒej#dÑd‡dˆ„ƒƒZ=e!d‰ƒej#dÑdŠd‹„ƒƒZ>e!dŒƒe %dddd¡ej#dÑdŽd„ƒƒƒZ?e!dƒej#dÑd‘d’„ƒƒZ@e!d“ƒej#dÑd”d•„ƒƒZAe!d–ƒej#dÑd—d˜„ƒƒZBe!d™ƒej#dÑdšd›„ƒƒZCe!dœƒej#dÑddž„ƒƒZDe!dŸƒej#dÑd d¡„ƒƒZEe!d¢ƒej#dÑd£d¤„ƒƒZFe!d¥ƒej#dÑd¦d§„ƒƒZGe!d¨ƒej#dÑd©dª„ƒƒZHe!d«ƒe %dddddd¡ej#dÑd¬d­„ƒƒƒZIe!d®ƒej#dÑd¯d°„ƒƒZJe!d±ƒej#dÑd²d³„ƒƒZKe!d´ƒej#dÑdµd¶„ƒƒZLe!d·ƒej#dÑd¸d¹„ƒƒZMe!dºƒej#dÑd»d¼„ƒƒZNe!d½ƒej#dÑd¾d¿„ƒƒZOe!dÀƒej#dÑdÁdÂ„ƒƒZPe!dÃƒej#dÑdÄdÅ„ƒƒZQe!dÆƒej#dÑdÇdÈ„ƒƒZRe!dÉƒe %dddd¡ej#d×dÏdÐ„ƒƒƒZSdS )Øé    )ÚannotationsN)ÚCallableÚListÚOptionalÚSequenceÚTupleÚUnion)Ú_C)Ú
_constantsÚ_type_utilsÚerrorsÚsymbolic_helperÚsymbolic_opset9)ÚGLOBALS)Ú	_beartypeÚ	jit_utilsÚregistration)!Ú
dequantizeÚdivÚembedding_bagÚfake_quantize_per_tensor_affineÚflipÚfmodÚisfiniteÚisinfÚ
nan_to_numÚquantize_per_tensorÚquantized_add_reluÚquantized_addÚquantized_catÚquantized_conv1d_reluÚquantized_conv2d_reluÚquantized_conv3d_reluÚquantized_conv1dÚquantized_conv2dÚquantized_conv3dÚquantized_conv_transpose1dÚquantized_conv_transpose2dÚquantized_conv_transpose3dÚquantized_group_normÚquantized_hardswishÚquantized_instance_normÚquantized_layer_normÚquantized_leaky_reluÚquantized_linearÚquantized_mulÚquantized_sigmoidÚsliceÚsortÚtopké
   )Úopsetc                    s   ‡ ‡fdd„}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                   s   | ˆ i ˆ¤ŽS ©N© )Úfn©ÚargsÚkwargsr7   úQ/var/www/html/ai/venv/lib/python3.10/site-packages/torch/onnx/symbolic_opset10.pyÚ_applyK   s   z_apply_params.<locals>._applyr7   )r:   r;   r=   r7   r9   r<   Ú_apply_paramsH   s   r>   z	aten::divÚgújit_utils.GraphContextc                 G  s.   t |ƒdkrt | ||¡S t| ||g|¢R Ž S ©Nr   )ÚlenÚopset9Útrue_divideÚ_div_rounding_mode)r?   ÚselfÚotherr:   r7   r7   r<   r   Q   s   r   ÚvÚsc                 C  s$   |dkr
t | ||ƒS t | |||¡S )NÚfloor)Ú_floor_dividerC   rE   )r?   rF   rG   Úrounding_moder7   r7   r<   rE   Z   s   rE   zaten::_floor_dividec                 C  sâ   t  |¡s
t  |¡rt | ||¡}|  d|¡S |  d||¡}| jdtjdtjdd}|  d|  d||¡|  d||¡¡}| jd	||dd
}|  d||  d|  d||¡¡¡}| jdtjdtjdd}	|  d||	¡}
|  d||
|¡S )NÚFloorÚDivÚConstantr   ©Údtype©Úvalue_tÚXorÚLessÚMod©Úfmod_iÚAndÚNotÚEqualé   ÚSubÚWhere)r   Ú_is_fprC   rD   ÚopÚtorchÚtensorÚint64)r?   rF   rG   Úoutr   ÚzeroÚnegativeÚmodÚ
fixup_maskÚoneÚfixupr7   r7   r<   rK   c   s   " rK   z
aten::sortÚiÚnonec                 C  s   t j| ||||dS )N)Ú	decendingrd   )r   Ú_sort_helper)r?   rF   Údimrm   rd   r7   r7   r<   r2   y   s   r2   z
aten::topkc              	   C  s   t j| ||||||dS )N)ÚlargestÚsortedrd   )r   Ú_topk_helper)r?   rF   Úkro   rp   rq   rd   r7   r7   r<   r3   €   s   ÿr3   zaten::max_pool1dÚ
max_pool1dr\   F)Úreturn_indices)Údecoratezaten::max_pool2dÚ
max_pool2dé   zaten::max_pool3dÚ
max_pool3dé   zaten::max_pool1d_with_indicesÚmax_pool1d_with_indicesTzaten::max_pool2d_with_indicesÚmax_pool2d_with_indiceszaten::max_pool3d_with_indicesÚmax_pool3d_with_indicesÚnameÚstrÚtuple_fnr   ÚndimsÚintru   Úboolc              	     s<   t  dddddd¡t  dddddd¡‡ ‡‡fdd„ƒƒ}|S )NTFrH   Úisrk   c                   s:  |s|}t ˆ|ƒƒ}|r#t ||||¡}|t dd„ t||ƒD ƒƒ }n|d }ˆ|ƒ|ˆ|ƒddœ}tˆ|ƒƒdhkrAˆ|ƒ|d< ˆr| jd|fd	di|¤Ž\}	}
| jd|dd
d„ tˆ ƒD ƒdd„ tˆ ƒD ƒd\}}tj| |dd„ tˆ ƒD ƒt	ˆdƒƒt	ˆdƒƒd}t 
| |
|¡}
|	|
fS | jd|fd	di|¤Ž}	|	S )Nc                 s  s    | ]	\}}|| V  qd S r6   r7   )Ú.0ÚaÚbr7   r7   r<   Ú	<genexpr>Î   s   € z1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>rx   r   )Úkernel_shape_iÚpads_iÚ	strides_iÚceil_mode_ir\   Údilations_iÚMaxPoolÚoutputsc                 S  ó   g | ]}d ‘qS ©r\   r7   ©r…   Ú_r7   r7   r<   Ú
<listcomp>ì   ó    z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>c                 S  r   r‘   r7   r’   r7   r7   r<   r”   í   r•   )r   r‰   r‹   c                 S  s   g | ]}d | ‘qS )rx   r7   )r…   rk   r7   r7   r<   r”   ó   s    )ÚaxesÚstartsÚends)ÚtuplerC   Úget_pool_ceil_paddingÚzipÚsetr`   Úranger   Ú_slice_helperÚlistÚsub)r?   ÚinputÚkernel_sizeÚstrideÚpaddingÚdilationÚ	ceil_modeÚpadding_ceilr;   ÚrÚindicesr“   Úflattened_indicesrI   ©r   ru   r€   r7   r<   Úsymbolic_fnÄ   sH   ÿü
û

ûz_max_pool.<locals>.symbolic_fn)r   Úquantized_argsÚ
parse_args)r~   r€   r   ru   r¬   r7   r«   r<   Ú	_max_pool‰   s   ;7r¯   Úexpand_sizer¢   úUnion[Sequence[int], int]r£   r¤   Úreturnú2Tuple[Sequence[int], Sequence[int], Sequence[int]]c                 C  sš   t |tƒr|g|  }n|}t |tƒr|g|  d }nt|ƒdkr'||  d }nt|ƒdkr2||  }n|d }t |tƒrA|g|  }n|sF|}n|}|||fS )z:Adjust attributes of avg_pool to match ONNX specification.rx   r\   )Ú
isinstancer‚   rB   )r°   r¢   r£   r¤   Úkernel_shapeÚpadsÚstridesr7   r7   r<   Ú_adjust_attributes_of_avg_pool  s    




r¸   zaten::avg_pool1dÚ
avg_pool1dzaten::avg_pool2dÚ
avg_pool2dzaten::avg_pool3dÚ
avg_pool3dc              
     sH   t  ddddddd¡t  ddddddd¡tj	 dd‡ fdd„ƒƒƒ}|S )NTFrH   r„   rk   rl   r¡   ú_C.Valuer¢   úSequence[int]r£   r¤   úUnion[int, Sequence[int]]r¦   r‚   Úcount_include_padc              	     s0   t ˆ |||ƒ\}}	}
| jd|||||
|	d}|S )NÚAveragePool)rŒ   Úcount_include_pad_ir‰   rŠ   r‹   )r¸   r`   )r?   r¡   r¢   r£   r¤   r¦   r¿   Údivisor_overriderµ   r·   r¶   Úresult©r°   r7   r<   r¬   /  s   
ÿù
z_avg_pool.<locals>.symbolic_fnr6   )r¡   r¼   r¢   r½   r£   r½   r¤   r¾   r¦   r‚   r¿   r‚   )r   r­   r®   r   Úbeartype)r~   r°   r¬   r7   rÄ   r<   Ú	_avg_pool!  s   	ørÆ   zaten::upsample_nearest1dÚupsample_nearest1dÚnearestzaten::upsample_nearest2dÚupsample_nearest2dé   zaten::upsample_nearest3dÚupsample_nearest3dé   zaten::upsample_linear1dÚupsample_linear1dÚlinearzaten::upsample_bilinear2dÚupsample_bilinear2dzaten::upsample_trilinear3dÚupsample_trilinear3dc                   s(   t  ddd¡tj‡ ‡‡fdd„ƒƒ}|S )NTFc                   sb   t  | ˆ|¡\}}t  ˆ¡ t  |¡}|rt  ˆd|¡S |d u r(t  | ||ˆ ¡}| jd||ˆdS )Nzalign_corners == TrueÚResize©Úmode_s)r   Ú_get_interpolate_attributesÚ_interpolate_warningÚ_maybe_get_scalarÚ_unimplementedÚ_interpolate_size_to_scalesr`   )r?   r¡   Úoutput_sizer:   ÚscalesÚalign_corners©ro   Úinterpolate_moder~   r7   r<   r¬   i  s   ÿ

ÿz!_interpolate.<locals>.symbolic_fn)r   r­   r   rÅ   )r~   ro   rÝ   r¬   r7   rÜ   r<   Ú_interpolateO  s   rÞ   zaten::__interpolatec           	      C  s*   t  | |||||¡\}}| jd|||dS )NrÑ   rÒ   )r   Ú _interpolate_get_scales_and_moder`   )	r?   r¡   ÚsizeÚscale_factorÚmoderÛ   Úrecompute_scale_factorÚ	antialiasrÚ   r7   r7   r<   Ú__interpolate|  s   ÿrå   r¡   útorch._C.Valuer–   ú)Union[List, torch.Tensor, torch._C.Value]r—   r˜   Ústepsú3Optional[Union[List, torch.Tensor, torch._C.Value]]c                   s®   dd„ ‰d‡ ‡fdd„	}dd„ }||ƒdkr)||ƒt jkr)|d u s'||ƒdkr)|S ||ƒ}||dd	}||t jd	}|d u rGˆ  d
||||¡S ||dd	}ˆ  d
|||||¡S )Nc                 S  s:   | d u rdS t | tjjƒo|  ¡  ¡ dkot |  ¡ tjƒS )NTzprim::Constant)r´   ra   r	   ÚValueÚnodeÚkindÚtypeÚNoneType)Úvaluer7   r7   r<   Úis_none_value—  s   ÿýz_slice.<locals>.is_none_valuec                   sz   ˆ| ƒr|d ur|g} t | ttjfƒrˆ jdt | ¡dS t | ¡}|dkr.t ˆ | dg¡S |dkr4| S t	 
d|› | ¡‚)NrO   rR   r   r\   zRank must be 0 or 1, not )r´   rŸ   ra   ÚTensorr`   rb   r   Ú_get_tensor_rankÚ_unsqueeze_helperr   ÚSymbolicValueError)Úlist_or_valueÚdefault_valueÚrank©r?   rð   r7   r<   Úto_slice_input   s   

ÿz_slice.<locals>.to_slice_inputc                 S  s4   t | ttjfƒrt| ƒdkr| d S d S t | d¡S )Nr\   r   rk   )r´   rŸ   ra   rñ   rB   r   Ú_maybe_get_const)rõ   r7   r7   r<   Úget_const_value±  s
   z_slice.<locals>.get_const_valuer   r\   )rö   ÚSlicer6   )r
   Ú	INT64_MAXr`   )r?   r¡   r–   r—   r˜   rè   rù   rû   r7   rø   r<   Ú_sliceŽ  s   			rþ   zaten::slicec                 G  sZ   t |ƒdkr|\}}}}nt |ƒdkr|\}}}dg}nt d|¡‚tj| |||||dS )NrÊ   rz   r   zUnknown aten::slice signature©r–   r—   r˜   rè   )rB   r   rô   r   rž   )r?   rF   r:   ÚdimsÚstartÚendÚstepr7   r7   r<   r1   É  s   
úr1   z
aten::flipr„   c              	   C  s8   t j| ||dgt|ƒ tj gt|ƒ dgt|ƒ dS )Néÿÿÿÿrÿ   )r   rž   rB   r
   rý   )r?   r¡   r   r7   r7   r<   r   à  s   úr   z
aten::fmodc                 C  s   | j d||ddS )NrV   r\   rW   )r`   )r?   r¡   rG   r7   r7   r<   r   î  s   r   zaten::embedding_bagc
                 C  s  |r
t jr
t d¡S |	d ur|	dkrtdƒ‚t d¡ t |d¡}
|
d urü|r.|
d }|}n|
}|| jdt	 
tjg¡dg}| jdg|¢R d	diŽ}g }t|ƒD ]™}t | t | |t	 
d¡t	 
|¡¡dg¡}t | t | |t	 
d¡t	 
|d ¡¡dg¡}| jdt	 
dg¡d}|  d
||||¡}|  d||¡}t |¡s´|  d
||||¡}t | |dg¡}|  d||¡}|dkrÃtj| |dgdd}n|dkrÒ| jd|dgdd}n
| jd|dgdd}t | |dg¡}| |¡ qP| jdg|¢R d	diŽ}|d d d fS t d¡S )Nz7embedding_bag with scale_grad_by_freq for training moder   zembedding_bag with padding_idxzžExport of embedding_bag with dynamic input/offsets shape is not supported in opset 10. Please use opset 11 or higher to export model for dynamic input shape.'r\   rO   rR   ÚConcatÚaxis_irü   ÚGatherÚMul)Úaxes_iÚ
keepdims_iÚ
ReduceMeanÚ	ReduceMaxziembedding_bag with unknown shape of offsets for opset 10 is not supported. please use opset 11 or higher.)r   Úexport_trainingr   Ú_onnx_unsupportedÚRuntimeErrorÚwarningsÚwarnÚ_get_tensor_dim_sizer`   ra   rb   ÚsysÚmaxsizer   ró   rC   ÚselectÚ_is_noneÚ_reducesum_helperÚappend)r?   Úembedding_matrixr©   ÚoffsetsÚscale_grad_by_freqrâ   ÚsparseÚper_sample_weightsÚinclude_last_offsetÚpadding_idxÚoffsets_dim_0Ú
offset_lenÚoffsets_extendedÚlist_rk   Ústart_Úend_Úaxes_Úindices_rowÚ
embeddingsÚper_sample_weights_rowÚoutputr7   r7   r<   r   ô  st   
ÿÿþýÿû

ÿÿ
ÿÿr   z%aten::fake_quantize_per_tensor_affineé€ÿÿÿé   c              	   C  sÀ   ||fdkrt  dddd|¡ ||fdvr"t d|› d|› d	|¡‚t  |¡}|d u r4t  dddd
|¡ | ¡ j}|dkrH| jd|tj	j
d}n
| jd|tj	jd}|  d|  d|||¡||¡S )N)r   r,  r   r4   é   z=Quantize range (0, 127) not supported, requires opset 13 Clip))r   éÿ   ©r+  r,  zLFor (quant_min, quant_max), ONNX allows only (0, 255) and (-128, 127). Got (z, ú)z Non-constant scale not supportedr   ÚCast©Úto_iÚDequantizeLinearÚQuantizeLinear)r   Ú _onnx_opset_unsupported_detailedr   rô   rÖ   ÚfloatÚdatar`   Ú_C_onnxÚTensorProtoDataTypeÚUINT8ÚINT8)r?   ÚinputsÚscaleÚ
zero_pointÚ	quant_minÚ	quant_maxr7   r7   r<   r   K  sH   ûÿÿý
û
ür   zaten::isinfc                 C  s   |   d| j d|tjjd¡S )NÚIsInfr1  r2  )r`   r9  r:  ÚDOUBLE©r?   r¡   r7   r7   r<   r   |  s   r   zaten::isfinitec                 C  s,   t | |ƒ}t | |¡}t | t | ||¡¡S r6   )r   rC   ÚisnanÚ__not_Ú__or_)r?   r¡   Úinf_nodeÚnan_noder7   r7   r<   r   ‚  s   
r   zaten::quantize_per_tensorc                 C  sL   t  |dd¡}| jd|t |¡ ¡ d}| jd|tjjd}t  	| |||¡S )Nrk   rQ   r1  r2  )
r   Ú
_get_constr`   r   ÚJitScalarTypeÚ	onnx_typer9  r:  ÚFLOATÚquantize_helper)r?   r¡   r>  r?  rQ   r7   r7   r<   r   Š  s   ÿr   zaten::dequantizec                 C  s   t  | |¡d S rA   ©r   Údequantize_helperrD  r7   r7   r<   r   –  s   r   zaten::nan_to_numÚfc                 C  s.  t  |¡s|S tj |¡ ¡ }|d u rd}t | |¡}|  d|| jdt	j
|g|dd|¡}t	 |¡}|d u r:|j}t | t| |ƒt | || jdt	 dg¡d¡¡}	|  d|	| jdt	j
|g|dd|¡}
|d u rl|j}t | t| |
ƒt | |
| jdt	 dg¡d¡¡}|  d|| jdt	j
|g|dd|
¡S )Nç        r^   rO   rP   rR   r   )r   r_   r   rK  Ú
from_valuerQ   rC   rE  r`   ra   rb   ÚfinfoÚmaxÚlogical_andr   ÚgtÚ
LongTensorÚminÚlt)r?   r¡   ÚnanÚposinfÚneginfÚinput_dtypeÚnan_condÚ
nan_resultrT  Úposinf_condÚnan_posinf_resultÚneginf_condr7   r7   r<   r   œ  sR   
ü
	ýüÿýür   zquantized::linearc                 C  sl   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
¡}t  | |¡\}}}}t | ||	|¡}t  | |||¡S r6   )r   rP  Úrequantize_bias_helperrC   rÎ   rN  )r?   Úq_inputÚq_weightÚbiasÚop_scaleÚop_zero_pointr¡   Úinput_scaler“   ÚweightÚweight_scaleÚq_biasr*  r7   r7   r<   r.   Õ  s   r.   zquantized::addc                 C  óF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S r6   )r   rP  rC   ÚaddrN  ©r?   ÚxÚyrh  ri  r“   r*  r7   r7   r<   r   ä  ó   r   zquantized::add_reluc                 C  sR   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t | |¡}t  | |||¡S r6   )r   rP  rC   ro  ÚrelurN  rp  r7   r7   r<   r   ï  s
   r   zquantized::mulc                 C  rn  r6   )r   rP  rC   ÚmulrN  rp  r7   r7   r<   r/   û  rs  r/   zquantized::hardswishc                 C  ó0   t  | |¡\}}}}t | |¡}t  | |||¡S r6   )r   rP  rC   Ú	hardswishrN  ©r?   rq  rh  ri  r“   r*  r7   r7   r<   r*     ó   r*   zquantized::sigmoidc                 C  rv  r6   )r   rP  rC   ÚsigmoidrN  rx  r7   r7   r<   r0     ry  r0   zquantized::leaky_reluc                 C  s4   t  | |¡\}}}}t | |||¡}t  | |||¡S r6   )r   rP  rC   Ú
leaky_relurN  )r?   rq  Únegative_slopeÚinplacerh  ri  r“   r*  r7   r7   r<   r-     s   r-   zquantized::layer_normc           
   	   C  ó:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S ©NF)r   rP  rC   Ú
layer_normrN  )
r?   rq  Únormalized_shaperk  rg  Úepsrh  ri  r“   r*  r7   r7   r<   r,   &  ó   r,   zquantized::group_normc           
   	   C  r~  r  )r   rP  rC   Ú
group_normrN  )
r?   rq  Ú
num_groupsrk  rg  r‚  rh  ri  r“   r*  r7   r7   r<   r)   9  rƒ  r)   zquantized::instance_normc           
      C  s@   t  | |¡\}}}}t | |||d d dd|d¡
}	t  | |	||¡S )NFrR  )r   rP  rC   Úinstance_normrN  )
r?   re  rk  rg  r‚  rh  ri  r¡   r“   r*  r7   r7   r<   r+   L  s
   ÿr+   zquantized::conv1d_reluc
              
   C  ó€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r6   )r   rP  rd  rC   Úconv1drt  rN  ©r?   re  rf  rg  r£   r¤   r¥   Úgroupsrh  ri  r¡   rj  r“   rk  rl  rm  r*  r7   r7   r<   r    a  ó   r    zquantized::conv2d_reluc
              
   C  r‡  r6   )r   rP  rd  rC   Úconv2drt  rN  r‰  r7   r7   r<   r!   z  r‹  r!   zquantized::conv3d_reluc
              
   C  r‡  r6   )r   rP  rd  rC   Úconv3drt  rN  r‰  r7   r7   r<   r"   “  r‹  r"   zquantized::conv1dc
              
   C  ót   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r6   )r   rP  rd  rC   rˆ  rN  r‰  r7   r7   r<   r#   ¬  ó   r#   zquantized::conv2dc
              
   C  rŽ  r6   )r   rP  rd  rC   rŒ  rN  r‰  r7   r7   r<   r$   Ä  r  r$   zquantized::conv3dc
              
   C  rŽ  r6   )r   rP  rd  rC   r  rN  r‰  r7   r7   r<   r%   Ü  r  r%   zquantized::conv_transpose1dc                 C  óv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r6   ©r   rP  rd  rC   Úconv_transpose2drN  ©r?   re  rf  rg  r£   r¤   Úoutput_paddingr¥   rŠ  rh  ri  r¡   rj  r“   rk  rl  rm  r*  r7   r7   r<   r&   ô  ó   ÿr&   zquantized::conv_transpose2dc                 C  r  r6   r‘  r“  r7   r7   r<   r'     r•  r'   zquantized::conv_transpose3dc                 C  r  r6   )r   rP  rd  rC   Úconv_transpose3drN  r“  r7   r7   r<   r(   *  r•  r(   zquantized::catÚq_inputsr¼   ro   rh  ri  c                   sD   t  |¡}‡ fdd„|D ƒ}ˆ jdg|¢R d|iŽ}t  ˆ |||¡S )Nc                   s   g | ]
}t  ˆ |¡d  ‘qS )r   rO  )r…   r¡   ©r?   r7   r<   r”   P  s    ÿz!quantized_cat.<locals>.<listcomp>r  r  )r   Ú_unpack_listr`   rN  )r?   r—  ro   rh  ri  Úunpacked_inputsÚdequantizedÚconcatenatedr7   r˜  r<   r   E  s   


ÿr   )r?   r@   r6   )r~   r   r€   r   r   r‚   ru   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¼   ro   r‚   rh  r¼   ri  r¼   r²   r¼   )TÚ
__future__r   Ú	functoolsr  r  Útypingr   r   r   r   r   r   ra   Útorch._C._onnxr	   Ú_onnxr9  Ú
torch.onnxr
   r   r   r   r   rC   Útorch.onnx._globalsr   Útorch.onnx._internalr   r   r   Ú__all__ÚpartialÚonnx_symbolicÚ_onnx_symbolicr>   rÅ   r   r®   rE   rK   r2   r3   ÚnnÚmodulesÚutilsÚ_singleÚ_pairÚ_tripler¯   r¸   rÆ   rÞ   rå   rþ   r1   r   r   r   r   r   r   r   r   r   r.   r   r   r/   r*   r0   r-   r,   r)   r+   r    r!   r"   r#   r$   r%   r&   r'   r(   r   r7   r7   r7   r<   Ú<module>   sÌ    
%	ÿÿþÿÿþÿÿþ
üÿþ
üÿþ
üÿþ
> 
þ
þ
þ!þþþþþþú:
Tú.
6	
	
