a
    Sicª  ã                   @   sP   d Z ddlm  mZ ddlmZ ddlmZ eddƒG dd„ deƒƒZ	e	Z
dS )	zMax pooling 3D layer.é    N)Ú	Pooling3D)Úkeras_exportzkeras.layers.MaxPool3Dzkeras.layers.MaxPooling3Dc                       s"   e Zd ZdZd‡ fdd„	Z‡  ZS )ÚMaxPooling3Da+	  Max pooling operation for 3D data (spatial or spatio-temporal).

    Downsamples the input along its spatial dimensions (depth, height, and
    width) by taking the maximum value over an input window (of size defined by
    `pool_size`) for each channel of the input.  The window is shifted by
    `strides` along each dimension.

    Args:
      pool_size: Tuple of 3 integers,
        factors by which to downscale (dim1, dim2, dim3).
        `(2, 2, 2)` will halve the size of the 3D input in each dimension.
      strides: tuple of 3 integers, or None. Strides values.
      padding: One of `"valid"` or `"same"` (case-insensitive).
        `"valid"` means no padding. `"same"` results in padding evenly to
        the left/right or up/down of the input such that output has the same
        height/width dimension as the input.
      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, spatial_dim1, spatial_dim2, spatial_dim3, channels)`
        while `channels_first` corresponds to inputs with shape
        `(batch, channels, spatial_dim1, spatial_dim2, spatial_dim3)`.
        It defaults to the `image_data_format` value found in your
        Keras config file at `~/.keras/keras.json`.
        If you never set it, then it will be "channels_last".

    Input shape:
      - If `data_format='channels_last'`:
        5D tensor with shape:
        `(batch_size, spatial_dim1, spatial_dim2, spatial_dim3, channels)`
      - If `data_format='channels_first'`:
        5D tensor with shape:
        `(batch_size, channels, spatial_dim1, spatial_dim2, spatial_dim3)`

    Output shape:
      - If `data_format='channels_last'`:
        5D tensor with shape:
        `(batch_size, pooled_dim1, pooled_dim2, pooled_dim3, channels)`
      - If `data_format='channels_first'`:
        5D tensor with shape:
        `(batch_size, channels, pooled_dim1, pooled_dim2, pooled_dim3)`

    Example:

    ```python
    depth = 30
    height = 30
    width = 30
    input_channels = 3

    inputs = tf.keras.Input(shape=(depth, height, width, input_channels))
    layer = tf.keras.layers.MaxPooling3D(pool_size=3)
    outputs = layer(inputs)  # Shape: (batch_size, 10, 10, 10, 3)
    ```
    ©é   r   r   NÚvalidc                    s&   t ƒ jtjjf||||dœ|¤Ž d S )N)Ú	pool_sizeÚstridesÚpaddingÚdata_format)ÚsuperÚ__init__ÚtfÚnnÚ
max_pool3d)Úselfr   r	   r
   r   Úkwargs©Ú	__class__© ú^/var/www/html/django/DPS/env/lib/python3.9/site-packages/keras/layers/pooling/max_pooling3d.pyr   U   s    ÿûúzMaxPooling3D.__init__)r   Nr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r      s   ;    ûr   )r   Útensorflow.compat.v2ÚcompatÚv2r   Ú#keras.layers.pooling.base_pooling3dr   Ú tensorflow.python.util.tf_exportr   r   Ú	MaxPool3Dr   r   r   r   Ú<module>   s   N