a
    ¢º”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r¦d dlmZ g d	¢Zejejd
dZedƒddœdd„ƒZe ddd¡ddœdd„ƒZ edƒddœdd„ƒZ!edƒe dddd¡dÐddœdd„ƒƒZ"edƒe dddddd¡dÑddœdd„ƒƒZ#dd d!d!d!d!d"d#d d$œ	d%d&„Z$d#d'd'd'd'd(d)œd*d+„Z%dd d!d!d!d!d"d#d!d!d!d,d-œd.d/„Z&ed0ej'd1d2d3d4gd5ed6ej'd7d8d3d4gd5ed9ej'd:d;d3d4gd5ed<ej'd=d2d>d4gd5ed?ej'd@d8d>d4gd5edAej'dBd;d>d4gd5dCd#d"dDœdEdF„ƒƒƒƒƒƒZ(d#d'd'd'dGdHœdIdJ„Z)edKe 'dLd2¡gd5edMe 'dNd8¡gd5edOe 'dPd;¡gd5dQdR„ ƒƒƒZ*edSe 'dTd;dU¡gd5edVe 'dWdXdU¡gd5edYe 'dZd[dU¡gd5ed\e 'd]d;d^¡gd5ed_e 'd`dXd^¡gd5edae 'dbd[d^¡gd5dcdd„ ƒƒƒƒƒƒZ+edeƒddœdfdg„ƒZ,dÒddhdidididjdkœdldm„Z-ednƒddœdodp„ƒZ.edqƒe ddr¡ddœdsdt„ƒƒZ/eduƒddœdvdw„ƒZ0edxƒe ddddddddd¡	ddœdydz„ƒƒZ1ed{ƒe ddddd¡dÓddœd~d„ƒƒZ2ed€ƒddœdd‚„ƒZ3edƒƒddœd„d…„ƒZ4ed†ƒddœd‡dˆ„ƒZ5ed‰ƒddœdŠd‹„ƒZ6edŒƒe dddd¡ddœdŽd„ƒƒZ7edƒddœd‘d’„ƒZ8ed“ƒddœd”d•„ƒZ9ed–ƒddœd—d˜„ƒZ:ed™ƒddœdšd›„ƒZ;edœƒddœddž„ƒZ<edŸƒddœd d¡„ƒZ=ed¢ƒddœd£d¤„ƒZ>ed¥ƒddœd¦d§„ƒZ?ed¨ƒddœd©dª„ƒZ@ed«ƒddœd¬d­„ƒZAed®ƒe dddddd¡ddœd¯d°„ƒƒZBed±ƒddœd²d³„ƒZCed´ƒddœdµd¶„ƒZDed·ƒddœd¸d¹„ƒZEedºƒddœd»d¼„ƒZFed½ƒddœd¾d¿„ƒZGedÀƒddœdÁdÂ„ƒZHedÃƒddœdÄdÅ„ƒZIedÆƒddœdÇdÈ„ƒZJedÉƒddœdÊdË„ƒZKedÌƒe dddd¡dd 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é
   )Zopsetz	aten::divújit_utils.GraphContext©Úgc                 G  s2   t |ƒdkrt | ||¡S t| ||g|¢R Ž S d S ©Nr   )ÚlenÚopset9Útrue_divideÚ_div_rounding_mode)r3   ÚselfÚotherÚargs© r<   úI/var/www/auris/lib/python3.9/site-packages/torch/onnx/symbolic_opset10.pyr   P   s    r   ÚvÚsc                 C  s(   |dkrt | ||ƒS t | |||¡S d S )NÚfloor)Ú_floor_divider6   r8   )r3   r9   r:   Z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 d S )NZFloorÚDivÚConstantr   ©Údtype©Zvalue_tZXorZLessÚMod©Zfmod_iÚAndÚNotZEqualé   ÚSubÚWhere)r   Ú_is_fpr6   r7   ÚopÚtorchÚtensorÚint64)r3   r9   r:   Úoutr   ZzeroÚnegativeÚmodZ
