
    `i                     t    S SK r SSKJr  SSKJr  SSKJrJrJrJ	r	  S SK J
r   " S S	\5      r " S
 S\5      rg)    N   )QuantOperatorBase)QDQOperatorBase   )QuantizedValueQuantizedValueTypeattribute_to_kwarg	ms_domain)onnx_pbc                   :   ^  \ rS rSrU 4S jrS rU 4S jrSrU =r$ )QLinearActivation   c                 $   > [         TU ]  X5        g Nsuper__init__selfonnx_quantizer	onnx_node	__class__s      r/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxruntime_tools/quantization/operators/activation.pyr   QLinearActivation.__init__	       3    c                    U R                   nUR                  S:X  d  UR                  S:X  d   eUR                  S   U R                  R                  ;  a!  U R                  =R
                  U/-  sl        g U R                  R                  UR                  S      nX R                  R                  UR                  S   '   g )NReluClipr   )nodeop_typeinput	quantizerquantized_value_map	new_nodesoutput)r   r    quantized_values      r   QuantizeClipRelu"QLinearActivation.QuantizeClipRelu   s    yy&$,,&*@A@
 ::a= B BBNN$$.$..<<TZZ]K=L**4;;q>:r   c                   > U R                   nUR                  S:X  d  UR                  S:X  a  U R                  5         g U R                  R	                  UR
                  S   5      u  p#n  nU(       d  [        TU ]  5         g U R                  R                  US/5      u  pgpUR
                  S   S-   n
SnUR                  S:w  a  UR                  S-   n0 nUR                   H  nUR                  [        U5      5        M     [        US'   US   US   US   X4/n[        R                  R                   " SUR                  -   UU
/U40 UD6n[#        UR
                  S   XU[$        R&                  5      nUU R                  R(                  UR
                  S   '   U	R+                  U5        U R                  =R,                  U	-  sl        g )	Nr   r   r   
_quantized _quantdomainQLinear)r    r!   r(   r#   _get_quantization_paramsr&   r   quantizequantize_inputsname	attributeupdater	   r
   onnxhelper	make_noder   r   Inputr$   appendr%   )r   r    
data_foundoutput_scale_nameoutput_zp_name_quantized_input_nameszero_point_namesscale_namesnodesqlinear_activation_outputqlinear_activation_namekwargsr4   qlinear_activation_inputsqlinear_activation_nodeq_outputr   s                    r   r1   QLinearActivation.quantize   s   yy<<6!T\\V%;!!# ?Cnn>e>efjfqfqrsft>u;
~q!GFJnnFdFdeilmknFoC$(KKN\$A!"$99?&*ii(&:#IMM,Y78 ($x "!$k!n6Fq6IK\%
! #'++"7"7	DLL8PRk9R8SUl#xpv#x "$++a.2K`n"4":":<=E**4;;q>:,-  E) r    )	__name__
__module____qualname____firstlineno__r   r(   r1   __static_attributes____classcell__r   s   @r   r   r      s    4M%* %*r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )QDQRemovableActivationB   c                 $   > [         TU ]  X5        g r   r   r   s      r   r   QDQRemovableActivation.__init__C   r   r   c                     U R                   nU R                  R                  UR                  S   UR                  S   5      (       a&  U R                  R                  U R                   5        g g )Nr   )r    r#   try_replacing_upstream_outputr"   r&   remove_node)r   r    s     r   r1   QDQRemovableActivation.quantizeF   sO    yy>>77

1t{{ST~VVNN&&tyy1 Wr   rJ   )rK   rL   rM   rN   r   r1   rO   rP   rQ   s   @r   rS   rS   B   s    42 2r   rS   )r6   base_operatorr   qdq_base_operatorr   quant_utilsr   r   r	   r
   r   
onnx_protor   rS   rJ   r   r   <module>r_      s1     , . [ [ &7*) 7*t2_ 2r   