o
    ²3IhO	  ã                   @   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 )ÚQGlobalAveragePoolc                    s   t ƒ  ||¡ d S )N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_node©Ú	__class__© úk/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/onnxruntime/quantization/operators/gavgpool.pyr      s   zQGlobalAveragePool.__init__c                    sL  | j }|jdks
J ‚|jd | jjvrtƒ  ¡ S | jj|jd  }| jj|jd  }| j |jd ¡\}}}}}|r<|n|j	}|rC|n|j
}t|jd |jd t ||tjƒ}	|	| jj|jd < i }
|jD ]	}|
 t|ƒ¡ qet|
d< d|
d< |jr|jd nd}tjjd|j |j|j	|j
||g|	jg|fi |
¤Ž}| j j|g7  _d S )NÚGlobalAveragePoolr   ÚdomainÚchannels_lastÚ_quantÚ ÚQLinear)ÚnodeÚop_typeÚinputÚ	quantizerÚquantized_value_mapr   ÚquantizeÚ_get_quantization_paramsÚoutputÚ
scale_nameÚzp_namer   r   r   ÚInputÚ	attributeÚupdater   r   ÚnameÚonnxÚhelperÚ	make_nodeÚq_nameÚ	new_nodes)r   r   Úquantized_input_valueÚ
data_foundÚ output_scale_name_from_parameterÚoutput_zp_name_from_parameterÚ_Úoutput_scale_nameÚoutput_zp_nameÚquantized_output_valueÚkwargsr%   Ú
qnode_nameÚqnoder   r   r   r      sV   
úû
ûöõzQGlobalAveragePool.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    