o
    gI                     @   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__)selfonnx_quantizer	onnx_node	__class__ ^/var/www/visachat/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>   BatchNormalizationLayerNormalizationInstanceNormalization    r   )default_axisop_type)axis   )noder   	quantizerquantize_activation_tensorinputis_input_a_initializeris_tensor_per_channel"quantize_weight_tensor_per_channelquantize_weight_tensorlenquantize_bias_tensornamedisable_qdq_for_node_outputoutput)r   r   scale_is_initializerscale_is_per_channelscale_channel_axisoutput_namer   r   r   quantize   s&   
&
zQDQNormalization.quantize)__name__
__module____qualname__r   r&   __classcell__r   r   r	   r   r   	   s    r   N)qdq_base_operatorr   r   r   r   r   r   <module>   s   