U
    U?hO	                     @   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__)selfZonnx_quantizerZ	onnx_node	__class__ ]/var/www/html/venv/lib/python3.8/site-packages/onnxruntime/quantization/operators/gavgpool.pyr      s    zQGlobalAveragePool.__init__c                    sH  | j }|jdkst|jd | jjkr0t  S | jj|jd  }| jj|jd  }| j|j	d \}}}}}|rx|n|j
}|r|n|j}t|j	d |j	d t ||tj}	|	| jj|j	d < i }
|jD ]}|
t| qt|
d< d|
d< |jr|jd nd}tjjd|j |j|j
|j||g|	jg|f|
}| j j|g7  _d S )NZGlobalAveragePoolr   domainZchannels_lastZ_quant ZQLinear)nodeZop_typeAssertionErrorinputZ	quantizerZquantized_value_mapr   quantizeZ_get_quantization_paramsoutputZ
scale_nameZzp_namer   r   r   ZInput	attributeupdater   r   nameonnxhelperZ	make_nodeZq_nameZ	new_nodes)r   r   Zquantized_input_valueZ
data_foundZ output_scale_name_from_parameterZoutput_zp_name_from_parameter_Zoutput_scale_nameZoutput_zp_nameZquantized_output_valuekwargsr   Z
qnode_nameZqnoder   r   r   r      sV    

zQGlobalAveragePool.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   