o
    ·2úh½   ã                   @   s4   d dl mZ d dlmZ edƒG dd„ deƒƒZdS )é    )Úkeras_export)ÚConvLSTMzkeras.layers.ConvLSTM2Dc                       sT   e Zd ZdZ											
															d‡ fdd„	Z‡  ZS )Ú
ConvLSTM2Daô  2D Convolutional LSTM.

    Similar to an LSTM layer, but the input transformations
    and recurrent transformations are both convolutional.

    Args:
        filters: int, the dimension of the output space (the number of filters
            in the convolution).
        kernel_size: int or tuple/list of 2 integers, specifying the size of the
            convolution window.
        strides: int or tuple/list of 2 integers, specifying the stride length
            of the convolution. `strides > 1` is incompatible with
            `dilation_rate > 1`.
        padding: string, `"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: string, either `"channels_last"` 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)`. 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"`.
        dilation_rate: int or tuple/list of 2 integers, specifying the dilation
            rate to use for dilated convolution.
        activation: Activation function to use. By default hyperbolic tangent
            activation function is applied (`tanh(x)`).
        recurrent_activation: Activation function to use for the recurrent step.
        use_bias: Boolean, whether the layer uses a bias vector.
        kernel_initializer: Initializer for the `kernel` weights matrix,
            used for the linear transformation of the inputs.
        recurrent_initializer: Initializer for the `recurrent_kernel` weights
            matrix, used for the linear transformation of the recurrent state.
        bias_initializer: Initializer for the bias vector.
        unit_forget_bias: Boolean. If `True`, add 1 to the bias of the forget
            gate at initialization.
            Use in combination with `bias_initializer="zeros"`.
            This is recommended in [Jozefowicz et al., 2015](
            http://www.jmlr.org/proceedings/papers/v37/jozefowicz15.pdf)
        kernel_regularizer: Regularizer function applied to the `kernel` weights
            matrix.
        recurrent_regularizer: Regularizer function applied to the
            `recurrent_kernel` weights matrix.
        bias_regularizer: Regularizer function applied to the bias vector.
        activity_regularizer: Regularizer function applied to.
        kernel_constraint: Constraint function applied to the `kernel` weights
            matrix.
        recurrent_constraint: Constraint function applied to the
            `recurrent_kernel` weights matrix.
        bias_constraint: Constraint function applied to the bias vector.
        dropout: Float between 0 and 1. Fraction of the units to drop for the
            linear transformation of the inputs.
        recurrent_dropout: Float between 0 and 1. Fraction of the units to drop
            for the linear transformation of the recurrent state.
        seed: Random seed for dropout.
        return_sequences: Boolean. Whether to return the last output
            in the output sequence, or the full sequence. Default: `False`.
        return_state: Boolean. Whether to return the last state in addition
            to the output. Default: `False`.
        go_backwards: Boolean (default: `False`).
            If `True`, process the input sequence backwards and return the
            reversed sequence.
        stateful: Boolean (default False). If `True`, the last state
            for each sample at index i in a batch will be used as initial
            state for the sample of index i in the following batch.
        unroll: Boolean (default: `False`).
            If `True`, the network will be unrolled,
            else a symbolic loop will be used.
            Unrolling can speed-up a RNN,
            although it tends to be more memory-intensive.
            Unrolling is only suitable for short sequences.


    Call arguments:
        inputs: A 5D tensor.
        mask: Binary tensor of shape `(samples, timesteps)` indicating whether a
            given timestep should be masked.
        training: Python boolean indicating whether the layer should behave in
            training mode or in inference mode.
            This is only relevant if `dropout` or `recurrent_dropout` are set.
        initial_state: List of initial state tensors to be passed to the first
            call of the cell.

    Input shape:

    - If `data_format='channels_first'`:
        5D tensor with shape: `(samples, time, channels, rows, cols)`
    - If `data_format='channels_last'`:
        5D tensor with shape: `(samples, time, rows, cols, channels)`

    Output shape:

    - If `return_state`: a list of tensors. The first tensor is the output.
        The remaining tensors are the last states,
        each 4D tensor with shape: `(samples, filters, new_rows, new_cols)` if
        `data_format='channels_first'`
        or shape: `(samples, new_rows, new_cols, filters)` if
        `data_format='channels_last'`. `rows` and `cols` values might have
        changed due to padding.
    - If `return_sequences`: 5D tensor with shape: `(samples, timesteps,
        filters, new_rows, new_cols)` if data_format='channels_first'
        or shape: `(samples, timesteps, new_rows, new_cols, filters)` if
        `data_format='channels_last'`.
    - Else, 4D tensor with shape: `(samples, filters, new_rows, new_cols)` if
        `data_format='channels_first'`
        or shape: `(samples, new_rows, new_cols, filters)` if
        `data_format='channels_last'`.

    References:

    - [Shi et al., 2015](http://arxiv.org/abs/1506.04214v1)
        (the current implementation does not include the feedback loop on the
        cells output).
    é   ÚvalidNÚtanhÚsigmoidTÚglorot_uniformÚ
orthogonalÚzerosç        Fc                    s¾   t ƒ jdi dd“d|“d|“d|“d|“d|“d|“d	|“d
|“d|	“d|
“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž d S )NÚranké   ÚfiltersÚkernel_sizeÚstridesÚpaddingÚdata_formatÚdilation_rateÚ
activationÚrecurrent_activationÚuse_biasÚkernel_initializerÚrecurrent_initializerÚbias_initializerÚunit_forget_biasÚkernel_regularizerÚrecurrent_regularizerÚbias_regularizerÚactivity_regularizerÚkernel_constraintÚrecurrent_constraintÚbias_constraintÚreturn_sequencesÚreturn_stateÚgo_backwardsÚstatefulÚdropoutÚrecurrent_dropoutÚseed© )ÚsuperÚ__init__)Úselfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r'   r(   r)   r#   r$   r%   r&   Úkwargs©Ú	__class__r*   ú[/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/layers/rnn/conv_lstm2d.pyr,   {   st   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæå
ãzConvLSTM2D.__init__)r   r   Nr   r   r   Tr	   r
   r   TNNNNNNNr   r   NFFFF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   Ú__classcell__r*   r*   r/   r1   r      s8    xär   N)Úkeras.src.api_exportr   Úkeras.src.layers.rnn.conv_lstmr   r   r*   r*   r*   r1   Ú<module>   s    