
    2Vh
                     X    d dl mZ d dlmZ d dlmZ  eddg       G d de             Zy)	    )ops)keras_export)BaseGlobalPoolingzkeras.layers.GlobalMaxPooling3Dzkeras.layers.GlobalMaxPool3Dc                   *     e Zd ZdZd fd	Zd Z xZS )GlobalMaxPooling3Da  Global max pooling operation for 3D data.

    Args:
        data_format: string, either `"channels_last"` 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"`.
        keepdims: A boolean, whether to keep the temporal dimension or not.
            If `keepdims` is `False` (default), the rank of the tensor is
            reduced for spatial dimensions. If `keepdims` is `True`, the
            spatial dimension are retained with length 1.
            The behavior is the same as for `tf.reduce_mean` or `np.mean`.

    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 `keepdims=False`:
        2D tensor with shape `(batch_size, channels)`.
    - If `keepdims=True`:
        - If `data_format="channels_last"`:
            5D tensor with shape `(batch_size, 1, 1, 1, channels)`
        - If `data_format="channels_first"`:
            5D tensor with shape `(batch_size, channels, 1, 1, 1)`

    Example:

    >>> x = np.random.rand(2, 4, 5, 4, 3)
    >>> y = keras.layers.GlobalMaxPooling3D()(x)
    >>> y.shape
    (2, 3)
    c                 ,    t        |   dd||d| y )N   )pool_dimensionsdata_formatkeepdims )super__init__)selfr   r   kwargs	__class__s       ]/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/layers/pooling/global_max_pooling3d.pyr   zGlobalMaxPooling3D.__init__:   s(     	
#	
 		
    c                     | j                   dk(  r$t        j                  |g d| j                        S t        j                  |g d| j                        S )Nchannels_last)      r	   )axisr   )r   r	      )r   r   maxr   )r   inputss     r   callzGlobalMaxPooling3D.callB   s>    .776	DMMJJwwvIFFr   )NF)__name__
__module____qualname____doc__r   r   __classcell__)r   s   @r   r   r      s    +Z
Gr   r   N)	keras.srcr   keras.src.api_exportr   ,keras.src.layers.pooling.base_global_poolingr   r   r   r   r   <module>r&      s=     - J )&9G* 9G9Gr   