
    2Vh	                     b    d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
  G d de      Zy	)
    )backend)ops)	InputSpec)Layer)compute_pooling_output_shape)argument_validationc                   B     e Zd ZdZ	 	 	 	 d fd	Zd Zd Z fdZ xZS )BasePoolingzBase pooling layer.c                 @   t        	|   dd|i| t        j                  ||d      | _        ||n|}t        j                  ||dd      | _        || _        || _        t        j                  |      | _
        t        |dz         | _        | j                          y )	Nname	pool_sizestridesT)
allow_zero   )ndim )super__init__r   standardize_tupler   r   	pool_modepaddingr   standardize_data_formatdata_formatr   
input_spec_build_at_init)
selfr   r   pool_dimensionsr   r   r   r   kwargs	__class__s
            U/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/layers/pooling/base_pooling.pyr   zBasePooling.__init__   s     	-d-f-,>>
  ')G*<<_iD
 #"::;G#1)<=    c                 x   | j                   dk(  rBt        j                  || j                  | j                  | j
                  | j                        S | j                   dk(  rBt        j                  || j                  | j                  | j
                  | j                        S t        d| j                    d      )Nmax)r   r   r   r   averagez9`pool_mode` must be either 'max' or 'average'. Received: .)	r   r   max_poolr   r   r   r   average_pool
ValueError)r   inputss     r    callzBasePooling.call(   s    >>U"<<.. ,,  ^^y(##.. ,,  K>>"!% r!   c                 p    t        || j                  | j                  | j                  | j                        S )N)r   r   r   r   r   )r   input_shapes     r    compute_output_shapez BasePooling.compute_output_shape?   s0    +NNLLLL
 	
r!   c                     t         |          }|j                  | j                  | j                  | j
                  | j                  d       |S )N)r   r   r   r   )r   
get_configupdater   r   r   r   )r   configr   s     r    r/   zBasePooling.get_configH   sF    #%!^^<<<<#//		
 r!   )r#   validNN)	__name__
__module____qualname____doc__r   r*   r-   r/   __classcell__)r   s   @r    r
   r
   	   s-     8.

 
r!   r
   N)	keras.srcr   r   keras.src.layers.input_specr   keras.src.layers.layerr   keras.src.ops.operation_utilsr   keras.src.utilsr   r
   r   r!   r    <module>r=      s%      1 ( F /I% Ir!   