U
    U?h                     @   sD   d dl Z ddlmZmZmZmZmZ ddlmZ G dd deZ	dS )    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                       s(   e Zd Z fddZ fddZ  ZS )QLinearPoolc                    s   t  || d S )N)super__init__)selfZonnx_quantizerZ	onnx_node	__class__ \/var/www/html/venv/lib/python3.8/site-packages/onnxruntime/quantization/operators/pooling.pyr      s    zQLinearPool.__init__c                    s  | j }| j|jd \}}}}}| j|dg\}}}}	|rF|d krPt  S |jd t }
t|jd |
||t	j
}|| jj|jd < i }|jD ]}|t| qt|d< |jr|jd nd}tjjd|j |d |d |d ||g|
g|f|}|	| | j j|	7  _d S )Nr   domainZ_quant ZQLinear)nodeZ	quantizerZ_get_quantization_paramsoutputZquantize_activationr   quantizer   r   r   ZInputZquantized_value_map	attributeupdater   r   nameonnxhelperZ	make_nodeZop_typeappendZ	new_nodes)r   r   Z
data_foundZoutput_scale_nameZoutput_zp_name_Zquantized_input_namesZinput_zero_point_namesZinput_scale_namesZnodesZqlinear_output_nameZquantized_output_valuekwargsr   Zqlinear_node_nameZqnoder   r   r   r      sZ    		


zQLinearPool.quantize)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r
      s   r
   )
r   Zquant_utilsr   r   r   r   r   Zbase_operatorr	   r
   r   r   r   r   <module>   s   