Skip to content

Instantly share code, notes, and snippets.

@iseessel
Created June 29, 2021 13:51
Show Gist options
  • Save iseessel/a3a5e899c10585116b7f77e2740e6085 to your computer and use it in GitHub Desktop.
Save iseessel/a3a5e899c10585116b7f77e2740e6085 to your computer and use it in GitHub Desktop.
vissl_plot_losses_log.txt
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