new_pop_list = []
        for parent in pop:
            child = self.crossover(parent, pop)
            child = self.mutate(child)
            new_pop_list.append(child)

        self.population = new_pop_list


if __name__ == '__main__':
    random.seed(cmd_args.seed)
    np.random.seed(cmd_args.seed)
    torch.manual_seed(cmd_args.seed)

    label_map, _, g_list = load_graphs()
    base_classifier = load_base_model(label_map, g_list)

    if cmd_args.idx_start + cmd_args.num_instances > len(g_list):
        instances = g_list[cmd_args.idx_start:]
    else:
        instances = g_list[cmd_args.idx_start:cmd_args.idx_start +
                           cmd_args.num_instances]

    attacked = 0.0
    pbar = tqdm(instances)
    idx = cmd_args.idx_start
    for g in pbar:
        agent = GeneticAgent(base_classifier, g, cmd_args.num_mod)
        if len(agent.population) == 0:
            continue
        for i in range(cmd_args.rounds):
예제 #2
0
            if len(added) >= num_added:
                break
        if len(added) == 0:
            continue
        g2 = g.copy()
        g2.add_edges_from(added)

        cand_list.append(S2VGraph(g2, s2v_g.label))

    _, _, acc = model(cand_list)
    acc = acc.double().cpu().numpy()
    for i in range(len(cand_list)):
        if acc[i] < 1.0:
            return cand_list[i]
    return cand_list[0]


if __name__ == '__main__':
    random.seed(cmd_args.seed)
    np.random.seed(cmd_args.seed)
    torch.manual_seed(cmd_args.seed)

    label_map, train_glist, test_glist = load_er_data()

    base_classifier = load_base_model(label_map, test_glist)

    new_test_list = []
    for g in tqdm(test_glist):
        new_test_list.append(propose_attack(base_classifier, g))

    test_graphs(base_classifier, new_test_list)