You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.7 KiB
55 lines
1.7 KiB
import glob |
|
import json |
|
import os |
|
import time |
|
|
|
from prettytable import PrettyTable |
|
|
|
|
|
def monitor(): |
|
total_table = [] |
|
for dataset in ['val']: |
|
table = PrettyTable(['exp_name', 'exp_id', 'accuracy'], |
|
sortby='accuracy', |
|
header_style='upper', |
|
valign='m', |
|
title='{} Result'.format(dataset), |
|
reversesort=True) |
|
|
|
valid_dirs = [ |
|
'experiment_learning_rate', |
|
] |
|
exp_dirs = glob.glob('./experiments/*/exp_*') |
|
exp_dirs = [i for i in exp_dirs if i.split('/')[-2] in valid_dirs] |
|
|
|
for exp_dir in exp_dirs: |
|
params_json_path = os.path.join(exp_dir, 'params.json') |
|
results_json_path = os.path.join(exp_dir, 'val_metrics_best.json') |
|
logs_txt_path = os.path.join(exp_dir, 'log.txt') |
|
if not os.path.exists(params_json_path) or not os.path.exists( |
|
results_json_path): |
|
continue |
|
|
|
params = json.load(open(params_json_path, 'r')) |
|
results = json.load(open(results_json_path, 'r')) |
|
# exp info |
|
exp_name = exp_dir.split('/')[-2] |
|
exp_id = exp_dir.split('_')[-1] |
|
# model = params['model'] |
|
# results |
|
accuracy = '{:>8.4f}'.format(results['accuracy']) |
|
cur_row = [exp_name, exp_id, accuracy] |
|
table.add_row(cur_row) |
|
print(table) |
|
total_table.append(str(table)) |
|
|
|
|
|
def run(interval): |
|
while True: |
|
monitor() |
|
time.sleep(interval) |
|
|
|
|
|
if __name__ == '__main__': |
|
interval = 10 * 60 |
|
run(interval)
|
|
|