code: def test_dict_io(self):
      x1 = keras_tensor.KerasTensor((2, 3))
      x2 = keras_tensor.KerasTensor((2, 3))
      x = knp.add(x1, x2)
      y1 = x * 3
      y2 = x**2
      fn = function.Function(
          inputs={"x1": x1, "x2": x2}, outputs={"y1": y1, "y2": y2}
      )
  
      # Eager call
      y_val = fn({"x1": np.ones((2, 3)), "x2": np.ones((2, 3))})
      self.assertIsInstance(y_val, dict)
      self.assertAllClose(y_val["y1"], np.ones((2, 3)) * 6)
      self.assertAllClose(y_val["y2"], np.ones((2, 3)) * 4)
  
      # Symbolic call
      x1_alt = keras_tensor.KerasTensor((2, 3))
      x2_alt = keras_tensor.KerasTensor((2, 3))
      y_val = fn({"x1": x1_alt, "x2": x2_alt})
      self.assertIsInstance(y_val["y1"], keras_tensor.KerasTensor)
      self.assertEqual(y_val["y1"].shape, (2, 3))
      self.assertIsInstance(y_val["y2"], keras_tensor.KerasTensor)
      self.assertEqual(y_val["y2"].shape, (2, 3))
  
file_path: keras/keras/ops/function_test.py
imports: import numpy
  from keras import testing
  from keras.backend.common import keras_tensor
  from keras.ops import function
  from keras.ops import numpy
label_desc: Use image node_id 3 for calling the FunctionTest obj's underlying member method code with example usage: obj.test_dict_io() without return types