o
    ²3Ihª  ã                   @   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__© új/home/air/sanwanet/gpt-api/venv/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    