This repository has been archived by the owner on May 22, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathhyp_search_main.py
71 lines (61 loc) · 2.17 KB
/
hyp_search_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Copyright 2022 Google LLC
# * Licensed under the Apache License, Version 2.0 (the "License");
# * you may not use this file except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * https://www.apache.org/licenses/LICENSE-2.0
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
"""Run attack by also sweeping a set of pre-defined hyperparameters."""
import os
from functools import partial
import attack_prep.utils.backward_compat # pylint: disable=unused-import
# pylint: disable=wrong-import-position
from preprocess_attack_main import parse_args, run_one_setting
print = partial(print, flush=True) # pylint: disable=redefined-builtin
if __name__ == "__main__":
args = parse_args()
os.makedirs("./results", exist_ok=True)
if args.debug:
args.verbose = True
hyp_to_search = {
"boundary": {
"hyp": ["boundary_step", "boundary_orth_step"],
"val": [[0.1, 0.01, 0.001], [0.1, 0.001]],
},
"signopt": {
"hyp": ["signopt_alpha", "signopt_beta"],
"val": [[2, 0.2, 0.02], [0.1, 0.01, 0.0001]],
},
"hsj": {
"hyp": ["hsj_gamma"],
# "val": [[1e3, 1e4, 1e5, 1e6]],
"val": [[1e2, 1e3, 1e4, 1e5]],
},
"qeba": {
"hyp": ["qeba_subspace"],
"val": [
[
# "naive",
"resize2",
"resize4",
"resize8",
"resize16",
# "resize32",
]
],
},
}
if args.smart_noise:
hyp_to_search["qeba"]["val"] = [["naive"]]
params = hyp_to_search[args.attack]
for i, hyp in enumerate(params["hyp"]):
vals = params["val"][i]
for val in vals:
config = vars(args)
config[hyp] = val
run_one_setting(config)