Created
June 29, 2021 13:51
-
-
Save iseessel/a3a5e899c10585116b7f77e2740e6085 to your computer and use it in GitHub Desktop.
vissl_plot_losses_log.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from classy_vision.generic.util import ( | |
copy_model_to_gpu, | |
load_and_broadcast_checkpoint, | |
load_checkpoint, | |
) | |
import torch | |
from fvcore.common.file_io import PathManager | |
# Train loss | |
import matplotlib.pyplot as plt | |
import os | |
import numpy as np | |
import json | |
from plotly import __version__ | |
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot | |
init_notebook_mode(connected=True) | |
import plotly.tools as tls | |
def get_lr_values(log_file): | |
with PathManager.open(log_file, 'r') as fopen: | |
iters, lr_values = [], [] | |
for line in fopen: | |
try: | |
if 'lr:' in line and 'eta:' in line: | |
start = line.find('iter:') + 6 | |
end = start + line[start:].find(';') | |
iter_num = int(line[start:end]) | |
start = line.find('lr:') + 4 | |
end = start + line[start:].find(';') | |
curr_lr = float(line[start:end]) | |
iters.append(iter_num) | |
lr_values.append(curr_lr) | |
except Exception: | |
pass | |
iters, lr_values = zip(*sorted(zip(iters, lr_values))) | |
return iters, lr_values | |
def get_loss_iters(log_file, normalize, multiplier=1.0): | |
with PathManager.open(log_file, 'r') as fopen: | |
loss, iters = [], [] | |
for line in fopen: | |
try: | |
if 'eta:' in line: | |
start = line.find('loss:') + 6 | |
end = start + line[start:].find(';') | |
loss_amount = float(line[start:end]) | |
start = line.find('iter:') + 6 | |
end = start + line[start:].find(';') | |
iter_num = int(line[start:end]) | |
loss.append(loss_amount * multiplier) | |
iters.append(iter_num) | |
except Exception: | |
pass | |
if normalize: | |
N = 17 | |
rem = int(len(iters) % N) | |
if rem == 0: | |
rem = int(len(iters)) | |
loss = list(np.mean(np.array(loss[:-rem]).reshape(-1, N), axis=1)) | |
iters = list(np.mean(np.array(iters[:-rem]).reshape(-1, N), axis=1)) | |
iters, loss = zip(*sorted(zip(iters, loss))) | |
return loss, iters | |
def get_matlab_colors(): | |
matlabColors = [ | |
tuple([0, 0.4470, 0.7410]), | |
tuple([0.8500, 0.3250, 0.0980]), | |
tuple([0.9290, 0.6940, 0.1250]), | |
tuple([0.4940, 0.1840, 0.5560]), | |
tuple([0.4660, 0.6740, 0.1880]), | |
tuple([0.3010, 0.7450, 0.9330]), | |
tuple([0.6350, 0.0780, 0.1840]), | |
tuple([0.300, 0.300, 0.300]), | |
tuple([0.600, 0.600, 0.600]), | |
tuple([1.000, 0.000, 0.000]), | |
tuple([1.000, 0.500, 0.000]), | |
tuple([0.749, 0.749, 0.000]), | |
tuple([0.000, 1.000, 0.000]), | |
tuple([0.000, 0.000, 1.000]), | |
tuple([0.667, 0.000, 1.000]), | |
tuple([0.333, 0.333, 0.000]), | |
tuple([0.333, 0.667, 0.000]), | |
]; | |
return matlabColors; | |
def prepare_legend(file_list, legend_list, normalize, multipliers): | |
assert len(file_list) == len(legend_list) | |
legends = [] | |
all_colors = get_matlab_colors() | |
for idx in range(len(file_list)): | |
file_path = os.path.join(file_list[idx]) | |
print(file_path) | |
loss, iters = get_loss_iters(file_path, normalize, multipliers[idx]) | |
leg_name = legend_list[idx] | |
leg, = plt.plot(iters, loss, linewidth=20, label=leg_name, color=all_colors[idx]) | |
legends.append(leg) | |
return legends | |
FILE_DICT = { | |
'1': '/absolute/path/to/log.txt', | |
'2': '/absolute/path/to/log.txt', | |
} | |
legend_dict = { | |
'1': 'loss_curve_1', | |
'2': 'loss_curve_2', | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment