
     Ng	                     ^    d dl Z d dl mZ ddlmZmZmZmZmZ ddl	m
Z
  G d de
          ZdS )	    N)onnx_pb   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain   )QuantOperatorBasec                   (     e Zd Z fdZ fdZ xZS )QLinearBinaryOpc                 L    t                                          ||           d S )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      h/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/quantization/operators/binary_op.pyr   zQLinearBinaryOp.__init__	   s#    33333    c                 r   | j         }| j                            |j        d                   \  }}}}}| j                            |ddg          \  }}}}	|r| t                                                      S |j        d         t          z   }
|j        r
|j        dz   nd}i }|j	        D ]$}|
                    t          |                     %t          |d<   g }|                    |d                    |                    |d                    |                    |d                    |                    |d                    |                    |d                    |                    |d                    |                    |           |                    |           t          j        j        d|j        z   ||
g|fi |}|	                    |           t%          |j        d         |
||t&          j                  }|| j        j        |j        d         <   | j        xj        |	z  c_        d S )Nr   r
   _quant domainQLinear)node	quantizer_get_quantization_paramsoutputquantize_activationr   quantizer   name	attributeupdater   r	   appendonnxhelper	make_nodeop_typer   r   Inputquantized_value_map	new_nodes)r   r   
data_foundoutput_scale_nameoutput_zp_name_quantized_input_nameszero_point_namesscale_namesnodesqlinear_binary_math_outputqlinear_binary_math_namekwargsr#   qlinear_binary_math_inputsqlinear_binary_math_nodeq_outputr   s                    r   r!   zQLinearBinaryOp.quantize   sg   y N33DKNCC	
 N..taV<<	
! 	&2:77##%%%%)[^6N%N";?9#L49x#7#7"  	9 	9IMM,Y778888$x%'""))*?*BCCC"))+a.999"))*:1*=>>>"))*?*BCCC"))+a.999"))*:1*=>>> 	#))*;<<<")).999#';#8$&'($	$
 $

 $
 $
  	-... "KN&$
 
 >F*4;q>:  E)    r   )__name__
__module____qualname__r   r!   __classcell__)r   s   @r   r   r      sQ        4 4 4 4 4<* <* <* <* <* <* <* <* <*r   r   )r&   r   
onnx_protoquant_utilsr   r   r   r   r	   base_operatorr   r    r   r   <module>rC      s     & & & & & & u u u u u u u u u u u u u u , , , , , ,@* @* @* @* @*' @* @* @* @* @*r   