class_docstr: Reversible PrintShape for debugging reversible serial layers.
class_docstr_tok: ["Reversible","PrintShape","for","debugging","reversible","serial","layers","."]
code: def forward(self, xs):
      shapes_and_dtypes = ", ".join(
          [str(x.shape) + f"[{x.dtype}]" for x in xs]
      )
      info = f"PrintShape: {self._msg}: [{shapes_and_dtypes}]"
      print(info)
      logging.info(info)
      return xs
  
imports: from absl import logging
  import jax
  from trax import fastmath
  from trax.layers import base
  from trax.layers import combinators
label_desc: Use image node_id 2 for calling the ReversiblePrintShape obj's underlying member method code with example usage: obj.forward(xs) and returns: xs