o
    ðÇh4’  ã                   @  sº  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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 erSd dlmZ g d	¢Zejejd
dZedƒdädd„ƒZe ddd¡dädd„ƒZ edƒdädd„ƒZ!edƒe dddd¡dådädd„ƒƒZ"edƒe dddddd¡dådädd„ƒƒZ#dæd,d-„Z$dçd5d6„Z%dèd;d<„Z&ed=ej'd>d?d@dAgdBedCej'dDdEd@dAgdBedFej'dGdHd@dAgdBedIej'dJd?dKdAgdBedLej'dMdEdKdAgdBedNej'dOdHdKdAgdBdédSdT„ƒƒƒƒƒƒZ(dêdVdW„Z)edXe 'dYd?¡gdBedZe 'd[dE¡gdBed\e 'd]dH¡gdBd^d_„ ƒƒƒZ*ed`e 'dadHdb¡gdBedce 'dddedb¡gdBedfe 'dgdhdb¡gdBedie 'djdHdk¡gdBedle 'dmdedk¡gdBedne 'dodhdk¡gdBdpdq„ ƒƒƒƒƒƒZ+edrƒdädsdt„ƒZ,	dådëd}d~„Z-edƒdäd€d„ƒZ.ed‚ƒe ddƒ¡däd„d…„ƒƒZ/ed†ƒdäd‡dˆ„ƒZ0ed‰ƒe ddddddddd¡	dädŠd‹„ƒƒZ1edŒƒe ddddd¡		Ždìdädd„ƒƒZ2ed‘ƒdäd’d“„ƒZ3ed”ƒdäd•d–„ƒZ4ed—ƒdäd˜d™„ƒZ5edšƒdäd›dœ„ƒZ6edƒe ddždždž¡dädŸd „ƒƒZ7ed¡ƒdäd¢d£„ƒZ8ed¤ƒdäd¥d¦„ƒZ9ed§ƒdäd¨d©„ƒZ:edªƒdäd«d¬„ƒZ;ed­ƒdäd®d¯„ƒZ<ed°ƒdäd±d²„ƒZ=ed³ƒdäd´dµ„ƒZ>ed¶ƒdäd·d¸„ƒZ?ed¹ƒdädºd»„ƒZ@ed¼ƒdäd½d¾„ƒZAed¿ƒe ddddždd¡dädÀdÁ„ƒƒZBedÂƒdädÃdÄ„ƒZCedÅƒdädÆdÇ„ƒZDedÈƒdädÉdÊ„ƒZEedËƒdädÌdÍ„ƒZFedÎƒdädÏdÐ„ƒZGedÑƒdädÒdÓ„ƒZHedÔƒdädÕdÖ„ƒZIed×ƒdädØdÙ„ƒZJedÚƒdädÛdÜ„ƒZKedÝƒe dddd¡dídâdã„ƒƒZLdS )îé    )ÚannotationsN)ÚTYPE_CHECKING)Ú_C)Ú
_constantsÚ_type_utilsÚerrorsÚsymbolic_helperÚsymbolic_opset9)ÚGLOBALS)Ú	jit_utilsÚregistration)ÚSequence)"Ú
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_linear_reluÚquantized_mulÚquantized_sigmoidÚsliceÚsortÚtopké
   )Úopsetz	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)r2   ÚselfÚotherÚargs© r<   úo/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/torch/onnx/symbolic_opset10.pyr   P   s   r   ÚvÚsc                 C  s$   |dkr
