
    ёiv                     B   S SK r  " S S5      r\" \ R                  R                  S/S/S/5      \" \ R                  R                  S/S/S	/5      \" \ R                  R
                  S// S/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                  S// S	/5      \" \ R                  R                   S// S	/5      \" \ R                  R"                  R$                  SS// S	/5      /r\" \ R                  R"                  R(                  R*                  S/S/S/5      \" \ R                  R"                  R(                  R,                  S/S/S	/5      /r\ R                  R                  \ R                  R                  /r " S
 S5      rg)    Nc                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )	LayerInfo   z0
Store the arg names of the inputs and outputs.
c                 R   > [         TU ]  5         Xl        X l        X0l        X@l        g N)super__init__layerinput_namesweight_namesoutput_names)selfr
   r   r   r   	__class__s        k/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/quantization/imperative/ptq_registry.pyr	   LayerInfo.__init__   s%    
&((    )r   r
   r   r   )__name__
__module____qualname____firstlineno____doc__r	   __static_attributes____classcell__r   s   @r   r   r      s    ) )r   r   InputFilterOutputXYOutc                      ^  \ rS rSrSr0 r0 rSrU 4S jr\	S 5       r
\	S 5       r\	S 5       r\	S 5       r\	S	 5       rS
rU =r$ )PTQRegistry@   z@
Register the supported layers for PTQ and provide layers info.
Fc                 "   > [         TU ]  5         g r   )r   r	   )r   r   s    r   r	   PTQRegistry.__init__I   s    r   c                     U R                   (       dS  [         H  nXR                  UR                  '   M     [        [        -   nU H  nXR
                  UR                  '   M     SU l         g )NT)	is_initedPTQ_LAYERS_INFOsupported_layers_mapr
   QUANT_LAYERS_INFOregistered_layers_map)cls
layer_infoall_layers_infos      r   _initPTQRegistry._initL   sY    }}-
=G(()9)9: . .0AAO-
>H))**:*:; .r   c                     U R                  5         XR                  ;   =(       d-    [        U[        U R                  R	                  5       5      5      $ )z
Analyze whether the layer supports quantization.
Args:
    layer(Layer): The input layer can be a python class or an instance.
Returns:
    flag(bool): Whether the layer is supported.
)r/   r)   
isinstancetuplekeysr,   r
   s     r   is_supported_layerPTQRegistry.is_supported_layerW   sC     			000 
J51166895
 	
r   c                     U R                  5         XR                  ;   =(       d-    [        U[        U R                  R	                  5       5      5      $ )z
Analyze whether the layer is register layer_info.
Args:
    layer(Layer): The input layer can be a python class or an instance.
Returns:
    flag(bool): Whether the layer is register layer_info.
)r/   r+   r2   r3   r4   r5   s     r   is_registered_layerPTQRegistry.is_registered_layere   sC     			111 
Z522779:6
 	
r   c                 T    U[         ;   =(       d    [        U[        [         5      5      $ )z
Analyze whether the layer is simulated quant layer.
Args:
    layer(Layer): The input layer can be a python class or an instance.
Returns:
    flag(bool): Whether the layer is supported.
)SIMULATED_LAYERSr2   r3   r5   s     r   is_simulated_quant_layer$PTQRegistry.is_simulated_quant_layers   s)     (( 
J5)*-
 	
r   c                     U R                  U5      (       d   S5       eU R                  R                  5        H  u  p#X:X  d  [        X5      (       d  M  Us  $    g)z
Get the information for the layer.
Args:
    layer(Layer): The input layer can be a python class or an instance.
Returns:
    layer_info(LayerInfo): The layer info of the input layer.
z The input layer is not register.N)r9   r+   itemsr2   )r,   r
   	layer_keyr-   s       r   r-   PTQRegistry.layer_info   sZ     &&u-- 	
.	
- &)%>%>%D%D%F!I!Z%A%A!! &Gr    )r   r   r   r   r   r)   r+   r'   r	   classmethodr/   r6   r9   r=   r-   r   r   r   s   @r   r"   r"   @   s     I   
 
 
 
 

 

 " "r   r"   )paddler   nnConv2DLinearBatchNorm2DAdaptiveMaxPool2DAdaptiveAvgPool2D	AvgPool2D	MaxPool2DReLUReLU6	HardswishSwishSigmoidSoftmaxTanhquantaddr(   quant_layersQuantizedConv2DQuantizedLinearr*   r<   r"   rC   r   r   <module>rZ      sU   
) 
) fii	H:zBfiiuug6fii##cUB6fii))C5"ug>fii))C5"ug>fii!!C5"ug6fii!!C5"ug6fiinnseR%1fiiooub5'2fii!!C5"ug6fiiooub5'2fii#UG4fii#UG4fiinnseR%1fiioo!!C:rE7;& 		$$44			
	
	 		$$44secUUG
  II$$fii&6&67 O" O"r   