fixup_maskZoneÚfixupr<   r<   r=   rA   `   s    " rA   z
aten::sortÚiÚnonec                 C  s   t j| ||||dS )N)Ú	decendingrS   )r   Z_sort_helper)r3   r9   ÚdimrY   rS   r<   r<   r=   r.   u   s    r.   z
aten::topkc              	   C  s   t j| ||||||dS )N)ÚlargestÚsortedrS   )r   Z_topk_helper)r3   r9   ÚkrZ   r[   r\   rS   r<   r<   r=   r/   {   s    ÿr/   ú_C.ValueúSequence[int]ÚboolÚint)	r3   r9   Úkernel_shapeÚstridesÚpadsÚ	dilationsÚ	ceil_modeÚunbatched_rankÚreturnc              
   C  s’   |   d|   d|¡¡}||krB|   d|| j dtjdgtjdd¡}| j d|d	|||||d
\}	}
||krŽ|   d|	| j dtjdgtjdd¡}	|	S )NÚSizeÚShapeÚ	UnsqueezerC   r   rD   rF   ÚMaxPoolé   ©ÚoutputsÚceil_mode_iÚdilations_iÚkernel_shape_iÚpads_iÚ	strides_iÚSqueeze©rO   rP   rQ   rR   )r3   r9   rb   rc   rd   re   rf   rg   Ú	self_rankÚpool_resultÚ_r<   r<   r=   Ú_aten_max_pool_onnxƒ   s0    
ýø
ýrz   zSequence[int] | intzAtuple[Sequence[int], Sequence[int], Sequence[int], Sequence[int]])Úexpand_sizeÚkernel_sizeÚstrideÚpaddingÚdilationrh   c                 C  sÂ   t |tƒr|g|  }t |tƒr*|g|  }n|}t |tƒrH|g|  d }nJt|ƒdkrb||  d }n0t|ƒdkrx|d }nt|ƒdkrŽ|d }n|}t |tƒr¨|g|  }n|s²|}n|}||||fS )ú:Adjust attributes of avg_pool to match ONNX specification.rm   rK   é   ©Ú
isinstancera   r5   )r{   r|   r}   r~   r   rb   rd   rc   r<   r<   r=   Ú_adjust_attributes_of_max_pool«   s(    	






r„   ztuple[_C.Value, Sequence[int]])r3   r9   rb   rc   rd   re   rf   rg   Ú
n_dims_oneÚn_dims_zeroÚn_dims_axesrh   c              
   C  s$  |   d|   d|¡¡}||krB|   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 )Nri   rj   rk   rC   r   rD   rF   rl   rm   rn   )ro   rq   rr   rt   ÚSlicerL   ru   rv   )r3   r9   rb   rc   rd   re   rf   rg   r…   r†   r‡   rw   rx   Úindicesry   Zflatten_indicesÚendsÚstartsÚaxesÚdeltar<   r<   r=   Ú _aten_max_pool_with_indices_onnxÖ   sH    ýø

ú
	
ÿrŽ   zaten::max_pool1dZ
max_pool1drK   F)Úreturn_indices)Zdecoratezaten::max_pool2dZ
max_pool2drm   zaten::max_pool3dZ
max_pool3dr   zaten::max_pool1d_with_indicesZmax_pool1d_with_indicesTzaten::max_pool2d_with_indicesZmax_pool2d_with_indiceszaten::max_pool3d_with_indicesZmax_pool3d_with_indicesÚstr)Únamer{   r   c              
     sL   t  dddddd¡t  dddddd¡ddddd	dd
dœ‡ ‡fdd„ƒƒ}|S )NTFr>   ÚisrW   r1   r^   r_   úint | Sequence[int]r`   )r3   Úinputr|   r}   r~   r   rf   c                   st   t ˆ ||||ƒ\}}}	}
ˆrVt| ||||	|
|ˆ d dgˆ  dgˆ  dd„ tˆ ƒD ƒƒS t| ||||	|
|ˆ d ƒS d S )NrK   r   c                 S  s   g | ]}d | ‘qS )rm   r<   )Ú.0rW   r<   r<   r=   Ú
<listcomp>T  ó    z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>)r„   rŽ   Úrangerz   )r3   r”   r|   r}   r~   r   rf   rb   rc   rd   re   ©r{   r   r<   r=   Úsymbolic_fn9  s6    
ÿõøz_max_pool.<locals>.symbolic_fn©r   Úquantized_argsÚ
parse_args)r‘   r{   r   rš   r<   r™   r=   Ú	_max_pool  s    +$'rž   z2tuple[Sequence[int], Sequence[int], Sequence[int]])r{   r|   r}   r~   rh   c                 C  sš   t |tƒr|g|  }n|}t |tƒr4|g|  d }n8t|ƒdkrN||  d }nt|ƒdkrd||  }n|d }t |tƒr‚|g|  }n|sŒ|}n|}|||fS )r€   rm   rK   r‚   )r{   r|   r}   r~   rb   rd   rc   r<   r<   r=   Ú_adjust_attributes_of_avg_poolf  s     



rŸ   zaten::avg_pool1dZ
avg_pool1dzaten::avg_pool2dZ
avg_pool2dzaten::avg_pool3dZ
avg_pool3dc              
     sN   t  ddddddd¡t  ddddddd¡ddddd	d
d
dœ‡ fdd„ƒƒ}|S )NTFr>   r’   rW   rX   r^   r_   r“   ra   )r”   r|   r}   r~   rf   Úcount_include_padc              	     s0   t ˆ |||ƒ\}}	}
| jd|||||
|	d}|S )NZAveragePool)rp   Zcount_include_pad_irr   rs   rt   )rŸ   rO   )r3   r”   r|   r}   r~   rf   r    Zdivisor_overriderb   rc   rd   Úresult©r{   r<   r=   rš   “  s    ÿ
ù
z_avg_pool.<locals>.symbolic_fn)Nr›   )r‘   r{   rš   r<   r¢   r=   Ú	_avg_pool†  s
    	 ø"r£   zaten::upsample_nearest1dZupsample_nearest1dZnearestzaten::upsample_nearest2dZupsample_nearest2dé   zaten::upsample_nearest3dZupsample_nearest3dé   zaten::upsample_linear1dZupsample_linear1dÚlinearzaten::upsample_bilinear2dZupsample_bilinear2dzaten::upsample_trilinear3dZupsample_trilinear3dc                   s"   t  ddd¡‡ ‡‡fdd„ƒ}|S )NTFc                   sb   t  | ˆ|¡\}}t  ˆ¡ t  |¡}|r8t  ˆd|¡S |d u rPt  | ||ˆ ¡}| jd||ˆdS )Nzalign_corners == TrueÚResize©Zmode_s)r   Z_get_interpolate_attributesZ_interpolate_warningÚ_maybe_get_scalarZ_unimplementedZ_interpolate_size_to_scalesrO   )r3   r”   Zoutput_sizer;   ÚscalesÚalign_corners©rZ   Úinterpolate_moder‘   r<   r=   rš   Ë  s    ÿ

