class_docstr: Epsilon greedy sampling with action masking on network outputs.
code: def __call__(
      self, observation: Union[Mapping[str, tf.Tensor], tf.Tensor]
  ) -> tf.Tensor:
      q = self._network(observation)
      return trfl.epsilon_greedy(
          q,
          epsilon=self._epsilon,
          legal_actions_mask=observation["legal_actions_mask"],
      ).sample()
  
file_path: acme/acme/tf/networks/masked_epsilon_greedy.py
imports: from typing import Optional, Mapping, Union
  import sonnet
  import tensorflow
  import trfl
label_desc: Use image node_id 2 for calling the NetworkWithMaskedEpsilonGreedy obj's underlying member method code with example usage: obj.__call__(observation) and returns: trfl