U
    •Ê¹jz‰  ã                !   @  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 dd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(g!Zejej d)d*�Z!d+d,„ Z"e!d-ƒej#d.d/œd0d	„ƒƒZ$e %d1d1d2¡ej#d.d/œd3d4„ƒƒZ&e!d5ƒej#d.d/œd6d7„ƒƒZ'e!d8ƒe %d1d9d9d:¡ej#dÂd.d/œd;d'„ƒƒƒZ(e!d<ƒe %d1d1d9d9d9d:¡ej#dÃd.d/œd=d(„ƒƒƒZ)e!d>e"d?ej*j+j,j-d@dAdB�gdC�e!dDe"dEej*j+j,j.dFdAdB�gdC�e!dGe"dHej*j+j,j/dIdAdB�gdC�e!dJe"dKej*j+j,j-d@dLdB�gdC�e!dMe"dNej*j+j,j.dFdLdB�gdC�e!dOe"dPej*j+j,j/dIdLdB�gdC�ej#dQdRdSdTdUœdVdW„ƒƒƒƒƒƒƒZ0dSdXdXdXdYdZœd[d\„Z1e!d]e"d^d@ƒgdC�e!d_e"d`dFƒgdC�e!dae"dbdIƒgdC�ej#dcdd„ ƒƒƒƒZ2e!dee"dfdIdgƒgdC�e!dhe"didjdgƒgdC�e!dke"dldmdgƒgdC�e!dne"dodIdpƒgdC�e!dqe"drdjdpƒgdC�e!dse"dtdmdpƒgdC�ej#dudv„ ƒƒƒƒƒƒƒZ3e!dwƒej#d.d/œdxdy„ƒƒZ4ej#dÄd.dzd{d{d{d|d}œd~d„ƒZ5e!d€ƒej#d.d/œd�d&„ƒƒZ6e!d‚ƒe %d1dƒ¡ej#d.d/œd„d„ƒƒƒZ7e!d…ƒej#d.d/œd†d„ƒƒZ8e!d‡ƒe %d1d1d1d9d9d9d1d9d9¡	ej#d.d/œdˆd
„ƒƒƒZ9e!d‰ƒe %d1d1d1d9d9¡ej#dÅd.d/œdŒd„ƒƒƒZ:e!d�ƒej#d.d/œdŽd„ƒƒZ;e!d�ƒej#d.d/œd�d„ƒƒZ<e!d‘ƒej#d.d/œd’d„ƒƒZ=e!d“ƒej#d.d/œd”d„ƒƒZ>e!d•ƒe %d1d–d–d–¡ej#d.d/œd—d„ƒƒƒZ?e!d˜ƒej#d.d/œd™d#„ƒƒZ@e!dšƒej#d.d/œd›d„ƒƒZAe!dœƒej#d.d/œd�d„ƒƒZBe!džƒej#d.d/œdŸd$„ƒƒZCe!d ƒej#d.d/œd¡d„ƒƒZDe!d¢ƒej#d.d/œd£d%„ƒƒZEe!d¤ƒej#d.d/œd¥d"„ƒƒZFe!d¦ƒej#d.d/œd§d!„ƒƒZGe!d¨ƒej#d.d/œd©d„ƒƒZHe!dªƒe %d1d1d1d–d1d1¡ej#d.d/œd«d „ƒƒƒZIe!d¬ƒej#d.d/œd­d„ƒƒZJe!d®ƒej#d.d/œd¯d„ƒƒZKe!d°ƒej#d.d/œd±d„ƒƒZLe!d²ƒej#d.d/œd³d„ƒƒZMe!d´ƒej#d.d/œdµd„ƒƒZNe!d¶ƒej#d.d/œd·d„ƒƒZOe!d¸ƒej#d.d/œd¹d„ƒƒZPe!dºƒej#d.d/œd»d„ƒƒZQe!d¼ƒej#d.d/œd½d„ƒƒZRe!d¾ƒe %d1d9d1d1¡ej#d.d¿dSd¿d¿d¿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é
   )Zopsetc                    s   ‡ ‡fdd„}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                   s
   | ˆ ˆŽS ©N© )Úfn©ÚargsÚkwargsr6   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/onnx/symbolic_opset10.pyÚ_applyK   s    z_apply_params.<locals>._applyr6   )r9   r:   r<   r6   r8   r;   Ú_apply_paramsH   s    r=   z	aten::divzjit_utils.GraphContext©Úgc                 G  s0   t |ƒdkrt | ||¡S t| ||f|žŽ S d S ©Nr   )ÚlenÚopset9Útrue_divideÚ_div_rounding_mode)r?   ÚselfÚotherr9   r6   r6   r;   r   Q   s    ÚvÚsc                 C  s(   |dkrt | ||ƒS t | |||¡S d S )NÚfloor)Ú_floor_dividerB   rD   )r?   rE   rF   Zrounding_moder6   r6   r;   rD   Z   s    rD   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_fprB   rC   ÚopÚtorchÚtensorZint64)r?   rE   rF   Úoutr   ÚzeroÚnegativeÚmodZ