ÿz!_interpolate.<locals>.symbolic_fn)r   rœ   )r‘   rZ   r­   rš   r<   r¬   r=   Ú_interpolate²  s    r®   zaten::__interpolatec           	      C  s*   t  | |||||¡\}}| jd|||dS )Nr§   r¨   )r   Z _interpolate_get_scales_and_moderO   )	r3   r”   ÚsizeZscale_factorÚmoder«   Zrecompute_scale_factorZ	antialiasrª   r<   r<   r=   Ú__interpolateÝ  s    ÿr±   ztorch._C.Valuez$list | torch.Tensor | torch._C.Valuez+list | torch.Tensor | torch._C.Value | None)r3   r”   rŒ   r‹   rŠ   Ústepsc                   s®   dd„ ‰d‡ ‡fdd„	}dd„ }||ƒdkrR||ƒt jkrR|d u sN||ƒdkrR|S ||ƒ}||dd	}||t jd	}|d u rŽˆ  d
||||¡S ||dd	}ˆ  d
|||||¡S )Nc                 S  s:   | d u rdS t | tjjƒo8|  ¡  ¡ dko8t |  ¡ tjƒS )NTzprim::Constant)rƒ   rP   r   ÚValueÚnodeÚkindÚtypeZNoneType)Úvaluer<   r<   r=   Úis_none_valueö  s    ÿýz_slice.<locals>.is_none_valuec                   s~   ˆ| ƒ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rh| S t	 
d|› | ¡‚d S )NrC   rF   r   rK   zRank must be 0 or 1, not )rƒ   ÚlistrP   ÚTensorrO   rQ   r   Z_get_tensor_rankÚ_unsqueeze_helperr   ÚSymbolicValueError)Úlist_or_valueÚdefault_valueZrank©r3   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 )NrK   r   rW   )rƒ   r¹   rP   rº   r5   r   Z_maybe_get_const)r½   r<   r<   r=   Úget_const_value  s
    z_slice.<locals>.get_const_valuer   rK   )r¾   rˆ   )N)r   Ú	INT64_MAXrO   )r3   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r8|\}}}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)r3   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Â   )r3   r”   rÆ   r<   r<   r=   r   >  s    úr   z
