class_docstr: Randomly drop units in the input at a given rate.
  
  See: http://www.cs.toronto.edu/~hinton/absps/dropout.pdf
  
  Dropout was originally described by Hinton et al. TensorFlow deviates slightly
  from this paper by scaling activations at training time rather than test time.
code: def __call__(
      self, x: tf.Tensor, is_training: types.BoolLike
  ) -> tf.Tensor:
      if not is_training:
          return x
  
      # NOTE: Even if `self._seed` is a constant value (e.g. `2`) this will
      # produce a different random dropout each call (the per-op seed is used
      # in conjunction with the global seed and some persistent state to produce
      # random values).
      # c.f. https://www.tensorflow.org/api_docs/python/tf/random/set_random_seed
      return tf.nn.dropout(
          x,
          rate=self._rate,
          noise_shape=self._noise_shape,
          seed=self._seed,
      )
  
file_path: sonnet/sonnet/src/dropout.py
imports: from typing import Optional
  from sonnet.src import base
  from sonnet.src import types
  from sonnet.src import utils
  import tensorflow
label_desc: Use image node_id 2 for calling the Dropout obj's underlying member method code with example usage: obj.__call__(x, is_training) and returns: tf, x