o
    2h	                     @   s\   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 deZd	S )
    )backend)ops)	InputSpec)Layer)compute_pooling_output_shape)argument_validationc                       sF   e Zd ZdZ				d fdd	Zdd Zd	d
 Z fddZ  ZS )BasePoolingzBase pooling layer.maxvalidNc           	         s~   t  jdd|i| t||d| _|d u r|n|}tj||ddd| _|| _|| _t	|| _
t|d d| _|   d S )	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__r   `/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/layers/pooling/base_pooling.pyr      s   zBasePooling.__init__c                 C   s^   | j dkrtj|| j| j| j| jdS | j dkr&tj|| j| j| j| jdS td| j  d)Nr	   )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   inputsr   r   r    call(   s*   

zBasePooling.callc                 C   s   t || j| j| j| jS )N)r   r   r   r   r   )r   input_shaper   r   r    compute_output_shape?   s   z BasePooling.compute_output_shapec                    s*   t   }|| j| j| j| jd |S )N)r   r   r   r   )r   
get_configupdater   r   r   r   )r   configr   r   r    r*   H   s   
zBasePooling.get_config)r	   r
   NN)	__name__
__module____qualname____doc__r   r'   r)   r*   __classcell__r   r   r   r    r   	   s    	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   r    <module>   s    