class_docstr: A multi-layer perceptron module.
class_docstr_tok: ["A","multi-layer","perceptron","module","."]
code: def __call__(
      self,
      inputs: jnp.ndarray,
      is_training: bool,
      rng: Optional[networks_lib.PRNGKey],
  ) -> networks_lib.Logits:
      rng = hk.PRNGSequence(rng) if rng is not None else None
  
      out = inputs
      for i, layer in enumerate(self._layers):
          if is_training:
              dropout_rate = (
                  self._input_dropout_rate
                  if i == 0
                  else self._hidden_dropout_rate
              )
              out = hk.dropout(next(rng), dropout_rate, out)
          out = layer(out)
          if i < len(self._layers) - 1:
              out = self._activation(out)
  
      return out
  
imports: import dataclasses
  import functools
  from typing import Any, Callable, Generic, Iterable, Optional
  from acme import specs
  from acme import types
  from acme.jax import networks
  from acme.jax import utils
  from acme.jax.imitation_learning_types import DirectRLNetworks
  import haiku
  import jax
  from jax import numpy
  import numpy
label_desc: Use image node_id 2 for calling the DiscriminatorMLP obj's underlying member method code with example usage: obj.__call__(inputs, is_training, rng) and returns: out