Skip to content

Commit 3c01125

Browse files
committed
prod version
1 parent 63a87f0 commit 3c01125

File tree

8 files changed

+533
-405
lines changed

8 files changed

+533
-405
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
/data/
1+
/data/
2+
comments
3+
test.py
4+
results.txt

grapher.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import unlearn as unlearner
2+
from itertools import product
3+
import json
4+
#unlearner.unlearn()
5+
unlearner.unlearn(3,0,8e-3)
6+
7+
exit(0)
8+
9+
10+
def generate_grad_map_permutations(base_grad_map=[8, 32, 2000], steps=[2, 8, 200], variations=3):
11+
# Generate ranges for each value based on step and variations
12+
ranges = [
13+
[base + i * step for i in range(-variations, variations + 1)]
14+
for base, step in zip(base_grad_map, steps)
15+
]
16+
# Generate all permutations using product
17+
all_permutations = list(product(*ranges))
18+
return all_permutations
19+
20+
# Generate all permutations of target values
21+
#grad_map_permutations=generate_grad_map_permutations()
22+
#grad_maps= [[8,32,2000],[8,32,4000],[8,32,1000],[8,16,2000],[8,16,4000],[8,16,1000],[12,32,2000]]
23+
grad_maps=[[8,32,2000]]
24+
#all_targets = [(x, y) for x, y in product(range(10), range(10)) if x != y]
25+
all_targets = [x for x in range(10) if x !=3]
26+
learning_rates= [4e-3,8e-3,1e-2,2e-2,4e-2]
27+
batch_sizes = [16]
28+
epochs_forgets = [4]
29+
epochs_relearns = [10]
30+
31+
32+
# Result storage
33+
results = []
34+
35+
# Iterate over all combinations
36+
for target, lr, batch_size, epochs_forget, epochs_relearn,grad_map in product( all_targets, learning_rates, batch_sizes, epochs_forgets, epochs_relearns, grad_maps):
37+
38+
#forget_target, sub_target = target
39+
sub_target=3
40+
# Call the unlearn function
41+
dataset_score,forgotten_score,new_data_score,static_score,starting_accuracy_forgotten = unlearner.unlearn(target,sub_target,lr,batch_size,epochs_forget,epochs_relearn,grad_map)
42+
43+
# Store the parameters and outputs together
44+
results.append({
45+
"parameters": {
46+
"forget_target": target,
47+
"sub_target": sub_target,
48+
"learning_rate": lr,
49+
"batch_size": batch_size,
50+
"epochs_forget": epochs_forget,
51+
"epochs_relearn": epochs_relearn,
52+
"grad_map2": grad_map
53+
},
54+
"results": {
55+
"dataset_score": dataset_score,
56+
"forgotten_score": forgotten_score,
57+
"new_data_score": new_data_score,
58+
"static_score": static_score,
59+
"starting_accuracy_forgotten": starting_accuracy_forgotten
60+
}
61+
})
62+
63+
64+
# Save to a JSON file
65+
with open("ablation_results.json", "w") as f:
66+
json.dump(results, f, indent=4)
67+
68+
print("Ablation study completed and saved to 'ablation_results.json'")
69+
print(results)

modelNo0.pth

76.8 KB
Binary file not shown.

modelNo3.pth

76.8 KB
Binary file not shown.

modelRetr.pth

0 Bytes
Binary file not shown.

