o
    
j                     @   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__)selfonnx_quantizer	onnx_node	__class__ ]/home/kuhnn/.local/lib/python3.10/site-packages/onnxruntime/quantization/operators/pooling.pyr      s   zQLinearPool.__init__c                    s  | j }| j|jd \}}}}}| j|dg\}}}}	|r#|d u r(t  S |jd t }
t|jd |
||t	j
}|| jj|jd < i }|jD ]	}|t| qIt|d< |jr_|jd nd}tjjd|j |d |d |d ||g|
g|fi |}|	| | j j|	7  _d S )Nr   domain_quant QLinear)node	quantizer_get_quantization_paramsoutputquantize_activationr   quantizer   r   r   Inputquantized_value_map	attributeupdater   r   nameonnxhelper	make_nodeop_typeappend	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_quantized_input_namesinput_zero_point_namesinput_scale_namesnodesqlinear_output_namequantized_output_valuekwargsr    qlinear_node_nameqnoder   r   r   r      sZ   		


zQLinearPool.quantize)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r
      s    r
   )
r#   quant_utilsr   r   r   r   r   base_operatorr	   r
   r   r   r   r   <module>   s    