t | ||ƒS t | |||¡S )NÚfloor)Ú_floor_divider6   r8   )r2   r9   r:   Úrounding_moder<   r<   r=   r8   X   s   r8   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_fpr6   r7   ÚopÚtorchÚtensorÚint64)r2   r9   r:   Úoutr   ÚzeroÚnegativeÚmodÚ
fixup_maskÚoneÚfixupr<   r<   r=   rA   `   s   " rA   z
aten::sortÚiÚnonec                 C  s   t j| ||||dS )N)Ú	decendingrZ   )r   Ú_sort_helper)r2   r9   Údimrc   rZ   r<   r<   r=   r.   u   s   r.   z
aten::topkc              	   C  s   t j| ||||||dS )N)ÚlargestÚsortedrZ   )r   Ú_topk_helper)r2   r9   Úkre   rf   rg   rZ   r<   r<   r=   r/   {   s   ÿr/   r9   ú_C.ValueÚkernel_shapeúSequence[int]ÚstridesÚpadsÚ	dilationsÚ	ceil_modeÚboolÚunbatched_rankÚintÚreturnc              
   C  s’   |   d|   d|¡¡}||kr!|   d|| j dtjdgtjdd¡}| j d|d	|||||d
\}	}
||krG|   d|	| j dtjdgtjdd¡}	|	S )NÚSizeÚShapeÚ	UnsqueezerE   r   rF   rH   ÚMaxPoolé   ©ÚoutputsÚceil_mode_iÚdilations_iÚkernel_shape_iÚpads_iÚ	strides_iÚSqueeze©rV   rW   rX   rY   )r2   r9   rk   rm   rn   ro   rp   rr   Ú	self_rankÚpool_resultÚ_r<   r<   r=   Ú_aten_max_pool_onnxƒ   s0   
ý
øýr†   Úexpand_sizeÚkernel_sizeúSequence[int] | intÚstrideÚpaddingÚdilationúAtuple[Sequence[int], Sequence[int], Sequence[int], Sequence[int]]c                 C  sÂ   t |tƒr
|g|  }t |tƒr|g|  }n|}t |tƒr$|g|  d }n%t|ƒdkr1||  d }nt|ƒdkr<|d }nt|ƒdkrG|d }n|}t |tƒrT|g|  }n|sY|}n|}||||fS )ú:Adjust attributes of avg_pool to match ONNX specification.ry   rR   é   ©Ú
isinstancers   r5   )r‡   rˆ   rŠ   r‹   rŒ   rk   rn   rm   r<   r<   r=   Ú_adjust_attributes_of_max_pool«   s(   
	





r’   Ú
n_dims_oneÚn_dims_zeroÚn_dims_axesútuple[_C.Value, Sequence[int]]c              
   C  s"  |   d|   d|¡¡}||kr!|   d|| j dtjdgtjdd¡}| j d|d	|||||d
\}}| j d|d	|||d\}}| j dt |¡d}| j dt |	¡d}| j dt |
¡d}|   d||||¡}|   d||¡}||kr| j d|tjdgtjdd}| j d|tjdgtjdd}||fS )Nru   rv   rw   rE   r   rF   rH   rx   ry   rz   )r{   r}   r~   r€   ÚSlicerS   r   r‚   )r2   r9   rk   rm   rn   ro   rp   rr   r“   r”   r•   rƒ   r„   Úindicesr…   Úflatten_indicesÚendsÚstartsÚaxesÚdeltar<   r<   r=   Ú _aten_max_pool_with_indices_onnxÖ   sH   ý
ø

ú	ÿrž   zaten::max_pool1dÚ
max_pool1drR   F)Úreturn_indices)Údecoratezaten::max_pool2dÚ
max_pool2dry   zaten::max_pool3dÚ
max_pool3dr   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Ústrr    c              	     s<   t  dddddd¡t  dddddd¡d‡ ‡fdd„ƒƒ}|S )NTFr>   Úisra   r2   r3   Úinputrj   rˆ   rl   rŠ   r‹   úint | Sequence[int]rŒ   rp   rq   c                   sp   t ˆ ||||ƒ\}}}	}
ˆr+t| ||||	|
|ˆ d dgˆ  dgˆ  dd„ tˆ ƒD ƒƒS t| ||||	|
|ˆ d ƒS )NrR   r   c                 S  s   g | ]}d | ‘qS )ry   r<   )Ú.0ra   r<   r<   r=   Ú
<listcomp>T  s    z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>)r’   rž   Úranger†   )r2   rª   rˆ   rŠ   r‹   rŒ   rp   rk   rm   rn   ro   ©r‡   r    r<   r=   Úsymbolic_fn9  s6   
ÿõøz_max_pool.<locals>.symbolic_fn)r2   r3   rª   rj   rˆ   rl   rŠ   rl   r‹   r«   rŒ   rl   rp   rq   ©r   Úquantized_argsÚ
parse_args)r§   r‡   r    r°   r<   r¯   r=   Ú	_max_pool  s   +'r´   ú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 )rŽ   ry   rR   r   )r‡   rˆ   rŠ   r‹   rk   rn   rm   r<   r<   r=   Ú_adjust_attributes_of_avg_poolf  s    




r¶   zaten::avg_pool1dÚ
avg_pool1dzaten::avg_pool2dÚ
avg_pool2dzaten::avg_pool3dÚ
avg_pool3dc              
     sB   t  ddddddd¡t  ddddddd¡	 dd‡ fdd„ƒƒ}|S )NTFr>   r©   ra   rb   rª   rj   rˆ   rl   rŠ   r‹   r«   rp   rs   Úcount_include_padc              	     s0   t ˆ |||ƒ\}}	}
| jd|||||
|	d}|S )NÚAveragePool)r|   Úcount_include_pad_ir~   r   r€   )r¶   rV   )r2   rª   rˆ   rŠ   r‹   rp   rº   Údivisor_overriderk   rm   rn   Úresult©r‡   r<   r=   r°   “  s   
ÿù
z_avg_pool.<locals>.symbolic_fn©N)rª   rj   rˆ   rl   rŠ   rl   r‹   r«   rp   rs   rº   rs   r±   )r§   r‡   r°   r<   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¡‡ ‡‡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_scalesrV   )r2   rª   Úoutput_sizer;   ÚscalesÚalign_corners©re   Úinterpolate_moder§   r<   r=   r°   Ë  s   ÿ

ÿz!_interpolate.<locals>.symbolic_fn)r   r²   )r§   re   rØ   r°   r<   r×   r=   Ú_interpolate²  s   rÙ   zaten::__interpolatec           	      C  s*   t  | |||||¡\}}| jd|||dS )NrÌ   rÍ   )r   Ú _interpolate_get_scales_and_moderV   )	r2   rª   ÚsizeÚscale_factorÚmoderÖ   Úrecompute_scale_factorÚ	antialiasrÕ   r<   r<   r=   Ú__interpolateÝ  s   ÿrà   rª   útorch._C.Valuerœ   ú$list | torch.Tensor | torch._C.Valuer›   rš   Ústepsú+list | torch.Tensor | torch._C.Value | Nonec                   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‘   rW   r   ÚValueÚnodeÚkindÚtypeÚNoneType)Úvaluer<   r<   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|› | ¡‚)NrE   rH   r   rR   zRank must be 0 or 1, not )r‘   ÚlistrW   ÚTensorrV   rX   r   Ú_get_tensor_rankÚ_unsqueeze_helperr   ÚSymbolicValueError)Úlist_or_valueÚdefault_valueÚrank©r2   rë   r<   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 )NrR   r   ra   )r‘   rì   rW   rí   r5   r   Ú_maybe_get_const)rñ   r<   r<   r=   Úget_const_value  s
   z_slice.<locals>.get_const_valuer   rR   )rò   r—   rÀ   )r   Ú	INT64_MAXrV   )r2   rª   rœ   r›   rš   rã   rõ   r÷   r<   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Å   r   r   zUnknown aten::slice signature©rœ   r›   rš   rã   )r5   r   rð   r   Ú_slice_helper)r2   r9   r;   ÚdimsÚstartÚendÚstepr<   r<   r=   r-   (  s   
úr-   z
aten::flipr©   c              	   C  s8   t j| ||dgt|ƒ tj gt|ƒ dgt|ƒ dS )Néÿÿÿÿrú   )r   rû   r5   r   rø   )r2   rª   rü   r<   r<   r=   r   >  s   úr   z
aten::fmodc                 C  s   | j d||ddS )NrL   rR   rM   )rV   )r2   rª   r:   r<   r<   r=   r   K  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.'rR   rE   rH   Ú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_sizerV   rW   rX   ÚsysÚmaxsizer®   rï   r6   ÚselectÚ_is_noneÚ_reducesum_helperÚappend)r2   Úembedding_matrixr˜   ÚoffsetsÚscale_grad_by_freqrÝ   ÚsparseÚper_sample_weightsÚinclude_last_offsetÚpadding_idxÚoffsets_dim_0Ú
offset_lenÚoffsets_extendedÚlist_ra   Ústart_Úend_Úaxes_Úindices_rowÚ
embeddingsÚper_sample_weights_rowÚoutputr<   r<   r=   r   P  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   r0   é   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ÚdatarV   Ú_C_onnxÚTensorProtoDataTypeÚUINT8ÚINT8)r2   ÚinputsÚscaleÚ
zero_pointÚ	quant_minÚ	quant_maxr<   r<   r=   r   ¦  sH   ûÿÿý
û
ür   zaten::isinfc                 C  s   |   d| j d|tjjd¡S )NÚIsInfr-  r.  )rV   r5  r6  ÚDOUBLE©r2   rª   r<   r<   r=   r   Ö  s   r   zaten::isfinitec                 C  s,   t | |ƒ}t | |¡}t | t | ||¡¡S rÀ   )r   r6   ÚisnanÚ__not_Ú__or_)r2   rª   Úinf_nodeÚnan_noder<   r<   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 )Nra   rG   r-  r.  )
r   Ú
_get_constrV   r   ÚJitScalarTypeÚ	onnx_typer5  r6  ÚFLOATÚquantize_helper)r2   rª   r:  r;  rG   r<   r<   r=   r   â  s   ÿr   zaten::dequantizec                 C  s   t  | |¡d S r4   ©r   Údequantize_helperr@  r<   r<   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ç        rT   rE   rF   rH   r   )r   rU   r   rG  Ú
from_valuerG   r6   rA  rV   rW   rX   ÚfinfoÚmaxÚlogical_andr   ÚgtÚ
LongTensorÚminÚlt)r2   rª   ÚnanÚposinfÚneginfÚinput_dtypeÚnan_condÚ
nan_resultrP  Úposinf_condÚnan_posinf_resultÚneginf_condr<   r<   r=   r   ò  sR   
ü
	ýüÿýür   zquantized::linearc                 C  sl   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
¡}t  | |¡\}}}}t | ||	|¡}t  | |||¡S rÀ   )r   rL  Úrequantize_bias_helperr6   rÉ   rJ  ©r2   Úq_inputÚq_weightÚbiasÚop_scaleÚop_zero_pointrª   Úinput_scaler…   ÚweightÚweight_scaleÚq_biasr&  r<   r<   r=   r)   *  s   r)   zquantized::linear_reluc                 C  sx   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
¡}t  | |¡\}}}}t | ||	|¡}t | |¡}t  | |||¡S rÀ   )r   rL  r`  r6   rÉ   ÚrelurJ  ra  r<   r<   r=   r*   8  s   r*   zquantized::addc                 C  óF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S rÀ   )r   rL  r6   ÚaddrJ  ©r2   ÚxÚyre  rf  r…   r&  r<   r<   r=   r   G  ó   r   zquantized::add_reluc                 C  sR   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t | |¡}t  | |||¡S rÀ   )r   rL  r6   rm  rk  rJ  rn  r<   r<   r=   r   Q  s
   r   zquantized::mulc                 C  rl  rÀ   )r   rL  r6   ÚmulrJ  rn  r<   r<   r=   r+   \  rq  r+   zquantized::hardswishc                 C  ó0   t  | |¡\}}}}t | |¡}t  | |||¡S rÀ   )r   rL  r6   Ú	hardswishrJ  ©r2   ro  re  rf  r…   r&  r<   r<   r=   r%   f  ó   r%   zquantized::sigmoidc                 C  rs  rÀ   )r   rL  r6   ÚsigmoidrJ  ru  r<   r<   r=   r,   o  rv  r,   zquantized::leaky_reluc                 C  s4   t  | |¡\}}}}t | |||¡}t  | |||¡S rÀ   )r   rL  r6   Ú