results.txt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
2+
forget, sub, lr, dat_acc, for_acc, sub_acc, static_acc
3+
0,3,2e-2 64.2%, 0%, 93%, 60.6%
4+
0,3,1e-2 83.4%, 0%, 45%, 88.3%
5+
0,3,1.5e-2 79%, 0%, 87.3%, 78.0%
6+
0,3,1.4e-2 81.8%, 0%, 85.8%, 81.3%
7+
0,3,1.3e-2 83.7%, 0%, 81.7%, 82.9%
8+
9+
10+
1,3,1e-2 77.1%, 0%, 65.9%, 78.5%
11+
1,3,1.5e-2 75.9%, 0%, 92.8%, 73.7%
12+
1,3,1.4e-2 76.5%, 0%, 90.9%, 74.7%
13+
1,3,1.2e-2 77.5%, 0%, 84.0%, 76.7%
14+
1,3,1.1e-2 77.5%, 0%, 76.9%, 77.6%
15+
16+
17+
18+
2,3,1.5e-2 58.1%, 0%, 97.0%, 53.1%
19+
2,3,1.3e-2 62.3%, 0%, 95.1%, 58.2%
20+
2,3,1e-2 68.8%, 0%, 89.2%, 66.2%
21+
2,3,8.5e-3 71.1%, 0%, 78.1%, 70.2%
22+
2,3,8e-3 70.8%, 0%, 68.5%, 71.1%
23+
24+
25+
4,3,1e-2 80.5%, 0%, 68.3%, 82.2%
26+
4,3,1.1e-2 79.8%, 0%, 78.7%, 80%
27+
4,3,1.3e-2 76.9%, 0%, 89.0%, 75%
28+
4,3,1.5e-2 73.8%, 0%, 92.0%, 71.4%
29+
30+
5,3,1.1e-2 73.9%, 0%, 36.9%, 78.6%
31+
5,3,1.3e-2 75.5%, 0%, 69.1%, 76.3%
32+
5,3,1.4e-2 75.0%, 0%, 80.0%, 74.0%
33+
34+
35+
6,3,1.4e-2 84.9%, 0%, 89.9%, 84.3%
36+
37+
7,3,1.3e-2 76.7%, 0%, 95.0%, 74.4%
38+
7,3,1.2e-2 78.1%, 0%, 93.7%, 76.1%
39+
7,3,1e-2 81.2%, 0%, 85.2%, 80.7%
40+
7,3,9e-3 81.7%, 0%, 75.1%, 82.5%
41+
42+
43+
8,3,1e-2 77.4%, 0%, 91.8%, 75.6%
44+
8,3,9e-3 78.4%, 0%, 87.7%, 77.2%
45+
8,3,8e-3 78.9%, 0%, 80.1%, 78.8%
46+
47+
48+
9,3,1e-2 62.2%, 0%, 94.5%, 58.1%
49+
9,3,8e-3 65.8%, 0%, 84.8%, 63.4%
50+
9,3,7e-3 67.8%, 0%, 76.7%, 66.7%
51+
9,3,6.5e-3 68.2%, 0%, 68.1%, 68.2%
52+
9,3,6e-3 68.9%, 0%, 56.3%, 70.5%
53+
54+
55+
56+
--------
57+
58+
6,9,4e-3 76.0%, 0%, 89.2%, 74.4%
59+
6,9,3e-3 78.5%, 0%, 81.4%, 78.2%
60+
6,9,2.5e-3 78.6%, 0%, 69.8%, 79.7%
61+
62+
63+
3,9 4e-3 50.2%, 0%, 41.8%, 51.2%
64+
3,9,4.2e-3 50.6%, 0%, 52.6%, 50.4%

trainer.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
transform=ToTensor()
2525
)
2626

27+
target = 0
28+
29+
# Filter the dataset to exclude the target
30+
train_mask = training_data.targets != target
2731

28-
# Filter the dataset to only include classes 0-8
29-
train_mask = training_data.targets <= 8
3032
training_data.data = training_data.data[train_mask]
3133
training_data.targets = training_data.targets[train_mask]
3234

33-
test_mask = test_data.targets <= 8
35+
test_mask = test_data.targets != target
3436
test_data.data = test_data.data[test_mask]
3537
test_data.targets = test_data.targets[test_mask]
3638
print(training_data.classes)
@@ -118,6 +120,6 @@ def test(dataloader, model):
118120
print("Done!")
119121

120122
#save the model
121-
#torch.save(model.state_dict(), "modelNo9.pth")
123+
torch.save(model.state_dict(), "modelNo"+str(target)+".pth")
122124

123125

0 commit comments

Comments
 (0)