o
    #j_                     @   sV   d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	 G dd de	e j
dZdS )    N)Iterable)Union)Layerc                       s   e Zd ZdZ fddZejdd Zejdee	j
ejf fddZejdee	j
ejf fd	d
Zejdeeef fddZejdd Z  ZS )BaseQuanterzw
    Built-in quanters and customized quanters should extend this base quanter
    and implement abstract methods.
    c                    s   t    d S N)super__init__self	__class__ a/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/quantization/base_quanter.pyr      s   zBaseQuanter.__init__c                 C   s   d S r   r   )r
   inputr   r   r   forward"   s   zBaseQuanter.forwardreturnc                 C      dS )z
        Get the scales used for quantization.
        It can be none which meams the quanter didn't hold scales for quantization.
        Nr   r	   r   r   r   scales&      zBaseQuanter.scalesc                 C   r   )z
        Get the zero points used for quantization.
        It can be none which meams the quanter didn't hold zero points for quantization.
        Nr   r	   r   r   r   zero_points.   r   zBaseQuanter.zero_pointsc                 C   r   )zT
        Get the axis of quantization. None means tensor-wise quantization.
        Nr   r	   r   r   r   
quant_axis6      zBaseQuanter.quant_axisc                 C   r   )z5
        Get the bit length of quantization.
        Nr   r	   r   r   r   
bit_length=   r   zBaseQuanter.bit_length)__name__
__module____qualname____doc__r   abcabstractmethodr   r   paddleZTensornpZndarrayr   r   intr   r   r   __classcell__r   r   r   r   r      s    
r   )	metaclass)r   collections.abcr   typingr   numpyr    r   Z	paddle.nnr   ABCMetar   r   r   r   r   <module>   s   