fixup_maskÚoneÚfixupr6   r6   r;   rJ   c   s    " rJ   z
aten::sortÚiÚnonec                 C  s   t j| ||||d�S )N)Ú	decendingr[   )r   Z_sort_helper)r?   rE   Údimrc   r[   r6   r6   r;   r2   y   s    z
aten::topkc              	   C  s   t j| ||||||d�S )N)ÚlargestÚsortedr[   )r   Z_topk_helper)r?   rE   Úkrd   re   rf   r[   r6   r6   r;   r3   €   s          ÿzaten::max_pool1dZ
max_pool1drT   F)Úreturn_indices)Zdecoratezaten::max_pool2dZ
max_pool2dé   zaten::max_pool3dZ
max_pool3dé   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Ústrr   ÚintÚbool)ÚnameÚtuple_fnÚndimsrh   c              	     s<   t  dddddd¡t  dddddd¡‡ ‡‡fdd„ƒƒ}|S )NTFrG   Úisra   c                   s@  |s|}t ˆ|ƒƒ}|rFt ||||¡}|t dd„ t||ƒD ƒƒ }n|d }ˆ|ƒ|ˆ|ƒddœ}tˆ|ƒƒdhkr‚ˆ|ƒ|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 d S )Nc                 s  s   | ]\}}|| V  qd S r5   r6   )Ú.0ÚaÚbr6   r6   r;   Ú	<genexpr>Î   s     z1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>ri   r   )Úkernel_shape_iÚpads_iÚ	strides_iÚceil_mode_irT   Zdilations_iZMaxPoolÚoutputsc                 S  s   g | ]}d ‘qS ©rT   r6   ©rr   Ú_r6   r6   r;   Ú
<listcomp>ì   s     z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>c                 S  s   g | ]}d ‘qS r{   r6   r|   r6   r6   r;   r~   í   s     )rz   rv   rx   c                 S  s   g | ]}d | ‘qS )ri   r6   )rr   ra   r6   r6   r;   r~   ó   s     )ÚaxesÚstartsÚends)ÚtuplerB   Zget_pool_ceil_paddingÚzipÚsetrX   Úranger   Ú_slice_helperÚlistÚsub)r?   ÚinputÚkernel_sizeÚstrideÚpaddingÚdilationÚ	ceil_modeZpadding_ceilr:   ÚrÚindicesr}   Zflattened_indicesrH   ©rp   rh   ro   r6   r;   Úsymbolic_fnÄ   sN       ÿüû


ûz_max_pool.<locals>.symbolic_fn)r   Úquantized_argsÚ
parse_args)rn   ro   rp   rh   r’   r6   r‘   r;   Ú	_max_pool‰   s    ;7r•   zUnion[Sequence[int], int]z2Tuple[Sequence[int], Sequence[int], Sequence[int]])Úexpand_sizerŠ   r‹   rŒ   Úreturnc                 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 )z:Adjust attributes of avg_pool to match ONNX specification.ri   rT   )Ú
isinstancerl   rA   )r–   rŠ   r‹   rŒ   Úkernel_shapeÚpadsÚstridesr6   r6   r;   Ú_adjust_attributes_of_avg_pool  s     



