
    ij                     n    d Z ddlmZ ddlmZ ddlmZ  G d de      Z G d de      Z G d	 d
e      Z	y)z)Base classes for adaptive pooling layers.    )ops)config)Layerc                   4     e Zd ZdZd fd	Zd Z fdZ xZS )BaseAdaptivePoolingz1Base class shared by all adaptive pooling layers.c                     t        |   di | || _        |xs t        j                         | _        | j
                  dvrt        d| j
                   d      y)aB  Initialize base adaptive pooling layer.

        Args:
            output_size: Normalized spatial output size as a tuple
                (for example, (32,), (32, 32), or (32, 32, 32)).
            data_format: Either "channels_last" or "channels_first".
            **kwargs: Additional layer keyword arguments.
        >   channels_lastchannels_firstzInvalid data_format: z/. Expected 'channels_first' or 'channels_last'.N )super__init__output_sizer   image_data_formatdata_format
ValueError)selfr   r   kwargs	__class__s       /var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/layers/pooling/base_adaptive_pooling.pyr   zBaseAdaptivePooling.__init__   so     	"6"&&D&*B*B*D#FF'(8(8'9 :@ @  G    c                     |d   }| j                   dk(  r|d   }|g| j                  |S |d   }||g| j                  S )z-Return the output shape tensor after pooling.r   r	      )r   r   )r   input_shape
batch_sizechannelss       r   compute_output_shapez(BaseAdaptivePooling.compute_output_shape   sZ     ^
."2H<!1!1<8<<"1~H<4+;+;<<r   c                 ^    | j                   | j                  d}t        |          }i ||S N)r   r   )r   r   r   
get_config)r   config_dictbase_configr   s      r   r    zBaseAdaptivePooling.get_config'   s;    ++++
 g(*-+---r   )N)__name__
__module____qualname____doc__r   r   r    __classcell__)r   s   @r   r   r      s    ;$=. .r   r   c                       e Zd ZdZd Zy)BaseAdaptiveAveragePoolingz:Base class for adaptive average pooling in 1D, 2D, and 3D.c                 Z    t        j                  || j                  | j                        S r   )r   adaptive_average_poolr   r   r   inputss     r   callzBaseAdaptiveAveragePooling.call3   s(    (( 0 0d>N>N
 	
r   Nr#   r$   r%   r&   r.   r   r   r   r)   r)   0   s
    D
r   r)   c                       e Zd ZdZd Zy)BaseAdaptiveMaxPoolingz6Base class for adaptive max pooling in 1D, 2D, and 3D.c                 Z    t        j                  || j                  | j                        S r   )r   adaptive_max_poolr   r   r,   s     r   r.   zBaseAdaptiveMaxPooling.call<   s(    $$ 0 0d>N>N
 	
r   Nr/   r   r   r   r1   r1   9   s
    @
r   r1   N)
r&   	keras.srcr   keras.src.backendr   keras.src.layers.layerr   r   r)   r1   r   r   r   <module>r7      s8    /  $ (%.% %.P
!4 

0 
r   