-
Notifications
You must be signed in to change notification settings - Fork 93
/
Copy pathmain.py
50 lines (42 loc) · 1.61 KB
/
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
import yaml
import os
import argparse
import logging
from datetime import datetime
from source.knn import create_knn
from source.cdp import cdp
from source.utils import log
import time
def main():
parser = argparse.ArgumentParser(description="CDP")
parser.add_argument('--config', default='', type=str)
args = parser.parse_args()
with open(args.config) as f:
config = yaml.load(f)
for k,v in config.items():
setattr(args, k, v)
log_path = "{}/output/log/log-{}{:02d}-{:02d}_{:02d}:{:02d}:{:02d}.txt".format(
os.path.dirname(args.config),
datetime.today().year, datetime.today().month, datetime.today().day,
datetime.today().hour, datetime.today().minute, datetime.today().second)
if not os.path.isdir(os.path.dirname(log_path)):
os.makedirs(os.path.dirname(log_path))
logging.basicConfig(filename=log_path, level=logging.INFO)
with open(args.config, 'r') as f:
config_str = f.read()
log("############# config #############")
log(config_str)
log("##################################")
assert isinstance(args.committee, list), "committee should be a list of strings"
start = time.time()
log("\n------------- Progress --------------")
if args.strategy == "mediator":
create_knn(args, args.mediator['train_data_name'])
create_knn(args, args.data_name)
knn_time = time.time() - start
start = time.time()
cdp(args)
cdp_time = time.time() - start
log("Runing time: knn: {:.4g} s, cdp: {:.4g} s, total: {:.4g} s".format(knn_time, cdp_time, knn_time + cdp_time))
if __name__ == "__main__":
main()