class_docstr: Cell class for the ConvLSTM layer.
  
  Args:
      rank: Integer, rank of the convolution, e.g. "2" for 2D convolutions.
      filters: Integer, the dimensionality of the output space
          (i.e. the number of output filters in the convolution).
      kernel_size: An integer or tuple/list of n integers, specifying the
          dimensions of the convolution window.
      strides: An integer or tuple/list of n integers, specifying the strides
          of the convolution. Specifying any stride value != 1
          is incompatible with specifying any `dilation_rate` value != 1.
      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`. When unspecified, uses
          `image_data_format` value found in your Keras config file at
          `~/.keras/keras.json` (if exists) else 'channels_last'.
          Defaults to `'channels_last'`.
      dilation_rate: An integer or tuple/list of n integers, specifying the
          dilation rate to use for dilated convolution.
          Currently, specifying any `dilation_rate` value != 1 is
          incompatible with specifying any `strides` value != 1.
      activation: Activation function. If `None`, no activation is applied.
      recurrent_activation: Activation function to use for the recurrent step.
      use_bias: Boolean, (default `True`), whether the layer
          should use a bias vector.
      kernel_initializer: Initializer for the `kernel` weights matrix,
          used for the linear transformation of the inputs. Default:
          `"glorot_uniform"`.
      recurrent_initializer: Initializer for the `recurrent_kernel`
          weights matrix, used for the linear transformation of the recurrent
          state. Default: `"orthogonal"`.
      bias_initializer: Initializer for the bias vector. Default: `"zeros"`.
      unit_forget_bias: Boolean (default `True`). If `True`,
          add 1 to the bias of the forget gate at initialization.
          Setting it to `True` will also force `bias_initializer="zeros"`.
          This is recommended in [Jozefowicz et al.](
          https://github.com/mlresearch/v37/blob/gh-pages/jozefowicz15.pdf)
      kernel_regularizer: Regularizer function applied to the `kernel` weights
          matrix. Default: `None`.
      recurrent_regularizer: Regularizer function applied to the
          `recurrent_kernel` weights matrix. Default: `None`.
      bias_regularizer: Regularizer function applied to the bias vector.
          Default: `None`.
      activity_regularizer: Regularizer function applied to the output of the
          layer (its "activation"). Default: `None`.
      kernel_constraint: Constraint function applied to the `kernel` weights
          matrix. Default: `None`.
      recurrent_constraint: Constraint function applied to the
          `recurrent_kernel` weights matrix. Default: `None`.
      bias_constraint: Constraint function applied to the bias vector.
          Default: `None`.
      dropout: Float between 0 and 1. Fraction of the units to drop for the
          linear transformation of the inputs. Default: 0.
      recurrent_dropout: Float between 0 and 1. Fraction of the units to drop
          for the linear transformation of the recurrent state. Default: 0.
      seed: Random seed for dropout.
  
  Call arguments:
      inputs: A (2+ `rank`)D tensor.
      states:  List of state tensors corresponding to the previous timestep.
      training: Python boolean indicating whether the layer should behave in
          training mode or in inference mode. Only relevant when `dropout` or
          `recurrent_dropout` is used.
code: def call(self, inputs, states, training=False):
      h_tm1 = states[0]  # previous memory state
      c_tm1 = states[1]  # previous carry state
  
      # dp_mask = self.get_dropout_mask(inputs)
      # rec_dp_mask = self.get_recurrent_dropout_mask(h_tm1)
  
      # if training and 0.0 < self.dropout < 1.0:
      #     inputs *= dp_mask
      # if training and 0.0 < self.recurrent_dropout < 1.0:
      #     h_tm1 *= rec_dp_mask
  
      inputs_i = inputs
      inputs_f = inputs
      inputs_c = inputs
      inputs_o = inputs
  
      h_tm1_i = h_tm1
      h_tm1_f = h_tm1
      h_tm1_c = h_tm1
      h_tm1_o = h_tm1
  
      (kernel_i, kernel_f, kernel_c, kernel_o) = ops.split(
          self.kernel, 4, axis=self.rank + 1
      )
      (
          recurrent_kernel_i,
          recurrent_kernel_f,
          recurrent_kernel_c,
          recurrent_kernel_o,
      ) = ops.split(self.recurrent_kernel, 4, axis=self.rank + 1)
  
      if self.use_bias:
          bias_i, bias_f, bias_c, bias_o = ops.split(self.bias, 4)
      else:
          bias_i, bias_f, bias_c, bias_o = None, None, None, None
  
      x_i = self.input_conv(
          inputs_i, kernel_i, bias_i, padding=self.padding
      )
      x_f = self.input_conv(
          inputs_f, kernel_f, bias_f, padding=self.padding
      )
      x_c = self.input_conv(
          inputs_c, kernel_c, bias_c, padding=self.padding
      )
      x_o = self.input_conv(
          inputs_o, kernel_o, bias_o, padding=self.padding
      )
  
      h_i = self.recurrent_conv(h_tm1_i, recurrent_kernel_i)
      h_f = self.recurrent_conv(h_tm1_f, recurrent_kernel_f)
      h_c = self.recurrent_conv(h_tm1_c, recurrent_kernel_c)
      h_o = self.recurrent_conv(h_tm1_o, recurrent_kernel_o)
  
      i = self.recurrent_activation(x_i + h_i)
      f = self.recurrent_activation(x_f + h_f)
      c = f * c_tm1 + i * self.activation(x_c + h_c)
      o = self.recurrent_activation(x_o + h_o)
      h = o * self.activation(c)
      return h, [h, c]
  
imports: import tree
  from keras import activations
  from keras import backend
  from keras import constraints
  from keras import initializers
  from keras import ops
  from keras import regularizers
  from keras.layers.input_spec import InputSpec
  from keras.layers.layer import Layer
  from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell
  from keras.layers.rnn.rnn import RNN
  from keras.ops import operation_utils
  from keras.utils import argument_validation
label_desc: Use image node_id 3 for calling the ConvLSTMCell obj's underlying member method code with example usage: obj.call(inputs, states, training) and returns: h,  list