
    6bi                     `    S r SSKJs  Jr  SSKJr  SSKJr  SSK	J
r
  SSKJr   " S S\5      rg)	z)Private base class for pooling 1D layers.    N)backend)Layer)	InputSpec)
conv_utilsc                   N   ^  \ rS rSrSr   SU 4S jjrS rS rU 4S jrSr	U =r
$ )		Pooling1D   ah  Pooling layer for arbitrary pooling functions, for 1D inputs.

This class only exists for code reuse. It will never be an exposed API.

Args:
  pool_function: The pooling function to apply, e.g. `tf.nn.max_pool2d`.
  pool_size: An integer or tuple/list of a single integer,
    representing the size of the pooling window.
  strides: An integer or tuple/list of a single integer, specifying the
    strides of the pooling operation.
  padding: A string. The padding method, either 'valid' or 'same'.
    Case-insensitive.
  data_format: A string,
    one of `channels_last` (default) or `channels_first`.
    The ordering of the dimensions in the inputs.
    `channels_last` corresponds to inputs with shape
    `(batch, steps, features)` while `channels_first`
    corresponds to inputs with shape
    `(batch, features, steps)`.
  name: A string, the name of the layer.
c                 j  > [         TU ]  " S	SU0UD6  Uc  [        R                  " 5       nUc  UnXl        [
        R                  " USS5      U l        [
        R                  " USSSS9U l        [
        R                  " U5      U l
        [
        R                  " U5      U l        [        SS9U l        g )
Nname   	pool_sizestridesT)
allow_zero   )ndim )super__init__r   image_data_formatpool_functionr   normalize_tupler   r   normalize_paddingpaddingnormalize_data_formatdata_formatr   
input_spec)	selfr   r   r   r   r   r   kwargs	__class__s	           d/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/layers/pooling/base_pooling1d.pyr   Pooling1D.__init__1   s     	-d-f-!335K?G*#33Iq+N!11Q	d
 "33G<%;;KH#+    c                    U R                   S:X  a  SOSn[        R                  " X5      nU R                  UU R                  S-   U R
                  S-   U R                  U R                   S9n[        R                  " X25      $ )Nchannels_last   r   )r   )r   r   r   )r   tfexpand_dimsr   r   r   r   squeeze)r   inputspad_axisoutputss       r    callPooling1D.callI   su    ((O;11$$NNT!LL4'LL(( % 
 zz',,r"   c                    [         R                  " U5      R                  5       nU R                  S:X  a  US   nUS   nO
US   nUS   n[        R
                  " X R                  S   U R                  U R                  S   5      nU R                  S:X  a  [         R                  " US   X4/5      $ [         R                  " US   XC/5      $ )Nchannels_firstr%   r   r   )	r&   TensorShapeas_listr   r   conv_output_lengthr   r   r   )r   input_shapestepsfeatureslengths        r    compute_output_shapePooling1D.compute_output_shapeU   s    nn[199;//NE"1~HNE"1~H..>>!$dllDLLO
 //>>;q>8"DEE>>;q>6"DEEr"   c                    > U R                   U R                  U R                  U R                  S.n[        TU ]  5       n[        [        UR                  5       5      [        UR                  5       5      -   5      $ )N)r   r   r   r   )	r   r   r   r   r   
get_configdictlistitems)r   configbase_configr   s      r    r:   Pooling1D.get_confige   s`    ||||++	
 g(*D**,-V\\^0DDEEr"   )r   r   r   r   r   r   )validr$   N)__name__
__module____qualname____firstlineno____doc__r   r,   r7   r:   __static_attributes____classcell__)r   s   @r    r   r      s/    6 #,0
-F F Fr"   r   )rF   tensorflow.compat.v2compatv2r&   tf_keras.srcr   tf_keras.src.engine.base_layerr   tf_keras.src.engine.input_specr   tf_keras.src.utilsr   r   r   r"   r    <module>rP      s.    0 " !   0 4 )SF SFr"   