code: def test_correctness(self, implementation):
      sequence = np.arange(72).reshape((3, 6, 4)).astype("float32")
      layer = layers.GRU(
          3,
          kernel_initializer=initializers.Constant(0.01),
          recurrent_initializer=initializers.Constant(0.02),
          bias_initializer=initializers.Constant(0.03),
      )
      output = layer(sequence)
      self.assertAllClose(
          np.array(
              [
                  [0.5217289, 0.5217289, 0.5217289],
                  [0.6371659, 0.6371659, 0.6371659],
                  [0.39384964, 0.39384964, 0.3938496],
              ]
          ),
          output,
      )
  
      layer = layers.GRU(
          3,
          kernel_initializer=initializers.Constant(0.01),
          recurrent_initializer=initializers.Constant(0.02),
          bias_initializer=initializers.Constant(0.03),
          go_backwards=True,
      )
      output = layer(sequence)
      self.assertAllClose(
          np.array(
              [
                  [0.24406259, 0.24406259, 0.24406259],
                  [0.611516, 0.611516, 0.611516],
                  [0.3928808, 0.3928808, 0.3928808],
              ]
          ),
          output,
      )
  
      layer = layers.GRU(
          3,
          kernel_initializer=initializers.Constant(0.01),
          recurrent_initializer=initializers.Constant(0.02),
          bias_initializer=initializers.Constant(0.03),
          unroll=True,
      )
      output = layer(sequence)
      self.assertAllClose(
          np.array(
              [
                  [0.5217289, 0.5217289, 0.5217289],
                  [0.6371659, 0.6371659, 0.6371659],
                  [0.39384964, 0.39384964, 0.3938496],
              ]
          ),
          output,
      )
  
      layer = layers.GRU(
          3,
          kernel_initializer=initializers.Constant(0.01),
          recurrent_initializer=initializers.Constant(0.02),
          bias_initializer=initializers.Constant(0.03),
          reset_after=False,
      )
      output = layer(sequence)
      self.assertAllClose(
          np.array(
              [
                  [0.51447755, 0.51447755, 0.51447755],
                  [0.6426879, 0.6426879, 0.6426879],
                  [0.40208298, 0.40208298, 0.40208298],
              ]
          ),
          output,
      )
  
      layer = layers.GRU(
          3,
          kernel_initializer=initializers.Constant(0.01),
          recurrent_initializer=initializers.Constant(0.02),
          bias_initializer=initializers.Constant(0.03),
          use_bias=False,
      )
      output = layer(sequence)
      self.assertAllClose(
          np.array(
              [
                  [0.49988455, 0.49988455, 0.49988455],
                  [0.64701194, 0.64701194, 0.64701194],
                  [0.4103359, 0.4103359, 0.4103359],
              ]
          ),
          output,
      )
  
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 2 for calling the GRUTest obj's underlying member method code with example usage: obj.test_correctness(implementation) without return types