code: def test_seq(self):
      r = "\n".join(
          [
              "objax.nn.Sequential(",
              "  [0] objax.nn.Linear(nin=2, nout=3, use_bias=True, w_init=xavier_normal(*, gain=1))",
              "  [1] leaky_relu(*, negative_slope=0.01)",
              "  [2] objax.nn.Sequential(",
              "    [0] leaky_relu(*, negative_slope=0.5)",
              "    [1] objax.nn.Linear(nin=4, nout=5, use_bias=True, w_init=xavier_normal(*, gain=1))",
              "  )",
              "  [3] tanh",
              "  [4] objax.nn.MovingAverage(shape=(2, 3), buffer_size=4, init_value=0.2)",
              "  [5] objax.nn.ExponentialMovingAverage(shape=(5, 6), momentum=0.999, init_value=0)",
              "  [6] objax.nn.BatchNorm(dims=(3, 4, 5), redux=(1, 7), momentum=0.999, eps=1e-06)",
              "  [7] objax.nn.BatchNorm0D(nin=8, momentum=0.999, eps=1e-06)",
              "  [8] objax.nn.BatchNorm1D(nin=9, momentum=0.999, eps=1e-06)",
              "  [9] objax.nn.BatchNorm2D(nin=19, momentum=0.999, eps=1e-06)",
              "  [10] objax.nn.Conv2D(nin=4, nout=5, k=(3, 3), strides=(1, 1), dilations=(1, 1), groups=1,"
              " padding='SAME', use_bias=True, w_init=kaiming_normal(*, gain=1))",
              "  [11] objax.nn.ConvTranspose2D(nin=4, nout=5, k=(3, 3), strides=(1, 1), dilations=(1, 1),"
              " padding='SAME', use_bias=True, w_init=kaiming_normal(*, gain=1))",
              "  [12] objax.nn.Dropout(keep=0.7)",
              "  [13] objax.nn.SyncedBatchNorm(dims=(3, 4, 5), redux=(1, 7), momentum=0.999, eps=1e-06)",
              "  [14] objax.nn.SyncedBatchNorm0D(nin=8, momentum=0.999, eps=1e-06)",
              "  [15] objax.nn.SyncedBatchNorm1D(nin=9, momentum=0.999, eps=1e-06)",
              "  [16] objax.nn.SyncedBatchNorm2D(nin=19, momentum=0.999, eps=1e-06)",
              ")",
          ]
      )
      m = objax.nn.Sequential(
          [
              objax.nn.Linear(2, 3),
              objax.functional.leaky_relu,
              objax.nn.Sequential(
                  [
                      functools.partial(
                          objax.functional.leaky_relu,
                          negative_slope=0.5,
                      ),
                      objax.nn.Linear(4, 5),
                  ]
              ),
              objax.functional.tanh,
              objax.nn.MovingAverage((2, 3), 4, 0.2),
              objax.nn.ExponentialMovingAverage((5, 6)),
              objax.nn.BatchNorm((3, 4, 5), (1, 7)),
              objax.nn.BatchNorm0D(8),
              objax.nn.BatchNorm1D(9),
              objax.nn.BatchNorm2D(19),
              objax.nn.Conv2D(4, 5, k=3),
              objax.nn.ConvTranspose2D(4, 5, k=3),
              objax.nn.Dropout(0.7),
              objax.nn.SyncedBatchNorm((3, 4, 5), (1, 7)),
              objax.nn.SyncedBatchNorm0D(8),
              objax.nn.SyncedBatchNorm1D(9),
              objax.nn.SyncedBatchNorm2D(19),
          ]
      )
      self.assertEqual(repr(m), r)
  
file_path: objax/tests/repr.py
imports: import functools
  import unittest
  import jax.numpy
  import objax
label_desc: Use image node_id 1 for calling the TestRepr obj's underlying member method code with example usage: obj.test_seq() without return types