code: def test_gru_output_shapes(self):
      network_1 = layers.join(
          layers.Input((10, 2)),
          layers.GRU(20, only_return_final=True),
      )
      self.assertShapesEqual(network_1.output_shape, (None, 20))
  
      network_2 = layers.join(
          layers.Input((10, 2)),
          layers.GRU(20, only_return_final=False),
      )
      self.assertShapesEqual(network_2.output_shape, (None, 10, 20))
  
imports: import numpy
  import tensorflow
  from sklearn.model_selection import train_test_split
  from neupy.datasets import reber
  from neupy.utils import asfloat, tensorflow_session
  from neupy.exceptions import LayerConnectionError
  from neupy.layers.recurrent import clip_gradient
  from neupy import layers, algorithms, init
  from base import BaseTestCase
label_desc: Use image node_id 8 for calling the GRUTestCase obj's underlying member method code with example usage: obj.test_gru_output_shapes() without return types