docs: def dropout(inputs, keep_prob=0.5, is_training=True, scope=None):
    """Returns a dropout layer applied to the input.
  
    Args:
      inputs: the tensor to pass to the Dropout layer.
      keep_prob: the probability of keeping each input unit.
      is_training: whether or not the model is in training mode. If so, dropout is
      applied and values scaled. Otherwise, inputs is returned.
      scope: Optional scope for name_scope.
  
    Returns:
      a tensor representing the output of the operation.
    """
    if is_training and keep_prob > 0:
      with tf.name_scope(scope, 'Dropout', [inputs]):
        return tf.nn.dropout(inputs, keep_prob)
    else:
      return inputs