
     Ng!                     ^    d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
  G d de          ZdS )	    N   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBase)QDQOperatorBasec                   (     e Zd Z fdZ fdZ xZS )QLinearConcatc                 L    t                                          ||           d S )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      e/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/quantization/operators/concat.pyr   zQLinearConcat.__init__   s#    33333    c           	         | j         }| j                            |j        d                   \  }}}}}| j                            |g t          t          |j                                      \  }}}}	|r| t                      	                                S | j        j
        |j        d                  }
t          |j        d         |j        d         t          z   |||
j                  }|| j        j
        |j        d         <   i }|j        D ]$}|                    t!          |                     %t"          |d<   |j        r
|j        dz   nd}||g}t          t          |                    D ],}|                    ||         ||         ||         g           -t)          j        j        d||j        g|fi |}| j        xj        |	z  c_        | j        xj        |gz  c_        d S )Nr   domain_quant r   )node	quantizer_get_quantization_paramsoutputquantize_activationrangeleninputr   quantizequantized_value_mapr   r   
value_type	attributeupdater   r   nameextendonnxhelper	make_nodeq_name	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_q_input_nameszero_point_namesscale_namesnodesquantized_input_valuequantized_output_valuekwargsr&   
qnode_nameqlconcat_inputsiqlconcat_noder   s                     r   r#   zQLinearConcat.quantize   s   y N33DKNCC	
 N..t5NuS__7M7M5NOO	
 	&]277##%%% !% B4:a= Q!/KNKN55!,"
 "
 >T*4;q>: 	9 	9IMM,Y778888$x-1Y>TY))B
,n=s=))** 	\ 	\A""M!$4k!nFVWXFY#Z[[[[-_/E/L.Mz
 
]c
 
 	  E)    ]O3    r   )__name__
__module____qualname__r   r#   __classcell__)r   s   @r   r   r      sQ        4 4 4 4 4,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4r   r   )r*   quant_utilsr   r   r   r   r   base_operatorr
   qdq_base_operatorr   r    r   r   <module>rF      s                  - , , , , , . . . . . .04 04 04 04 04% 04 04 04 04 04r   