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
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
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
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
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