class_docstr: Applies Dropout to the input.
  
  Dropout consists in randomly setting
  a fraction `rate` of input units to 0 at each update during training time,
  which helps prevent overfitting.
  
  Arguments:
  rate: Float between 0 and 1. Fraction of the input units to drop.
  noise_shape: 1D integer tensor representing the shape of the
    binary dropout mask that will be multiplied with the input.
    For instance, if your inputs have shape
    `(batch_size, timesteps, features)` and
    you want the dropout mask to be the same for all timesteps,
    you can use `noise_shape=(batch_size, 1, features)`.
  seed: A Python integer to use as random seed.
  
  Call arguments:
  inputs: Input tensor (of any rank).
  training: Python boolean indicating whether the layer should behave in
    training mode (adding dropout) or in inference mode (doing nothing).
code: def __init__(self, rate, noise_shape=None, seed=None, **kwargs):
      super().__init__(**kwargs)
      self.rate = rate
      self.noise_shape = noise_shape
      self.seed = seed
      self.supports_masking = True
  
imports: import numpy
  import tensorflow
  from tensorflow.keras import activations
  from tensorflow.keras import backend
  from tensorflow.keras import constraints, initializers, regularizers
  from tensorflow.keras.layers import Layer
  from tensorflow.python.framework import smart_cond
  from spektral.layers import ops
label_desc: Use image node_id 1 to create a new SparseDropout object from inherited base classes: Layer with example: obj = SparseDropout(rate, noise_shape, seed)