def __init__(self, ablation_size: int, channels_first: bool, row_ablation_mode: bool = False):
        """
        Creates an ablator which will retain columns by default, or rows if operating in row_ablation_mode

        :param ablation_size: Size of the column (or row if running in row_ablation_mode) to retain.
        :param channels_first: If the input data will be in channels first or channels last format.
        :param row_ablation_mode: if True then the ablator will function by retaining rows rather than columns.
        """
        super().__init__()
        self.ablation_size = ablation_size
        self.channels_first = channels_first
        self.row_ablation_mode = row_ablation_mode

        Creates an ablator which will retain columns by default, or rows if operating in row_ablation_mode

        :param ablation_size: Size of the column (or row if running in row_ablation_mode) to retain.
        :param channels_first: If the input data will be in channels first or channels last format.
        :param row_ablation_mode: if True then the ablator will function by retaining rows rather than columns.
        
art/estimators/certification/derandomized_smoothing/ablators/tensorflow.py