code: def test_basics(self):
      self.run_layer_test(
          layers.GRU,
          init_kwargs={
              "units": 3,
              "dropout": 0.5,
              "recurrent_dropout": 0.5,
          },
          input_shape=(3, 2, 4),
          call_kwargs={"training": True},
          expected_output_shape=(3, 3),
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          supports_masking=True,
      )
      self.run_layer_test(
          layers.GRU,
          init_kwargs={
              "units": 3,
              "return_sequences": True,
              "bias_regularizer": "l1",
              "kernel_regularizer": "l2",
              "recurrent_regularizer": "l2",
          },
          input_shape=(3, 2, 4),
          expected_output_shape=(3, 2, 3),
          expected_num_losses=3,
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          supports_masking=True,
      )
  
file_path: keras/keras/layers/rnn/gru_test.py
imports: import numpy
  import pytest
  from absl.testing import parameterized
  from keras import initializers
  from keras import layers
  from keras import testing
label_desc: Use image node_id 1 for calling the GRUTest obj's underlying member method code with example usage: obj.test_basics() without return types