U
    U?hI  ã                   @   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__© úY/var/www/html/venv/lib/python3.8/site-packages/onnxruntime/quantization/operators/norm.pyr   
   s    zQDQNormalization.__init__c                 C   sü   | j }|jdkst‚| j |jd ¡ | j |jd ¡}| jj|jd d|jd\}}|rr| jj|jd |d n*|rŠ| j 	|jd ¡ n| j |jd ¡ t
|jƒdkrÚ|jd rÚ| j |j|jd |jd |jd ¡ | jsø|jD ]}| j |¡ qæd S )N>   ÚBatchNormalizationÚLayerNormalizationÚInstanceNormalizationé    r   )Zdefault_axisÚop_type)Zaxisé   )Únoder   ÚAssertionErrorZ	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   