Skip to content

Commit 3da9c9a

Browse files
author
deeperlearner
committed
Merge branch 'develop'
2 parents 6d2debb + d4d1013 commit 3da9c9a

15 files changed

Lines changed: 148 additions & 136 deletions

File tree

base/base_trainer.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def _save_checkpoint(self, epoch, save_best=False):
164164
torch.save(state, filename)
165165
self.logger.info("Saving model: {} ...".format(filename))
166166

167-
def _resume_checkpoint(self, resume_path, finetune=False):
167+
def _resume_checkpoint(self, resume_path, resume_training=False):
168168
"""
169169
Resume from saved checkpoints
170170
@@ -173,8 +173,7 @@ def _resume_checkpoint(self, resume_path, finetune=False):
173173
resume_path = str(resume_path)
174174
self.logger.info("Loading checkpoint: {} ...".format(resume_path))
175175
checkpoint = torch.load(resume_path)
176-
if not finetune:
177-
# resume training
176+
if resume_training:
178177
self.start_epoch = checkpoint["epoch"] + 1
179178
self.mnt_best = checkpoint["monitor_best"]
180179

configs/dataset_model.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,25 @@
132132
}
133133
}
134134
},
135-
"trainer": {
136-
"module": "trainers.trainer",
137-
"type": "Trainer",
138-
"kwargs": {
139-
"apex": false,
135+
"trainers": {
136+
"trainer": {
137+
"module": "trainers.trainer",
138+
"type": "Trainer",
139+
"kwargs": {
140+
"apex": false,
140141

141-
"finetune": false,
142-
"epochs": 2,
143-
"len_epoch": null,
142+
"epochs": 2,
143+
"len_epoch": null,
144144

145-
"save_period": 5,
146-
"save_the_best": true,
147-
"verbosity": 2,
145+
"save_period": 5,
146+
"save_the_best": true,
147+
"verbosity": 2,
148148

149-
"monitor": "min val_loss",
150-
"early_stop": 10,
149+
"monitor": "min val_loss",
150+
"early_stop": 10,
151151

152-
"tensorboard": false
152+
"tensorboard": false
153+
}
153154
}
154155
},
155156
"tester": {

configs/examples/Adult_logistic.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,24 +118,25 @@
118118
}
119119
}
120120
},
121-
"trainer": {
122-
"module": "trainers.trainer",
123-
"type": "Trainer",
124-
"kwargs": {
125-
"apex": false,
121+
"trainers": {
122+
"trainer": {
123+
"module": "trainers.trainer",
124+
"type": "Trainer",
125+
"kwargs": {
126+
"apex": false,
126127

127-
"finetune": false,
128-
"epochs": 2,
129-
"len_epoch": null,
128+
"epochs": 2,
129+
"len_epoch": null,
130130

131-
"save_period": 5,
132-
"save_the_best": true,
133-
"verbosity": 2,
131+
"save_period": 5,
132+
"save_the_best": true,
133+
"verbosity": 2,
134134

135-
"monitor": "max val_binary_accuracy",
136-
"early_stop": 10,
135+
"monitor": "max val_binary_accuracy",
136+
"early_stop": 10,
137137

138-
"tensorboard": false
138+
"tensorboard": false
139+
}
139140
}
140141
},
141142
"tester": {

configs/examples/ImageNet_VGG16.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,24 +119,25 @@
119119
}
120120
}
121121
},
122-
"trainer": {
123-
"module": "trainers.trainer",
124-
"type": "Trainer",
125-
"kwargs": {
126-
"apex": false,
122+
"trainers": {
123+
"trainer": {
124+
"module": "trainers.trainer",
125+
"type": "Trainer",
126+
"kwargs": {
127+
"apex": false,
127128

128-
"finetune": true,
129-
"epochs": 2,
130-
"len_epoch": null,
129+
"epochs": 2,
130+
"len_epoch": null,
131131

132-
"save_period": 5,
133-
"save_the_best": true,
134-
"verbosity": 2,
132+
"save_period": 5,
133+
"save_the_best": true,
134+
"verbosity": 2,
135135

136-
"monitor": "min val_loss",
137-
"early_stop": 10,
136+
"monitor": "min val_loss",
137+
"early_stop": 10,
138138

139-
"tensorboard": false
139+
"tensorboard": false
140+
}
140141
}
141142
},
142143
"tester": {

configs/examples/MNIST_LeNet.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -99,24 +99,25 @@
9999
}
100100
}
101101
},
102-
"trainer": {
103-
"module": "trainers.trainer",
104-
"type": "Trainer",
105-
"kwargs": {
106-
"apex": false,
102+
"trainers": {
103+
"trainer": {
104+
"module": "trainers.trainer",
105+
"type": "Trainer",
106+
"kwargs": {
107+
"apex": false,
107108

108-
"finetune": false,
109-
"epochs": 2,
110-
"len_epoch": null,
109+
"epochs": 2,
110+
"len_epoch": null,
111111

112-
"save_period": 1,
113-
"save_the_best": true,
114-
"verbosity": 2,
112+
"save_period": 1,
113+
"save_the_best": true,
114+
"verbosity": 2,
115115

116-
"monitor": "min val_loss",
117-
"early_stop": 10,
116+
"monitor": "min val_loss",
117+
"early_stop": 10,
118118

119-
"tensorboard": false
119+
"tensorboard": false
120+
}
120121
}
121122
},
122123
"tester": {

mains/bootstrap.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def bootstrapping(targets, outputs, metrics_epoch, test_metrics, repeat=1000):
1515
logger.info(msg)
1616

1717
results = pd.DataFrame()
18+
test_metrics.reset()
1819
start = time.time()
1920
for number in range(repeat):
2021
ids = np.arange(len(outputs))
@@ -24,7 +25,7 @@ def bootstrapping(targets, outputs, metrics_epoch, test_metrics, repeat=1000):
2425

2526
for met in metrics_epoch:
2627
test_metrics.epoch_update(met.__name__, met(targets_, outputs_))
27-
test_result = test_metrics.result()
28+
test_result = test_metrics.epoch_record
2829
test_result = test_result["mean"].rename(number)
2930
results = pd.concat((results, test_result), axis=1)
3031

mains/main.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from logger import get_logger
1111
from parse_config import ConfigParser
1212
from mains import train, train_mp, test
13-
from utils import msg_box, consuming_time
13+
from utils import msg_box, consuming_time, get_by_path
1414

1515

1616
if __name__ == "__main__":
@@ -20,7 +20,7 @@
2020
run_args = args.add_argument_group("run_args")
2121
run_args.add_argument("--optuna", action="store_true")
2222
run_args.add_argument("--mp", action="store_true", help="multiprocessing")
23-
run_args.add_argument("--n_jobs", default=2, type=int, help="number of jobs running at the same time")
23+
run_args.add_argument("--n_jobs", default=3, type=int, help="number of jobs running at the same time")
2424
run_args.add_argument("-c", "--config", default="configs/config.json", type=str)
2525
run_args.add_argument("--mode", default="train", type=str)
2626
run_args.add_argument("--resume", default=None, type=str)
@@ -64,7 +64,8 @@
6464

6565
if mode == "train":
6666
if config.run_args.optuna:
67-
max_min, mnt_metric = config["trainer"]["kwargs"]["monitor"].split()
67+
keys = ["trainers", "trainer", "kwargs", "monitor"]
68+
max_min, mnt_metric = get_by_path(config, keys).split()
6869
objective = config.init_obj(["optuna"])
6970
n_trials = config["optuna"]["n_trials"]
7071

mains/test.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def test(config):
3030
# datasets
3131
test_datasets = dict()
3232
keys = ["datasets", "test"]
33-
for name in get_by_path(config, keys):
34-
test_datasets[name] = config.init_obj([*keys, name])
33+
name = "data"
34+
test_datasets[name] = config.init_obj([*keys, name])
3535

3636
repeat_time = config["cross_validation"]["repeat_time"]
3737
k_fold = config["cross_validation"]["k_fold"]
@@ -43,10 +43,10 @@ def test(config):
4343
# data_loaders
4444
test_data_loaders = dict()
4545
keys = ["data_loaders", "test"]
46-
for name in get_by_path(config, keys):
47-
dataset = test_datasets[name]
48-
loaders = config.init_obj([*keys, name], dataset)
49-
test_data_loaders[name] = loaders.test_loader
46+
name = "data"
47+
dataset = test_datasets[name]
48+
loaders = config.init_obj([*keys, name], dataset)
49+
test_data_loaders[name] = loaders.test_loader
5050

5151
# models
5252
if k_fold > 1:
@@ -58,18 +58,18 @@ def test(config):
5858
resume = config.resume
5959
logger.info(f"Loading model: {resume} ...")
6060
checkpoint = torch.load(resume)
61-
models = dict()
61+
6262
logger_model = get_logger("model", verbosity=0)
63-
for name in config["models"]:
64-
model = config.init_obj(["models", name])
65-
logger_model.info(model)
66-
state_dict = checkpoint["models"][name]
67-
if config["n_gpu"] > 1:
68-
model = torch.nn.DataParallel(model)
69-
model.load_state_dict(state_dict)
70-
model = model.to(device)
71-
model.eval()
72-
models[name] = model
63+
models = dict()
64+
name = "model"
65+
model = config.init_obj(["models", name])
66+
logger_model.info(model)
67+
state_dict = checkpoint["models"][name]
68+
if config["n_gpu"] > 1:
69+
model = torch.nn.DataParallel(model)
70+
model.load_state_dict(state_dict)
71+
model = model.to(device)
72+
models[name] = model
7373

7474
# losses
7575
loss_fn = config.init_obj(["losses", "loss"])

0 commit comments

Comments
 (0)