docstr: Tests case when concats applied to concats.
  
          Input --------------.
         /      \      |      |
       Dense   Dense   |      |
          \    /       |      |
           Concat    Dense   Dense
               \     /        |
                Concat        |
                      \      /
                       Concat
  
  The last Concat layer should be quantized but the rest
  of the outputs should just feed into it.
docstr_tok: ["Tests","case","when","concats","applied","to","concats",".","Input","--","--","--","--","--","--","--",".","\/","\\","|","|","Dense","Dense","|","|","\\","\/","|","|","Concat","Dense","Dense","\\","\/","|","Concat","|","\\","\/","Concat","The","last","Concat","layer","should","be","quantized","but","the","rest","of","the","outputs","should","just","feed","into","it","."]
code: def testConcatMultipleLevels(self):
      r"""Tests case when concats applied to concats.
  
              Input --------------.
             /      \      |      |
           Dense   Dense   |      |
              \    /       |      |
               Concat    Dense   Dense
                   \     /        |
                    Concat        |
                          \      /
                           Concat
  
      The last Concat layer should be quantized but the rest
      of the outputs should just feed into it.
      """
      inp = keras.layers.Input((3,))
      x1 = keras.layers.Dense(3)(inp)
      x2 = keras.layers.Dense(3)(inp)
      x3 = keras.layers.Dense(3)(inp)
      x4 = keras.layers.Dense(3)(inp)
      c1 = keras.layers.Concatenate()([x1, x2])
      c2 = keras.layers.Concatenate()([c1, x3])
      c3 = keras.layers.Concatenate()([c2, x4])
      model = keras.Model(inp, c3)
      model.summary()
  
      _, layer_metadata = ModelTransformer(
          model, [default_8bit_transforms.ConcatTransform()]
      ).transform()
  
      for layer in model.layers[1:-1]:
          quantize_config = layer_metadata[layer.name].get(
              "quantize_config"
          )
          self.assertEmpty(quantize_config.get_output_quantizers(None))
  
      c3_layer = model.layers[-1]
      quantize_config = layer_metadata[c3_layer.name].get(
          "quantize_config"
      )
      self.assertIsInstance(
          quantize_config,
          default_8bit_quantize_configs.Default8BitOutputQuantizeConfig,
      )
      self.assertNotEmpty(quantize_config.get_output_quantizers(None))
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_model_optimization.python.core.quantization.keras import quantize_aware_activation
  from tensorflow_model_optimization.python.core.quantization.keras import quantize_layer
  from tensorflow_model_optimization.python.core.quantization.keras import quantizers
  from tensorflow_model_optimization.python.core.quantization.keras.default_8bit import default_8bit_quantize_configs
  from tensorflow_model_optimization.python.core.quantization.keras.default_8bit import default_8bit_quantize_registry
  from tensorflow_model_optimization.python.core.quantization.keras.default_8bit import default_8bit_transforms
  from tensorflow_model_optimization.python.core.quantization.keras.graph_transformations import model_transformer
  from tensorflow_model_optimization.python.core.quantization.keras.layers import conv_batchnorm_test_utils
  from tensorflow_model_optimization.python.core.quantization.keras.layers import dense_batchnorm_test_utils
label_desc: Use image node_id 20 for calling the DefaultTransformsTest obj's underlying member method code with example usage: obj.testConcatMultipleLevels() without return types