import os
import sys
import numpy as np
import matplotlib.pyplotas plt
import math
import re
import pylab
from pylab import figure, show,legend
frommpl_toolkits.axes_grid1 import host_subplot
# read the logfile
fp = open('log.txt', 'r')
train_iterations =[]
train_loss = []
test_iterations =[]
test_accuracy = []
for ln in fp:
# get train_iterations and train_loss
if'] Iteration 'in ln and'loss = 'in ln:
arr = re.findall(r'ion \b\d+\b,',ln)
train_iterations.append(int(arr[0].strip(',')[4:]))
train_loss.append(float(ln.strip().split(' = ')[-1]))
# get test_iteraitions
if'] Iteration'in ln and'Testing net (#0)'in ln:
arr = re.findall(r'ion \b\d+\b,',ln)
test_iterations.append(int(arr[0].strip(',')[4:]))
# get test_accuracy
if'#2:'in ln and'loss/top-5'in ln:
test_accuracy.append(float(ln.strip().split(' = ')[-1]))
fp.close()
host =host_subplot(111)
plt.subplots_adjust(right=0.8) # ajust theright boundary of the plot window
par1 = host.twinx()
# set labels
host.set_xlabel("iterations")
host.set_ylabel("logloss")
par1.set_ylabel("validationaccuracy")
# plot curves
p1, =host.plot(train_iterations, train_loss, label="training log loss")
p2, =par1.plot(test_iterations, test_accuracy, label="validation accuracy")
# set locationof the legend,
# 1->rightupcorner, 2->leftup corner, 3->leftdown corner
#4->rightdown corner, 5->rightmid ...
host.legend(loc=5)
# set labelcolor
host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
# set the rangeof x axis of host and y axis of par1
host.set_xlim([-1500, 160000])
par1.set_ylim([0., 1.05])
plt.draw()
plt.show()