aten::fmodc                 C  s   | j d||ddS )NrG   rK   rH   )rO   )r3   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 }|}n8|
}|| jdt	 
tjg¡dg}| jdg|¢R d	diŽ}g }t|ƒD ]8}t | t | |t	 
d¡t	 
|¡¡dg¡}t | t | |t	 
d¡t	 
|d ¡¡dg¡}| jdt	 
dg¡d}|  d
||||¡}|  d||¡}t |¡sn|  d
||||¡}t | |dg¡}|  d||¡}|dkrŽtj| |dgdd}n4|dkr®| jd|dgdd}n| jd|dgdd}t | |dg¡}| |¡ q¢| jdg|¢R d	diŽ}|d d d fS t d¡S 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.'rK   rC   rF   ÚConcatÚaxis_irˆ   ZGatherZMul)Zaxes_iZ
keepdims_iZ
ReduceMeanZ	ReduceMaxziembedding_bag with unknown shape of offsets for opset 10 is not supported. please use opset 11 or higher.)r
   Zexport_trainingr   Z_onnx_unsupportedÚRuntimeErrorÚwarningsÚwarnZ_get_tensor_dim_sizerO   rP   rQ   ÚsysÚmaxsizer˜   r»   r6   ÚselectZ_is_noneZ_reducesum_helperÚappend)r3   Zembedding_matrixr‰   ÚoffsetsZscale_grad_by_freqr°   ÚsparseZper_sample_weightsZinclude_last_offsetZpadding_idxZoffsets_dim_0Z
offset_lenZoffsets_extendedÚlist_rW   Zstart_Úend_Zaxes_Zindices_rowZ
embeddingsZ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rDt d|› d|› d	|¡‚t  |¡}|d u rht  dddd
|¡ | ¡ j}|dkr| 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©Zto_iZDequantizeLinearZQuantizeLinear)r   Z _onnx_opset_unsupported_detailedr   r¼   r©   ÚfloatÚdatarO   Ú_C_onnxÚTensorProtoDataTypeZUINT8ZINT8)r3   ÚinputsÚscaleÚ
zero_pointZ	quant_minZ	quant_maxr<   r<   r=   r   ¦  sH    ûÿÿý
û
ür   zaten::isinfc                 C  s   |   d| j d|tjjd¡S )NZIsInfrÞ   rß   )rO   râ   rã   ZDOUBLE©r3   r”   r<   r<   r=   r   Ö  s    r   zaten::isfinitec                 C  s,   t | |ƒ}t | |¡}t | t | ||¡¡S ©N)r   r6   ÚisnanZ__not_Z__or_)r3   r”   Zinf_nodeZ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 )NrW   rE   rÞ   rß   )
r   Z
_get_constrO   r   ÚJitScalarTypeZ	onnx_typerâ   rã   ÚFLOATÚquantize_helper)r3   r”   rå   ræ   rE   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 rt|j}t | t| |ƒt | || jdt	 dg¡d¡¡}	|  d|	| jdt	j
|g|dd|¡}
|d u rØ|j}t | t| |
ƒt | |
| jdt	 dg¡d¡¡}|  d|| jdt	j
|g|dd|
¡S )Nç        rM   rC   rD   rF   r   )r   rN   r   rê   Ú
from_valuerE   r6   ré   rO   rP   rQ   ÚfinfoÚmaxÚlogical_andr   ÚgtZ
LongTensorÚminÚlt)r3   r”   ÚnanZposinfZneginfZinput_dtypeZnan_condZ
nan_resultrò   Zposinf_condZnan_posinf_resultZneginf_condr<   r<   r=   r   ò  sR    
ü	
ýüÿýür   zquantized::linearc                 C  sl   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
¡}t  | |¡\}}}}t | ||	|¡}t  | |||¡S rè   )r   rî   Úrequantize_bias_helperr6   r¦   rì   ©r3   Úq_inputÚq_weightÚbiasÚop_scaleÚop_zero_pointr”   Úinput_scalery   Ú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   rî   rù   r6   r¦   Úrelurì   rú   r<   r<   r=   r*   8  s    r*   zquantized::addc                 C  sF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S rè   )r   rî   r6   Úaddrì   ©r3   ÚxÚyrþ   rÿ   ry   rØ   r<   r<   r=   r   G  s    r   zquantized::add_reluc                 C  sR   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t | |¡}t  | |||¡S rè   )r   rî   r6   r  r  rì   r  r<   r<   r=   r   Q  s
    r   zquantized::mulc                 C  sF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S rè   )r   rî   r6   Úmulrì   r  r<   r<   r=   r+   \  s    r+   zquantized::hardswishc                 C  s0   t  | |¡\}}}}t | |¡}t  | |||¡S rè   )r   rî   r6   Z	hardswishrì   ©r3   r  rþ   rÿ   ry   rØ   r<   r<   r=   r%   f  s    r%   zquantized::sigmoidc                 C  s0   t  | |¡\}}}}t | |¡}t  | |||¡S rè   )r   rî   r6   Zsigmoidrì   r
  r<   r<   r=   r,   o  s    r,   zquantized::leaky_reluc                 C  s4   t  | |¡\}}}}t | |||¡}t  | |||¡S rè   )r   rî   r6   Z