rœ   zaten::avg_pool1dZ
avg_pool1dzaten::avg_pool2dZ
avg_pool2dzaten::avg_pool3dZ
avg_pool3dc                   sT   t  ddddddd¡t  ddddddd¡tjddddd	d
d
dœ‡ fdd„ƒƒƒ}|S )NTFrG   rq   ra   rb   ú_C.ValuezSequence[int]zUnion[int, Sequence[int]]rl   )r‰   rŠ   r‹   rŒ   rŽ   Úcount_include_padc              	     s0   t ˆ |||ƒ\}}	}
| jd|||||
|	d�}|S )NZAveragePool)ry   Zcount_include_pad_irv   rw   rx   )rœ   rX   )r?   r‰   rŠ   r‹   rŒ   rŽ   rž   Zdivisor_overrider™   r›   rš   Úresult©r–   r6   r;   r’   /  s        ÿ
ù
z_avg_pool.<locals>.symbolic_fn)N)r   r“   r”   r   Úbeartype)rn   r–   r’   r6   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¡tj‡ ‡‡fdd„ƒƒ}|S )NTFc                   sb   t  | ˆ|¡\}}t  ˆ¡ t  |¡}|r8t  ˆd|¡S |d k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_scalesrX   )r?   r‰   Zoutput_sizer9   ÚscalesÚalign_corners©rd   Úinterpolate_modern   r6   r;   r’   i  s"      ÿ

   ÿz!_interpolate.<locals>.symbolic_fn)r   r“   r   r¡   )rn   rd   r¬   r’   r6   r«   r;   Ú_interpolateO  s    r­   zaten::__interpolatec           	      C  s*   t  | |||||¡\}}| jd|||d�S )Nr¦   r§   )r   Z _interpolate_get_scales_and_moderX   )	r?   r‰   ÚsizeZscale_factorÚmoderª   Zrecompute_scale_factorZ	antialiasr©   r6   r6   r;   Ú__interpolate|  s         ÿr°   ztorch._C.Valuez)Union[List, torch.Tensor, torch._C.Value]z3Optional[Union[List, torch.Tensor, torch._C.Value]])r?   r‰   r   r€   r�   Ústepsc                   s®   dd„ ‰d‡ ‡fdd„	}dd„ }||ƒdkrR||ƒt jkrR|d ksN||ƒdkrR|S ||ƒ}||dd	�}||t jd	�}|d krŽˆ  d
||||¡S ||dd	�}ˆ  d
|||||¡S )Nc                 S  s:   | d krdS t | tjjƒo8|  ¡  ¡ dko8t |  ¡ tjƒS )NTzprim::Constant)r˜   rY   r	   ÚValueÚnodeÚkindÚtypeZNoneType)Úvaluer6   r6   r;   Úis_none_value—  s    ÿýz_slice.<locals>.is_none_valuec                   s~   ˆ| ƒr|d k	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 )NrL   rO   r   rT   zRank must be 0 or 1, not )r˜   r‡   rY   ÚTensorrX   rZ   r   Z_get_tensor_rankÚ_unsqueeze_helperr   ÚSymbolicValueError)Úlist_or_valueÚdefault_valueZrank©r?   r·   r6   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 )NrT   r   ra   )r˜   r‡   rY   r¸   rA   r   Z_maybe_get_const)r»   r6   r6   r;   Úget_const_value±  s
    z_slice.<locals>.get_const_valuer   rT   )r¼   ÚSlice)N)r
   Ú	INT64_MAXrX   )r?   r‰   r   r€   r�   r±   r¾   r¿   r6   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£   rj   r   zUnknown aten::slice signature©r   r€   r�   r±   )rA   r   rº   r   r†   )r?   rE   r9   ÚdimsÚstartÚendÚstepr6   r6   r;   r1   É  s    
úz
aten::fliprq   c              	   C  s8   t j| ||dgt|ƒ tj gt|ƒ dgt|ƒ d�S )NéÿÿÿÿrÃ   )r   r†   rA   r
   rÁ   )r?   r‰   rÄ   r6   r6   r;   r   à  s    úz
aten::fmodc                 C  s   | j d||dd�S )NrP   rT   rQ   )rX   )r?   r‰   rF   r6   r6   r;   r   î  s    zaten::embedding_bagc
                 C  s  |rt jrt d¡S |	d k	r,|	dkr,tdƒ‚t d¡ t |d¡}
|
d k	�rú|r^|
d }|}n4|
}|| jdt	 
tjg¡d�g}| jd|ž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 |¡�sj|  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|ž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.'rT   rL   rO   Ú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É   )rÉ   )r   Zexport_trainingr   Z_onnx_unsupportedÚRuntimeErrorÚwarningsÚwarnZ_get_tensor_dim_sizerX   rY   rZ   ÚsysÚmaxsizer…   r¹   rB   ÚselectZ_is_noneZ_reducesum_helperÚappend)r?   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_ra   Zstart_Úend_Zaxes_Zindices_rowZ
embeddingsZper_sample_weights_rowÚoutputr6   r6   r;   r   ô  sŒ    
ÿÿ
þý   ÿû    ÿ  ÿ
   ÿ
