§
    kŠtjJ  ã                   óz   — 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 G d	„ d
e
¦  «        ZdS )é    Né   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeÚattribute_to_kwargÚ	ms_domainé   )ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó2   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚQLinearActivationc                 óL   •— t          ¦   «                              ||¦  «         d S ©N©ÚsuperÚ__init__©ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/quantization/operators/activation.pyr   zQLinearActivation.__init__	   ó#   ø€ Ý‰Œ×Ò˜¨Ñ3Ô3Ð3Ð3Ð3ó    c                 ó>  •— | j         }|j        dk    s|j        dk    sJ ‚|j        d         | j        j        vs| j        j        r t          ¦   «                              ¦   «         S | j        j        |j        d                  }|| j        j        |j        d         <   d S )NÚReluÚClipr   )	ÚnodeÚop_typeÚinputÚ	quantizerÚquantized_value_mapÚis_activation_symmetricr   ÚquantizeÚoutput)r   r   Úquantized_valuer   s      €r   ÚQuantizeClipReluz"QLinearActivation.QuantizeClipRelu   s‘   ø€ ØŒyˆØŒ|˜vÒ%Ð%¨¬¸Ò)?Ð)?Ð)?Ð?ð Œ:�aŒ= ¤Ô BÐBÐBÀdÄnÔFlÐBÝ‘7”7×#Ò#Ñ%Ô%Ð%àœ.Ô<¸T¼ZÈ¼]ÔKˆØ=LˆŒÔ*¨4¬;°q¬>Ñ:Ð:Ð:r   c                 óÔ  •— | j         }|j        dk    s|j        dk    r|                      ¦   «          d S d}|j        dk    o|| j        j        v o| j        j        |         }|rdnd }|rdnd }| j                             |j        d         ||¦  «        \  }}}}	}	| j                             |dg¦  «        \  }
}}}|r|
€ t          ¦   «          	                    ¦   «         S |j        d         t          z   }d}|j        r
|j        dz   }i }|j        D ]$}|                     t          |¦  «        ¦  «         Œ%t          |d	<   |
d         |d         |d         ||g}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   zextra.Sigmoid.nnapiÚSigmoidg      p?r   Ú Ú_quantÚdomainÚQLinear)r   r   r'   r!   Úextra_optionsÚ_get_quantization_paramsr%   Úquantize_activationr   r$   r   ÚnameÚ	attributeÚupdater   r   ÚonnxÚhelperÚ	make_noder   r   ÚInputr"   ÚappendÚ	new_nodes)r   r   Únnapi_sigmoid_optionÚsigmoid_nnapi_modeÚ	use_scaleÚuse_zeropointÚ
data_foundÚoutput_scale_nameÚoutput_zp_nameÚ_Úquantized_input_namesÚzero_point_namesÚscale_namesÚnodesÚqlinear_activation_outputÚqlinear_activation_nameÚkwargsr2   Úqlinear_activation_inputsÚqlinear_activation_nodeÚq_outputr   s                        €r   r$   zQLinearActivation.quantize   sU  ø€ ØŒyˆØŒ<˜6Ò!Ð! T¤\°VÒ%;Ð%;Ø×!Ò!Ñ#Ô#Ð#ØˆFà4ÐàŒL˜IÒ%ð CØ$¨¬Ô(DÐDðCà”Ô,Ð-AÔBð 	ð
 "4Ð=�I�I¸ˆ	Ø/Ð9˜˜°Tˆð ŒN×3Ò3°D´KÀ´NÀIÈ}Ñ]Ô]ñ	
ØØØØØð ŒN×.Ò.¨t°a°SÑ9Ô9ñ	
Ø!ØØØàð 	&Ð2Ð:Ý‘7”7×#Ò#Ñ%Ô%Ð%à$(¤K°¤NÕ5MÑ$MÐ!Ø"$ÐØŒ9ð 	;Ø&*¤i°(Ñ&:Ð#ØˆØœð 	9ð 	9ˆIØ�MŠMÕ,¨YÑ7Ô7Ñ8Ô8Ð8Ð8Ý$ˆˆxÑð " !Ô$Ø˜ŒNØ˜QÔØØð%
Ð!õ #'¤+Ô"7Ø˜œÑ$Ø%Ø&Ð'Ø#ð	#
ð #
ð
 ð#
ð #
Ðõ "ØŒK˜ŒNØ%ØØÝÔ$ñ
ô 
ˆð >FˆŒÔ*¨4¬;°q¬>Ñ:à�ŠÐ,Ñ-Ô-Ð-ØŒÐ Ô  EÑ)Ð Ô Ð Ð r   )Ú__name__Ú
__module__Ú__qualname__r   r'   r$   Ú__classcell__©r   s   @r   r   r      sx   ø€ € € € € ð4ð 4ð 4ð 4ð 4ðMð Mð Mð Mð MðE*ð E*ð E*ð E*ð E*ð E*ð E*ð E*ð E*r   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚQDQRemovableActivationc                 óL   •— t          ¦   «                              ||¦  «         d S r   r   r   s      €r   r   zQDQRemovableActivation.__init__c   r   r   c                 óÚ  — | j         }| j                             |j        d         ¦  «        sd S | j        j        s]| j        j        sQ| j                             |j        d         |j        d         ¦  «        r | j                             | j         ¦  «         n%| j         	                    |j        d         ¦  «         | j
        s'| j         	                    |j        d         ¦  «         d S d S )Nr   )r   r!   Úis_tensor_quantizedr    r#   Úqdq_keep_removable_activationsÚtry_replacing_upstream_outputr%   Úremove_nodeÚquantize_activation_tensorÚdisable_qdq_for_node_output)r   r   s     r   r$   zQDQRemovableActivation.quantizef   sé   € ØŒyˆð Œ~×1Ò1°$´*¸Q´-Ñ@Ô@ð 	ØˆFð ”Ô6ð	Eà”NÔAð	Eð ”×<Ò<¸T¼ZÈ¼]ÈDÌKÐXYÌNÑ[Ô[ð	Eð
 ŒN×&Ò& t¤yÑ1Ô1Ð1Ð1àŒN×5Ò5°d´jÀ´mÑDÔDÐDàÔ/ð 	FØŒN×5Ò5°d´kÀ!´nÑEÔEÐEÐEÐEð	Fð 	Fr   )rL   rM   rN   r   r$   rO   rP   s   @r   rR   rR   b   sN   ø€ € € € € ð4ð 4ð 4ð 4ð 4ðFð Fð Fð Fð Fð Fð Fr   rR   )r4   Úquant_utilsr   r   r   r   r   Úbase_operatorr
   Úqdq_base_operatorr   r   rR   © r   r   ú<module>r_      sÎ   ðØ €€€à uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ðW*ð W*ð W*ð W*ð W*Ð)ñ W*ô W*ð W*ðtFð Fð Fð Fð F˜_ñ Fô Fð Fð Fð Fr   