
    |j                        d dl mZ d dlZd dlmZmZ d dlmZ erd dlm	Z	 d dl
mZ d dlmZ  G d deej        	          ZdS )
    )annotationsN)TYPE_CHECKINGAny)Layer)Iterable)Tensorc                       e Zd ZdZd fdZej        dd            Zej        dd	            Zej        dd
            Z	ej        dd            Z
ej        dd            Z xZS )BaseQuanterzw
    Built-in quanters and customized quanters should extend this base quanter
    and implement abstract methods.
    returnNonec                H    t                                                       d S N)super__init__)self	__class__s    p/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/quantization/base_quanter.pyr   zBaseQuanter.__init__#   s        inputr   Tensor | npt.NDArray[Any]c                    d S r    )r   r   s     r   forwardzBaseQuanter.forward&   s    r   c                    dS )z
        Get the scales used for quantization.
        It can be none which means the quanter didn't hold scales for quantization.
        Nr   r   s    r   scaleszBaseQuanter.scales*   	     	r   c                    dS )z
        Get the zero points used for quantization.
        It can be none which means the quanter didn't hold zero points for quantization.
        Nr   r   s    r   zero_pointszBaseQuanter.zero_points2   r   r   int | Iterable[int]c                    dS )zT
        Get the axis of quantization. None means tensor-wise quantization.
        Nr   r   s    r   
quant_axiszBaseQuanter.quant_axis:   	    
 	r   c                    dS )z5
        Get the bit length of quantization.
        Nr   r   s    r   
bit_lengthzBaseQuanter.bit_lengthA   r#   r   )r   r   )r   r   r   r   )r   r   )r   r    )__name__
__module____qualname____doc__r   abcabstractmethodr   r   r   r"   r%   __classcell__)r   s   @r   r
   r
      s         
      	    	    	    	    	       r   r
   )	metaclass)
__future__r   r*   typingr   r   	paddle.nnr   collections.abcr   numpy.typingnptpaddler   ABCMetar
   r   r   r   <module>r6      s    # " " " " " 



 % % % % % % % %       (((((() ) ) ) )%3; ) ) ) ) ) )r   