forked from majuid/DeepNav
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
executable file
·78 lines (59 loc) · 2.62 KB
/
utils.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
72
73
74
75
76
77
78
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 12 23:48:00 2020
@author: Ahmed Majuid
"""
import os, shutil
def create_trial_tree(trial_number, session_mode):
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# main folder of this trial (holds results, weights and training log)
trial_root_folder = os.path.join("DeepNav_results", "trial_" + str(trial_number).zfill(3))
# weights folder
weights_folder = os.path.join(trial_root_folder, "weights")
# history csv file
history_csv_file = os.path.join(trial_root_folder, "model_history_log.csv")
trial_tree = { "trial_root_folder" : trial_root_folder,
"weights_folder" : weights_folder,
"history_csv_file" : history_csv_file
}
if session_mode == "Resume":
return trial_tree
if session_mode == "Override":
shutil.rmtree(trial_root_folder)
if session_mode == "Evaluate":
shutil.rmtree(os.path.join(trial_root_folder, "training"))
shutil.rmtree(os.path.join(trial_root_folder, "validation"))
# tree levels
folders_level_1 = ["training", "validation"]
folders_level_2 = ["differenced", "reconstructed"]
folders_level_3 = ["best", "worst", "other", "nn_output_csv"]
# leaf folders
for folder_level_1 in folders_level_1:
for folder_level_2 in folders_level_2:
for folder_level_3 in folders_level_3:
leaf_folder = os.path.join(trial_root_folder, folder_level_1, folder_level_2, folder_level_3)
os.makedirs(leaf_folder)
if session_mode == "Evaluate":
return trial_tree
os.makedirs(weights_folder)
print("\n\n *** \t Created ", trial_root_folder, "\t ***")
return trial_tree
def retrieve_latest_weights(weights_folder):
"""
Arguments
weights_folder: path string of the saved weights directory
Returns
last_saved_epoch: integer number, the last saved epoch
last_saved_weights_file: string name of the most recent weights file in the directory
"""
# find the most recent weights and load them to the singeleton model
saved_weights_names = os.listdir(weights_folder)
epochs_numbers = []
for weight_name in saved_weights_names:
epoch_number = ''.join([i for i in weight_name[2:8] if i.isdigit()])
epochs_numbers.append(int(epoch_number))
last_saved_epoch = max(epochs_numbers)
final_weights_index = epochs_numbers.index(last_saved_epoch)
final_weights = saved_weights_names[final_weights_index]
return last_saved_epoch, os.path.join(weights_folder, final_weights)