ÿz%aten::fake_quantize_per_tensor_affineé€ÿÿÿé   c              	   C  sÀ   ||fdkrt  dddd|¡ ||fdkrDt d|› d|› d	�|¡‚t  |¡}|d k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   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©Zto_iZDequantizeLinearZQuantizeLinear)r   Z _onnx_opset_unsupported_detailedr   rº   r¨   ÚfloatÚdatarX   Ú_C_onnxÚTensorProtoDataTypeZUINT8ZINT8)r?   ÚinputsÚscaleÚ
zero_pointZ	quant_minZ	quant_maxr6   r6   r;   r   K  s@    ûý
û
üzaten::isinfc                 C  s   |   d| j d|tjjd�¡S )NZIsInfrÜ   rÝ   )rX   rà   rá   ÚDOUBLE©r?   r‰   r6   r6   r;   r   |  s    zaten::isfinitec                 C  s,   t | |ƒ}t | |¡}t | t | ||¡¡S r5   )r   rB   ÚisnanZ__not_Z__or_)r?   r‰   Zinf_nodeZnan_noder6   r6   r;   r   ‚  s    
zaten::quantize_per_tensorc                 C  sL   t  |dd¡}| jd|t |¡ ¡ d�}| jd|tjjd�}t  	| |||¡S )Nra   rN   rÜ   rÝ   )
r   Z
_get_constrX   r   ÚJitScalarTypeZ	onnx_typerà   rá   ÚFLOATÚquantize_helper)r?   r‰   rã   rä   rN   r6   r6   r;   r   Š  s      ÿzaten::dequantizec                 C  s   t  | |¡d S r@   ©r   Údequantize_helperræ   r6   r6   r;   r   –  s    zaten::nan_to_numÚfc                 C  s.  t  |¡s|S tj |¡ ¡ }|d kr*d}t | |¡}|  d|| jdt	j
|g|d�d�|¡}t	 |¡}|d krt|j}t | t| |ƒt | || jdt	 dg¡d�¡¡}	|  d|	| jdt	j
|g|d�d�|¡}
|d krØ|j}t | t| |
ƒt | |
| jdt	 dg¡d�¡¡}|  d|| jdt	j
|g|d�d�|
¡S )Nç        rV   rL   rM   rO   r   )r   rW   r   rè   Ú
from_valuerN   rB   rç   rX   rY   rZ   ÚfinfoÚmaxÚlogical_andr   ÚgtZ
LongTensorÚminÚlt)r?   r‰   ÚnanZposinfZneginfZinput_dtypeZnan_condZ
nan_resultrð   Zposinf_condZnan_posinf_resultZneginf_condr6   r6   r;   r   œ  sV    
ü	
ýü  ÿýüzquantized::linearc                 C  sl   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
¡}t  | |¡\}}}}t | ||	|¡}t  | |||¡S r5   )r   rì   Úrequantize_bias_helperrB   r¥   rê   )r?   Úq_inputÚq_weightÚbiasÚop_scaleÚop_zero_pointr‰   Úinput_scaler}   ÚweightÚweight_scaleÚq_biasrÖ   r6   r6   r;   r.   Õ  s    zquantized::addc                 C  sF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S r5   )r   rì   rB   Úaddrê   ©r?   ÚxÚyrû   rü   r}   rÖ   r6   r6   r;   r   ä  s    zquantized::add_reluc                 C  sR   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t | |¡}t  | |||¡S r5   )r   rì   rB   r  Úrelurê   r  r6   r6   r;   r   ï  s
    zquantized::mulc                 C  sF   t  | |¡\}}}}t  | |¡\}}}}t | ||¡}t  | |||¡S r5   )r   rì   rB   Úmulrê   r  r6   r6   r;   r/   û  s    zquantized::hardswishc                 C  s0   t  | |¡\}}}}t | |¡}t  | |||¡S r5   )r   rì   rB   Z	hardswishrê   ©r?   r  rû   rü   r}   rÖ   r6   r6   r;   r*     s    zquantized::sigmoidc                 C  s0   t  | |¡\}}}}t | |¡}t  | |||¡S r5   )r   rì   rB   Zsigmoidrê   r  r6   r6   r;   r0     s    zquantized::leaky_reluc                 C  s4   t  | |¡\}}}}t | |||¡}t  | |||¡S r5   )r   rì   rB   Z
