class_docstr: Unit test class for testing non-sequential Keras models.
docstr: Test the following Keras model
         |- dense-|
  dense -|        |- merge - dense
         |- dense-|
code: def test_merge_multiply(self):
      """
      Test the following Keras model
             |- dense-|
      dense -|        |- merge - dense
             |- dense-|
      """
      input_tensor = Input(shape=(3,))
      x1 = Dense(4)(input_tensor)
      x2 = Dense(5)(x1)
      x3 = Dense(5)(x1)
      x4 = merge([x2, x3], mode="mul")
      x5 = Dense(7)(x4)
  
      model = Model(input=[input_tensor], output=[x5])
      input_names = ["data"]
      output_names = ["output"]
  
      spec = keras.convert(model, input_names, output_names).get_spec()
      self.assertIsNotNone(spec)
  
      # Test the model class
      self.assertIsNotNone(spec.description)
      self.assertTrue(spec.HasField("neuralNetwork"))
  
      # Test the inputs and outputs
      self.assertEqual(len(spec.description.input), len(input_names))
      self.assertEqual(
          sorted(input_names),
          sorted(map(lambda x: x.name, spec.description.input)),
      )
      self.assertEqual(len(spec.description.output), len(output_names))
      self.assertEqual(
          sorted(output_names),
          sorted(map(lambda x: x.name, spec.description.output)),
      )
  
file_path: turicreate/src/external/coremltools_wrap/coremltools/coremltools/test/neural_network/test_keras_nonseq.py
imports: import unittest
  import pytest
  from coremltools._deps import _HAS_KERAS_TF
label_desc: Use image node_id 4 for calling the KerasNonSequentialModelTest obj's underlying member method code with example usage: obj.test_merge_multiply() without return types