
    |j                     :    d dl mZ ddlmZ  G d de          ZdS )    )Layer   )BaseQuanterc                   6     e Zd ZdZ	 ddedef fdZd Z xZS )ObserveWrappera  
    Put an observer layer and an observed layer into a wrapping layer.
    It is used to insert layers into the model for QAT or PTQ.
    Args:
        observer(BaseQuanter): Observer layer
        observed(Layer): Observed layer
        observe_input(bool): If it is true the observer layer will be called before observed layer.
            If it is false the observed layer will be called before observer layer. Default: True.
    Tobserverobservedc                 r    t                                                       || _        || _        || _        d S N)super__init__	_observer	_observed_observe_input)selfr   r	   observe_input	__class__s       k/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/quantization/wrapper.pyr   zObserveWrapper.__init__   s7     	!!+    c                 |    | j         r | j        |i |} | j        |fi |S  | j        |i |} | j        |fi |S r   )r   r   r   )r   inputskwargsouts       r   forwardzObserveWrapper.forward*   sm     	1 $.&3F33C!4>#00000 $.&3F33C!4>#00000r   )T)	__name__
__module____qualname____doc__r   r   r   r   __classcell__)r   s   @r   r   r      sr          		, 	,	, 	, 	, 	, 	, 	, 	,1 1 1 1 1 1 1r   r   N)	paddle.nnr   base_quanterr   r    r   r   <module>r#      s_          % % % % % %1 1 1 1 1U 1 1 1 1 1r   