From 6455af09d3312029f0675c8d16bd98b0666d3d8a Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Thu, 17 Feb 2022 10:49:27 +0100 Subject: [PATCH] Improved script to monitor advancement of experiments --- view.py | 66 +++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/view.py b/view.py index 3a822d9..10f421e 100755 --- a/view.py +++ b/view.py @@ -3,25 +3,55 @@ # EXAMPLE : ./view.py bin/*/*log import sys +import argparse import subprocess +from datetime import datetime -cmd = 'for f in %s; do echo $f; grep "SAVED" $f | tail -1; echo ""; done'%" ".join(sys.argv[1:]) -p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) +if __name__ == "__main__" : + parser = argparse.ArgumentParser() + parser.add_argument("files", type=str, nargs="+", + help="List of train log files, ex. './view.py bin/*/*log'") + parser.add_argument("--detail", "-d", default=False, action="store_true", + help="Print saved epoch count details") + args = parser.parse_args() -models = [] + cur = 0 + total = 0 + cmd = 'for f in %s; do tail -1 $f; done'%" ".join(args.files) + p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) + for line in p.stdout : + line = line.decode("utf-8").strip().replace(",", " ") + curEpoch = int(line.split("/")[0].split()[-1]) + totalEpoch = int(line.split("/")[1].split()[0]) + cur += curEpoch + total += totalEpoch + print("["+datetime.now().strftime("%d/%m/%y %H:%M:%S")+"]", ":", "%.2f%%"%(100.0*cur/total)) -model = [] -for line in p.stdout : - line = line.decode("utf-8").strip() - if len(line) == 0 : - epoch = model[1].split(',')[0].split(' ')[-1] - name = model[0].split('/')[-2] - scores = model[1].split(':')[-1].replace(' SAVED', '') - score = sum([float(val.split('=')[-1]) for val in scores.split()]) - models.append([score, "%s\t%s\t%s"%(epoch, scores, name)]) - model = [] - continue - model.append(line) - -models = sorted(models)[::-1] -print("\n".join([m[1] for m in models])) + if not args.detail : + exit(0) + + cmd = 'for f in %s; do echo $f; grep "SAVED" $f | tail -1; echo ""; done'%" ".join(args.files) + p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) + + models = {} + + model = [] + for line in p.stdout : + line = line.decode("utf-8").strip() + if len(line) == 0 : + epoch = model[1].split(',')[0].split(' ')[-1] + name = model[0].split('/')[-2] + category = name.split('_')[0] + scores = model[1].split(':')[-1].replace(' SAVED', '') + score = sum([float(val.split('=')[-1]) for val in scores.split()]) + if category not in models : + models[category] = [] + models[category].append([score, "%s\t%s\t%s"%(epoch, scores, name)]) + model = [] + continue + model.append(line) + + for category in models : + print(category, ":") + cat = sorted(models[category])[::-1] + print("\n".join([m[1] for m in cat])) -- GitLab