leaky_relurJ  )r2   ro  Únegative_slopeÚinplacere  rf  r…   r&  r<   r<   r=   r(   x  s   r(   zquantized::layer_normc           
   	   C  ó:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S ©NF)r   rL  r6   Ú
layer_normrJ  )
r2   ro  Únormalized_shaperh  rd  Úepsre  rf  r…   r&  r<   r<   r=   r'   ƒ  ó   r'   zquantized::group_normc           
   	   C  r{  r|  )r   rL  r6   Ú
group_normrJ  )
r2   ro  Ú
num_groupsrh  rd  r  re  rf  r…   r&  r<   r<   r=   r$   •  r€  r$   zquantized::instance_normc           
      C  s@   t  | |¡\}}}}t | |||d d dd|d¡
}	t  | |	||¡S )NFrN  )r   rL  r6   Úinstance_normrJ  )
r2   rb  rh  rd  r  re  rf  rª   r…   r&  r<   r<   r=   r&   §  s
   ÿr&   zquantized::conv1d_reluc
              
   C  ó€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S rÀ   )r   rL  r`  r6   Úconv1drk  rJ  ©r2   rb  rc  rd  rŠ   r‹   rŒ   Úgroupsre  rf  rª   rg  r…   rh  ri  rj  r&  r<   r<   r=   r   »  ó   r   zquantized::conv2d_reluc
              
   C  r„  rÀ   )r   rL  r`  r6   Úconv2drk  rJ  r†  r<   r<   r=   r   Ó  rˆ  r   zquantized::conv3d_reluc
              
   C  r„  rÀ   )r   rL  r`  r6   Úconv3drk  rJ  r†  r<   r<   r=   r   ë  rˆ  r   zquantized::conv1dc
              
   C  ót   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S rÀ   )r   rL  r`  r6   r…  rJ  r†  r<   r<   r=   r     ó   r   zquantized::conv2dc
              
   C  r‹  rÀ   )r   rL  r`  r6   r‰  rJ  r†  r<   r<   r=   r     rŒ  r   zquantized::conv3dc
              
   C  r‹  rÀ   )r   rL  r`  r6   rŠ  rJ  r†  r<   r<   r=   r    1  rŒ  r    zquantized::conv_transpose1dc                 C  óv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S rÀ   ©r   rL  r`  r6   Úconv_transpose2drJ  ©r2   rb  rc  rd  rŠ   r‹   Úoutput_paddingrŒ   r‡  re  rf  rª   rg  r…   rh  ri  rj  r&  r<   r<   r=   r!   H  ó   ÿr!   zquantized::conv_transpose2dc                 C  r  rÀ   rŽ  r  r<   r<   r=   r"   b  r’  r"   zquantized::conv_transpose3dc                 C  r  rÀ   )r   rL  r`  r6   Úconv_transpose3drJ  r  r<   r<   r=   r#   |  r’  r#   zquantized::catÚq_inputsre   re  rf  c                   sD   t  |¡}‡ fdd„|D ƒ}ˆ jdg|¢R d|iŽ}t  ˆ |||¡S )Nc                   s   g | ]
}t  ˆ |¡d  ‘qS )r   rK  )r¬   rª   ©r2   r<   r=   r­      s    ÿz!quantized_cat.<locals>.<listcomp>r  r  )r   Ú_unpack_listrV   rJ  )r2   r”  re   re  rf  Úunpacked_inputsÚdequantizedÚconcatenatedr<   r•  r=   r   –  s   
	
