-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathtrain.py
More file actions
49 lines (39 loc) · 1.72 KB
/
Copy pathtrain.py
File metadata and controls
49 lines (39 loc) · 1.72 KB
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
from argparse import Namespace
from logging import Logger
import numpy as np
import os
from fpgnn.train import fold_train
from fpgnn.tool import set_log, set_train_argument, get_task_name, mkdir
def training(args,log):
info = log.info
seed_first = args.seed
data_path = args.data_path
save_path = args.save_path
score = []
for num_fold in range(args.num_folds):
info(f'Seed {args.seed}')
args.seed = seed_first + num_fold
args.save_path = os.path.join(save_path, f'Seed_{args.seed}')
mkdir(args.save_path)
fold_score = fold_train(args,log)
score.append(fold_score)
score = np.array(score)
info(f'Running {args.num_folds} folds in total.')
if args.num_folds > 1:
for num_fold, fold_score in enumerate(score):
info(f'Seed {seed_first + num_fold} : test {args.metric} = {np.nanmean(fold_score):.6f}')
if args.task_num > 1:
for one_name,one_score in zip(args.task_names,fold_score):
info(f' Task {one_name} {args.metric} = {one_score:.6f}')
ave_task_score = np.nanmean(score, axis=1)
score_ave = np.nanmean(ave_task_score)
score_std = np.nanstd(ave_task_score)
info(f'Average test {args.metric} = {score_ave:.6f} +/- {score_std:.6f}')
if args.task_num > 1:
for i,one_name in enumerate(args.task_names):
info(f' average all-fold {one_name} {args.metric} = {np.nanmean(score[:, i]):.6f} +/- {np.nanstd(score[:, i]):.6f}')
return score_ave,score_std
if __name__ == '__main__':
args = set_train_argument()
log = set_log('train',args.log_path)
training(args,log)