class_docstr: Computes a vector of smooth labels from a vector of hard ones. The hard labels have to contain ones for the
  correct classes and zeros for all the others. The remaining probability mass between `max_value` and 1 is
  distributed uniformly between the incorrect classes for each instance.
  
  
  | Paper link: https://pdfs.semanticscholar.org/b5ec/486044c6218dd41b17d8bba502b32a12b91a.pdf
  
  | Please keep in mind the limitations of defences. For details on how to evaluate classifier security in general,
      see https://arxiv.org/abs/1902.06705  .
docstr: Create an instance of label smoothing.
  
  :param max_value: Value to affect to correct label
  :param apply_fit: True if applied during fitting/training.
  :param apply_predict: True if applied during predicting.
code: def __init__(
      self,
      max_value: float = 0.9,
      apply_fit: bool = True,
      apply_predict: bool = False,
  ) -> None:
      """
      Create an instance of label smoothing.
  
      :param max_value: Value to affect to correct label
      :param apply_fit: True if applied during fitting/training.
      :param apply_predict: True if applied during predicting.
      """
      super().__init__(
          is_fitted=True,
          apply_fit=apply_fit,
          apply_predict=apply_predict,
      )
      self.max_value = max_value
      self._check_params()
  
file_path: adversarial-robustness-toolbox/art/defences/preprocessor/label_smoothing.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, Tuple
  import numpy
  from art.defences.preprocessor.preprocessor import Preprocessor
label_desc: Use image node_id 1 to create a new LabelSmoothing object from inherited base classes: Preprocessor with example: obj = LabelSmoothing(max_value, apply_fit, apply_predict)