def __init__(
        self,
        nb_samples: int,
        clip_values: tuple[float, float],
        lam: float | tuple[float, float],
        apply_fit: bool = False,
        apply_predict: bool = True,
    ) -> None:
        """
        Create an instance of EoTShotNoiseTensorFlow.

        :param nb_samples: Number of random samples per input sample.
        :param clip_values: Tuple of float representing minimum and maximum values of input `(min, max)`.
        :param lam: Range to sample the rate of the Poisson distribution. A single float
                    is translated to range [0.0, lam] or a tuple of floats is used to create sampling range
                    [lam[0], lam[1]]. The applied delta is sampled uniformly from this range for each image.
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        """
        super().__init__(
            apply_fit=apply_fit, apply_predict=apply_predict, nb_samples=nb_samples, clip_values=clip_values
        )

        self.lam = lam
        self.lam_range = (0.0, lam) if isinstance(lam, (int, float)) else lam
        self._check_params()

        Create an instance of EoTShotNoiseTensorFlow.

        :param nb_samples: Number of random samples per input sample.
        :param clip_values: Tuple of float representing minimum and maximum values of input `(min, max)`.
        :param lam: Range to sample the rate of the Poisson distribution. A single float
                    is translated to range [0.0, lam] or a tuple of floats is used to create sampling range
                    [lam[0], lam[1]]. The applied delta is sampled uniformly from this range for each image.
        :param apply_fit: True if applied during fitting/training.
        :param apply_predict: True if applied during predicting.
        
art/preprocessing/expectation_over_transformation/natural_corruptions/shot_noise/tensorflow.py