In [48]:
import matplotlib.pyplot as plt
%matplotlib inline
import re
import numpy as np

LOG_PATH = '/tmp/my_caffe_log.txt'

In [2]:
with open(LOG_PATH, 'r') as f:
    lines = ''.join(f.readlines())

In [21]:
iter_n = [int(n) for n in re.findall(r'Iteration (\d+)', lines)]
mode = re.findall(r'     (\w+) net', lines)
loss = [float(n) for n in re.findall(r' (\d+\.\d+) \(', lines)]

In [55]:
parsed = zip(iter_n, loss, mode)
train = np.array([(ii, l) for (ii, l, m) in parsed if m == 'Train']).T
test = np.array([(ii, l) for (ii, l, m) in parsed if m == 'Test']).T

In [62]:
def plot_loss(f=LOG_PATH):
    with open(LOG_PATH, 'r') as f:
        lines = ''.join(f.readlines())
    iter_n = [int(n) for n in re.findall(r'Iteration (\d+)', lines)]
    mode = re.findall(r'     (\w+) net', lines)
    loss = [float(n) for n in re.findall(r' (\d+\.\d+) \(', lines)]
    parsed = zip(iter_n, loss, mode)
    train = np.array([(ii, l) for (ii, l, m) in parsed if m == 'Train']).T
    test = np.array([(ii, l) for (ii, l, m) in parsed if m == 'Test']).T
    plt.plot(*train, marker='x')
    plt.plot(*test, marker='o')

In [63]:
plot_loss()