-
Notifications
You must be signed in to change notification settings - Fork 38
/
utils.py
92 lines (74 loc) · 2.59 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import argparse
import json
import os
import sys
from pprint import pprint
import numpy as np
from easydict import EasyDict as edict
def parse_args():
"""
Parse the arguments of the program
:return: (config_args)
:rtype: tuple
"""
# Create a parser
parser = argparse.ArgumentParser(description="MobileNet-V2 PyTorch Implementation")
parser.add_argument('--version', action='version', version='%(prog)s 0.0.1')
parser.add_argument('--config', default=None, type=str, help='Configuration file')
# Parse the arguments
args = parser.parse_args()
# Parse the configurations from the config json file provided
try:
if args.config is not None:
with open(args.config, 'r') as config_file:
config_args_dict = json.load(config_file)
else:
print("Add a config file using \'--config file_name.json\'", file=sys.stderr)
exit(1)
except FileNotFoundError:
print("ERROR: Config file not found: {}".format(args.config), file=sys.stderr)
exit(1)
except json.decoder.JSONDecodeError:
print("ERROR: Config file is not a proper JSON file!", file=sys.stderr)
exit(1)
config_args = edict(config_args_dict)
pprint(config_args)
print("\n")
return config_args
def create_experiment_dirs(exp_dir):
"""
Create Directories of a regular tensorflow experiment directory
:param exp_dir:
:return summary_dir, checkpoint_dir:
"""
experiment_dir = os.path.realpath(
os.path.join(os.path.dirname(__file__))) + "/experiments/" + exp_dir + "/"
summary_dir = experiment_dir + 'summaries/'
checkpoint_dir = experiment_dir + 'checkpoints/'
dirs = [summary_dir, checkpoint_dir]
try:
for dir_ in dirs:
if not os.path.exists(dir_):
os.makedirs(dir_)
print("Experiment directories created!")
# return experiment_dir, summary_dir, checkpoint_dir
return experiment_dir, summary_dir, checkpoint_dir
except Exception as err:
print("Creating directories error: {0}".format(err))
exit(-1)
def calc_dataset_stats(dataset, axis=0, ep=1e-7):
return (np.mean(dataset, axis=axis) / 255.0).tolist(), (
np.std(dataset + ep, axis=axis) / 255.0).tolist()
class AverageTracker:
def __init__(self):
self.reset()
def reset(self):
self.val = 0
self.avg = 0
self.sum = 0
self.count = 0
def update(self, val, n=1):
self.val = val
self.sum += val * n
self.count += n
self.avg = self.sum / self.count