code: def test_output_signature_no_weights(self):
      shape_2_3_5 = shapes.ShapeDtype((2, 3, 5))
      input_signature = (shape_2_3_5, shape_2_3_5)
      layer = tl.Fn("2in1out", lambda x, y: x + y)
      output_signature = layer.output_signature(input_signature)
      self.assertEqual(output_signature, shape_2_3_5)
  
      shape_5_7 = shapes.ShapeDtype((5, 7))
      input_signature = shape_5_7
      layer = tl.Fn("1in3out", lambda x: (x, 2 * x, 3 * x), n_out=3)
      output_signature = layer.output_signature(input_signature)
      self.assertEqual(
          output_signature, (shape_5_7, shape_5_7, shape_5_7)
      )
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from trax import fastmath
  from trax import shapes
  from trax.fastmath import numpy
  import trax.layers
label_desc: Use image node_id 5 for calling the BaseLayerTest obj's underlying member method code with example usage: obj.test_output_signature_no_weights() without return types