code: def __call__(self, x: jnp.ndarray):
      x = x.astype(jnp.float32) / 255.0
      x = einops.rearrange(x, "batch ... -> batch (...)")
      x = eg.nn.Linear(self.n1)(x)
      x = jax.nn.relu(x)
      x = eg.nn.Linear(self.n2)(x)
      x = jax.nn.relu(x)
      x = eg.nn.Linear(10)(x)
      return x
  
file_path: elegy/examples/elegy/mnist.py
imports: import os
  from datetime import datetime
  from functools import partial
  from typing import Any, Generator, Mapping, Tuple
  import einops
  import jax
  import jax.numpy
  import matplotlib.pyplot
  import numpy
  import optax
  import typer
  from datasets.load import load_dataset
  from tensorboardX.writer import SummaryWriter
  import elegy
label_desc: Use image node_id 2 for calling the MLP obj's underlying member method code with example usage: obj.__call__(x) and returns: x