o
    ¢ÄiI  ã                   @   s    d dl mZ G dd„ deƒZdS )é   )ÚQDQOperatorBasec                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚQDQNormalizationc                    s   t ƒ  ||¡ d S )N)ÚsuperÚ__init__)ÚselfZonnx_quantizerZ	onnx_node©Ú	__class__© úa/home/kim/smarthome/.venv/lib/python3.10/site-packages/onnxruntime/quantization/operators/norm.pyr   
   s   zQDQNormalization.__init__c                 C   s   | j }|jdv s
J ‚| j |jd ¡ | j |jd ¡}| jj|jd d|jd\}}|r9| jj|jd |d n|rE| j |jd ¡ n	| j |jd ¡ t	|jƒdkrm|jd rm| j 
|j|jd |jd |jd ¡ | js||jD ]
}| j |¡ qsd S d S )N>   ZInstanceNormalizationZLayerNormalizationZBatchNormalizationé    r   )Zdefault_axisÚop_type)Zaxisé   )Únoder   Z	quantizerZquantize_activation_tensorÚinputZis_input_a_initializerZis_tensor_per_channelZ"quantize_weight_tensor_per_channelZquantize_weight_tensorÚlenZquantize_bias_tensorÚnameZdisable_qdq_for_node_outputÚoutput)r   r   Zscale_is_initializerZscale_is_per_channelZscale_channel_axisZoutput_namer	   r	   r
   Úquantize   s&   
ÿ&
þzQDQNormalization.quantize)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__r	   r	   r   r
   r   	   s    r   N)Zqdq_base_operatorr   r   r	   r	   r	   r
   Ú<module>   s   