code: def test_basics(self):
      channels_last = (
          backend.config.image_data_format() == "channels_last"
      )
      self.run_layer_test(
          layers.ConvLSTM2D,
          init_kwargs={
              "filters": 5,
              "kernel_size": 3,
              "padding": "same",
          },
          input_shape=(3, 2, 4, 4, 3)
          if channels_last
          else (3, 2, 3, 4, 4),
          expected_output_shape=(3, 4, 4, 5)
          if channels_last
          else (3, 5, 4, 4),
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          supports_masking=True,
      )
      self.run_layer_test(
          layers.ConvLSTM2D,
          init_kwargs={
              "filters": 5,
              "kernel_size": 3,
              "padding": "valid",
              "recurrent_dropout": 0.5,
          },
          input_shape=(3, 2, 8, 8, 3)
          if channels_last
          else (3, 2, 3, 8, 8),
          call_kwargs={"training": True},
          expected_output_shape=(3, 6, 6, 5)
          if channels_last
          else (3, 5, 6, 6),
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          supports_masking=True,
      )
      self.run_layer_test(
          layers.ConvLSTM2D,
          init_kwargs={
              "filters": 5,
              "kernel_size": 3,
              "padding": "valid",
              "return_sequences": True,
          },
          input_shape=(3, 2, 8, 8, 3)
          if channels_last
          else (3, 2, 3, 8, 8),
          expected_output_shape=(3, 2, 6, 6, 5)
          if channels_last
          else (3, 2, 5, 6, 6),
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          supports_masking=True,
      )
  
file_path: keras/keras/layers/rnn/conv_lstm2d_test.py
imports: import numpy
  import pytest
  from keras import backend
  from keras import initializers
  from keras import layers
  from keras import testing
label_desc: Use image node_id 1 for calling the ConvLSTM2DTest obj's underlying member method code with example usage: obj.test_basics() without return types