Пример #1
0
 def __repr__(self):
     main_str = "CompositeTransformation" + "("
     transformation_lines = []
     for i, transformation in enumerate(self.transformations):
         transformation_lines.append(utils.add_indent(f"({i}): {transformation}", 2))
     transformation_lines.append(")")
     main_str += utils.add_indent("\n" + "\n".join(transformation_lines), 2)
     return main_str
Пример #2
0
    def __repr__(self):
        """Prints attack parameters in a human-readable string.

        Inspired by the readability of printing PyTorch nn.Modules:
        https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/module.py
        """
        main_str = "Attack" + "("
        lines = []

        lines.append(
            utils.add_indent(f"(search_method): {self.search_method}", 2))
        # self.goal_function
        lines.append(
            utils.add_indent(f"(goal_function):  {self.goal_function}", 2))
        # self.transformation
        lines.append(
            utils.add_indent(f"(transformation):  {self.transformation}", 2))
        # self.constraints
        constraints_lines = []
        constraints = self.constraints + self.pre_transformation_constraints
        if len(constraints):
            for i, constraint in enumerate(constraints):
                constraints_lines.append(
                    utils.add_indent(f"({i}): {constraint}", 2))
            constraints_str = utils.add_indent(
                "\n" + "\n".join(constraints_lines), 2)
        else:
            constraints_str = "None"
        lines.append(utils.add_indent(f"(constraints): {constraints_str}", 2))
        # self.is_black_box
        lines.append(
            utils.add_indent(f"(is_black_box):  {self.is_black_box}", 2))
        main_str += "\n  " + "\n  ".join(lines) + "\n"
        main_str += ")"
        return main_str
Пример #3
0
 def __repr__(self):
     main_str = "Augmenter" + "("
     lines = []
     # self.transformation
     lines.append(
         utils.add_indent(f"(transformation):  {self.transformation}", 2))
     # self.constraints
     constraints_lines = []
     constraints = self.constraints + self.pre_transformation_constraints
     if len(constraints):
         for i, constraint in enumerate(constraints):
             constraints_lines.append(
                 utils.add_indent(f"({i}): {constraint}", 2))
         constraints_str = utils.add_indent(
             "\n" + "\n".join(constraints_lines), 2)
     else:
         constraints_str = "None"
     lines.append(utils.add_indent(f"(constraints): {constraints_str}", 2))
     main_str += "\n  " + "\n  ".join(lines) + "\n"
     main_str += ")"
     return main_str
Пример #4
0
    def __repr__(self):
        """ Prints attack parameters in a human-readable string.
            
        Inspired by the readability of printing PyTorch nn.Modules:
        https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/module.py
        """
        main_str = self._get_name() + '('
        lines = []

        # self.goal_function
        lines.append(
            utils.add_indent(f'(goal_function):  {self.goal_function}', 2))
        # self.transformation
        lines.append(
            utils.add_indent(f'(transformation):  {self.transformation}', 2))
        # self.constraints
        constraints_lines = []
        if len(self.constraints):
            for i, constraint in enumerate(self.constraints):
                constraints_lines.append(
                    utils.add_indent(f'({i}): {constraint}', 2))
            constraints_str = utils.add_indent(
                '\n' + '\n'.join(constraints_lines), 2)
        else:
            constraints_str = 'None'
        lines.append(utils.add_indent(f'(constraints): {constraints_str}', 2))
        # self.is_black_box
        lines.append(
            utils.add_indent(f'(is_black_box):  {self.is_black_box}', 2))
        main_str += '\n  ' + '\n  '.join(lines) + '\n'
        main_str += ')'
        return main_str
Пример #5
0
    def __repr__(self):
        main_str = "Checkpoint("
        lines = []
        lines.append(utils.add_indent(f"(Time):  {self.datetime}", 2))

        args_lines = []
        recipe_set = (
            True
            if "recipe" in self.args.__dict__ and self.args.__dict__["recipe"]
            else False
        )
        mutually_exclusive_args = ["search", "transformation", "constraints", "recipe"]
        if recipe_set:
            args_lines.append(
                utils.add_indent(f'(recipe): {self.args.__dict__["recipe"]}', 2)
            )
        else:
            args_lines.append(
                utils.add_indent(f'(search): {self.args.__dict__["search"]}', 2)
            )
            args_lines.append(
                utils.add_indent(
                    f'(transformation): {self.args.__dict__["transformation"]}', 2
                )
            )
            args_lines.append(
                utils.add_indent(
                    f'(constraints): {self.args.__dict__["constraints"]}', 2
                )
            )

        for key in self.args.__dict__:
            if key not in mutually_exclusive_args:
                args_lines.append(
                    utils.add_indent(f"({key}): {self.args.__dict__[key]}", 2)
                )

        args_str = utils.add_indent("\n" + "\n".join(args_lines), 2)
        lines.append(utils.add_indent(f"(Args):  {args_str}", 2))

        attack_logger_lines = []
        attack_logger_lines.append(
            utils.add_indent(
                f"(Total number of examples to attack): {self.args.num_examples}", 2
            )
        )
        attack_logger_lines.append(
            utils.add_indent(f"(Number of attacks performed): {self.results_count}", 2)
        )
        attack_logger_lines.append(
            utils.add_indent(
                f"(Number of remaining attacks): {self.num_remaining_attacks}", 2
            )
        )
        breakdown_lines = []
        breakdown_lines.append(
            utils.add_indent(
                f"(Number of successful attacks): {self.num_successful_attacks}", 2
            )
        )
        breakdown_lines.append(
            utils.add_indent(
                f"(Number of failed attacks): {self.num_failed_attacks}", 2
            )
        )
        breakdown_lines.append(
            utils.add_indent(
                f"(Number of maximized attacks): {self.num_maximized_attacks}", 2
            )
        )
        breakdown_lines.append(
            utils.add_indent(
                f"(Number of skipped attacks): {self.num_skipped_attacks}", 2
            )
        )
        breakdown_str = utils.add_indent("\n" + "\n".join(breakdown_lines), 2)
        attack_logger_lines.append(
            utils.add_indent(f"(Latest result breakdown): {breakdown_str}", 2)
        )
        attack_logger_str = utils.add_indent("\n" + "\n".join(attack_logger_lines), 2)
        lines.append(
            utils.add_indent(f"(Previous attack summary):  {attack_logger_str}", 2)
        )

        main_str += "\n  " + "\n  ".join(lines) + "\n"
        main_str += ")"
        return main_str