leaky_relurì   )r3   r  Znegative_slopeZinplacerþ   rÿ   ry   rØ   r<   r<   r=   r(   x  s    r(   zquantized::layer_normc           
   	   C  s:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S ©NF)r   rî   r6   Z
layer_normrì   )
r3   r  Znormalized_shaper  rý   Úepsrþ   rÿ   ry   rØ   r<   r<   r=   r'   ƒ  s    r'   zquantized::group_normc           
   	   C  s:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S r  )r   rî   r6   Z
group_normrì   )
r3   r  Z
num_groupsr  rý   r  rþ   rÿ   ry   rØ   r<   r<   r=   r$   •  s    r$   zquantized::instance_normc           
      C  s@   t  | |¡\}}}}t | |||d d dd|d¡
}	t  | |	||¡S )NFrð   )r   rî   r6   Zinstance_normrì   )
r3   rû   r  rý   r  rþ   rÿ   r”   ry   rØ   r<   r<   r=   r&   §  s
    ÿr&   zquantized::conv1d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S rè   )r   rî   rù   r6   Úconv1dr  rì   ©r3   rû   rü   rý   r}   r~   r   Úgroupsrþ   rÿ   r”   r   ry   r  r  r  rØ   r<   r<   r=   r   »  s    r   zquantized::conv2d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S rè   )r   rî   rù   r6   Úconv2dr  rì   r  r<   r<   r=   r   Ó  s    r   zquantized::conv3d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S rè   )r   rî   rù   r6   Úconv3dr  rì   r  r<   r<   r=   r   ë  s    r   zquantized::conv1dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S rè   )r   rî   rù   r6   r  rì   r  r<   r<   r=   r     s    r   zquantized::conv2dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S rè   )r   rî   rù   r6   r  rì   r  r<   r<   r=   r     s    r   zquantized::conv3dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S rè   )r   rî   rù   r6   r  rì   r  r<   r<   r=   r    1  s    r    zquantized::conv_transpose1dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S rè   ©r   rî   rù   r6   Zconv_transpose2drì   ©r3   rû   rü   rý   r}   r~   Zoutput_paddingr   r  rþ   rÿ   r”   r   ry   r  r  r  rØ   r<   r<   r=   r!   H  s    ÿr!   zquantized::conv_transpose2dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S rè   r  r  r<   r<   r=   r"   b  s    ÿr"   zquantized::conv_transpose3dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S rè   )r   rî   rù   r6   Zconv_transpose3drì   r  r<   r<   r=   r#   |  s    ÿr#   zquantized::cat)r3   Úq_inputsrZ   rþ   rÿ   rh   c                   sD   t  |¡}‡ fdd„|D ƒ}ˆ jdg|¢R d|iŽ}t  ˆ |||¡S )Nc                   s   g | ]}t  ˆ |¡d  ‘qS )r   rí   )r•   r”   r2   r<   r=   r–      s   z!quantized_cat.<locals>.<listcomp>rË   rÌ   )r   Z_unpack_listrO   rì   )r3   r  rZ   rþ   rÿ   Zunpacked_inputsZdequantizedZconcatenatedr<   r2   r=   r   –  s    	

ÿr   )N)N)N)rÙ   rÚ   )MÚ
__future__r   Ú	functoolsrÐ   rÎ   Útypingr   rP   Ztorch._C._onnxr   Z_onnxrâ   Z
torch.onnxr   r   r   r   r	   r6   Ztorch.onnx._globalsr
   Ztorch.onnx._internalr   r   Úcollections.abcr   Ú__all__ÚpartialZonnx_symbolicZ_onnx_symbolicr   r   r8   rA   r.   r/   rz   r„   rŽ   Z_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>   sn  &(+$8þþþýÿþ
ýÿþ
ýÿþ
. þþþ þþþþþþ ú:
T  ú.
6	
	