leaky_relurê   )r?   r  Znegative_slopeZinplacerû   rü   r}   rÖ   r6   r6   r;   r-     s    zquantized::layer_normc           
   	   C  s:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S ©NF)r   rì   rB   Z
layer_normrê   )
r?   r  Znormalized_shaperþ   rú   Úepsrû   rü   r}   rÖ   r6   r6   r;   r,   &  s    zquantized::group_normc           
   	   C  s:   t  | |¡\}}}}t | |||||d¡}	t  | |	||¡S r  )r   rì   rB   Z
group_normrê   )
r?   r  Z
num_groupsrþ   rú   r	  rû   rü   r}   rÖ   r6   r6   r;   r)   9  s    zquantized::instance_normc           
      C  s@   t  | |¡\}}}}t | |||d d dd|d¡
}	t  | |	||¡S )NFrî   )r   rì   rB   Zinstance_normrê   )
r?   rø   rþ   rú   r	  rû   rü   r‰   r}   rÖ   r6   r6   r;   r+   L  s             ÿzquantized::conv1d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r5   )r   rì   r÷   rB   Úconv1dr  rê   ©r?   rø   rù   rú   r‹   rŒ   r�   Úgroupsrû   rü   r‰   rý   r}   rþ   rÿ   r   rÖ   r6   r6   r;   r    a  s    zquantized::conv2d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r5   )r   rì   r÷   rB   Úconv2dr  rê   r  r6   r6   r;   r!   z  s    zquantized::conv3d_reluc
              
   C  s€   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r5   )r   rì   r÷   rB   Úconv3dr  rê   r  r6   r6   r;   r"   “  s    zquantized::conv1dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r5   )r   rì   r÷   rB   r
  rê   r  r6   r6   r;   r#   ¬  s    zquantized::conv2dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r5   )r   rì   r÷   rB   r  rê   r  r6   r6   r;   r$   Ä  s    zquantized::conv3dc
              
   C  st   t  | |¡\}
}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r5   )r   rì   r÷   rB   r  rê   r  r6   r6   r;   r%   Ü  s    zquantized::conv_transpose1dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r5   ©r   rì   r÷   rB   Zconv_transpose2drê   ©r?   rø   rù   rú   r‹   rŒ   Zoutput_paddingr�   r  rû   rü   r‰   rý   r}   rþ   rÿ   r   rÖ   r6   r6   r;   r&   ô  s             ÿzquantized::conv_transpose2dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r5   r  r  r6   r6   r;   r'     s             ÿzquantized::conv_transpose3dc                 C  sv   t  | |¡\}}}}t  | |¡\}}}}t  | |||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r5   )r   rì   r÷   rB   Zconv_transpose3drê   r  r6   r6   r;   r(   *  s             ÿzquantized::catr�   )r?   Úq_inputsrd   rû   rü   r—   c                   s@   t  |¡}‡ fdd„|D ƒ}ˆ jd|žd|iŽ}t  ˆ |||¡S )Nc                   s   g | ]}t  ˆ |¡d  ‘qS )r   rë   )rr   r‰   r>   r6   r;   r~   P  s    z!quantized_cat.<locals>.<listcomp>rÉ   rÊ   )rÉ   )r   Z_unpack_listrX   rê   )r?   r  rd   rû   rü   Zunpacked_inputsZdequantizedZconcatenatedr6   r>   r;   r   E  s    


ÿ)N)N)N)r×   rØ   )TÚ
__future__r   Ú	functoolsrÎ   rÌ   Útypingr   r   r   r   r   r   rY   Ztorch._C._onnxr	   Z_onnxrà   Z
torch.onnxr
   r   r   r   r   rB   Ztorch.onnx._globalsr   Ztorch.onnx._internalr   r   r   Ú__all__ÚpartialZonnx_symbolicZ_onnx_symbolicr=   r¡   r   r”   rD   rJ   r2   r3   ÚnnÚmodulesÚutilsZ_singleZ_pairZ_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   r6   r6   r6   r;   Ú<module>   s   ß%	 
  ÿÿþ 
  ÿÿþ 
  ÿÿþ
üÿþ
üÿþ
üÿþ"> 
þ
þ
þ!þþþþþþ ú:
T  ú.
6	
	