ÿr   )r2   r3   rÀ   )r2   r3   r9   rj   rk   rl   rm   rl   rn   rl   ro   rl   rp   rq   rr   rs   rt   rj   )r‡   rs   rˆ   r‰   rŠ   r‰   r‹   r‰   rŒ   r‰   rt   r   )r2   r3   r9   rj   rk   rl   rm   rl   rn   rl   ro   rl   rp   rq   rr   rs   r“   rl   r”   rl   r•   rl   rt   r–   )r§   r¨   r‡   rs   r    rq   )
r‡   rs   rˆ   r‰   rŠ   r‰   r‹   r‰   rt   rµ   )r2   r3   rª   rá   rœ   râ   r›   râ   rš   râ   rã   rä   r+  )r2   r3   r”  rj   re   rs   re  rj   rf  rj   rt   rj   )MÚ
__future__r   Ú	functoolsr  r  Útypingr   rW   Útorch._C._onnxr   Ú_onnxr5  Ú
torch.onnxr   r   r   r   r	   r6   Útorch.onnx._globalsr
   Útorch.onnx._internalr   r   Úcollections.abcr   Ú__all__ÚpartialÚonnx_symbolicÚ_onnx_symbolicr   r³   r8   rA   r.   r/   r†   r’   rž   Ú_apply_paramsr´   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    r!   r"   r#   r   r<   r<   r<   r=   Ú<module>   sp  &

(
+8þþþýÿþ
ýÿþ
ýÿþ

. þþþ þþþþþþú:
Tú.
6	
	
