class_docstr: Adapts a Sonnet module to conform to the Keras Layer API.
  
      >>> layer = LayerAdapter(snt.Linear(1))
      >>> assert isinstance(layer, tf.keras.layers.Layer)
  
  We support building without ``__call__``, even with unknown dimensions:
  
      >>> layer.build(input_shape=[None, 28 * 28])
  
  Of course now features of Keras work as expected, for example layer freezing:
  
      >>> [v.name for v in layer.trainable_variables]
      ["linear/b:0", "linear/w:0"]
  
      >>> layer.trainable = False
      >>> layer.trainable_variables
      []
code: def compute_output_shape(self, input_shape):
      output_shapes = self._trace_and_initialize(input_shape)
      return output_shapes
  
imports: from absl.testing import parameterized
  import sonnet
  from sonnet.src import test_utils
  from sonnet.src.conformance import descriptors
  import tensorflow
  import tree
label_desc: Use image node_id 5 for calling the LayerAdapter obj's underlying member method code with example usage: obj.compute_output_shape(input_shape) and returns: output_shapes