code: def test_structured_io_cloning(self):
      x = layers.Input((3,))
      y = layers.Input((3,))
      z1 = x + y
      z2 = layers.Dense(5)(z1)
      inputs = dict(x=x, y=y)
      outputs = dict(z1=z1, z2=z2)
      model0 = models.Model(inputs, outputs)
  
      model = clone_model(model0)
      tree.assert_same_structure(model.input, inputs)
      tree.assert_same_structure(model.output, outputs)
  
      model = clone_model(model0, input_tensors=inputs)
      tree.assert_same_structure(model.input, inputs)
      tree.assert_same_structure(model.output, outputs)
  
      with self.assertRaisesRegex(
          ValueError,
          "`input_tensors` must have the same structure as model.input",
      ):
          model = clone_model(model0, input_tensors=(x, y))
  
file_path: keras/keras/models/cloning_test.py
imports: import numpy
  import pytest
  import tree
  from absl.testing import parameterized
  from keras import layers
  from keras import models
  from keras import testing
  from keras.models.cloning import clone_model
label_desc: Use image node_id 4 for calling the CloneModelTest obj's underlying member method code with example usage: obj.test_structured_io_cloning() without return types