general
import sys
import numpy as np
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import plot,savefig
import matplotlib.pyplot as plt
def isfloat(value):
try:
float(value)
return True
except ValueError:
return False
def readfile(inputfile):
f=open(inputfile,'r')
lines=f.readlines()
f.close()
batchsize=5
lenf=len(lines)/batchsize
trainloss=np.zeros(100)
losses=np.zeros(lenf)
e=0
i=0
epo_now=1
epo_tmp_num=0
ifepo=0
for ix, line in enumerate(lines):
data=line.strip().split(',')[0].split(':')[0]
if isfloat(data):
losses[i]=float(data)
i=i+1
if ifepo==1:
trainloss[e]=sum(losses)/(i)
e=e+1
i=0
ifepo=0
epo_tmp_num=0
elif data == "epoch":
epoch=int(line.strip().split(',')[0].split(':')[1])
if epo_tmp_num == 0 and epo_now != epoch:
ifepo=1
epo_now=epoch
epo_tmp_num=epo_tmp_num+1
return trainloss[0:e-1],len(trainloss[0:e-1])
if __name__ == "__main__":
ids=['56','128','256','512','1024']
for id in ids:
print id
inputfile1="logTrain_h"+id
loss1,len1= readfile(inputfile1)
lens=len1
x_tmp=range(lens)
x=[i+1 for i in x_tmp]
plt.figure()
y_loss1=loss1[0:lens]
plot(x,loss1,'m*-', label=inputfile1,linewidth=2)
plt.legend(loc='upper right')
plt.title('train_loss_hiddensize'+id, fontsize = 16)
savefig('train_loss_h%s.png' %id)
plt.show()
双纵轴
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import plot,savefig
import matplotlib.pyplot as plt
import glob
import sys
import numpy as np
import os
def isfloat(value):
try:
float(value)
return True
except ValueError:
return False
def readfile_t(inputfile):
f=open(inputfile,'r')
lines=f.readlines()
f.close()
batchsize=5
lenf=len(lines)/batchsize
trainloss=np.zeros(100)
losses=np.zeros(lenf)
e=0
i=0
epo_now=1
epo_tmp_num=0
ifepo=0
for ix, line in enumerate(lines):
data=line.strip().split(',')[0].split(':')[0]
if isfloat(data):
losses[i]=float(data)
i=i+1
if ifepo==1:
trainloss[e]=sum(losses)/(i)
e=e+1
i=0
ifepo=0
epo_tmp_num=0
elif data == "epoch":
epoch=int(line.strip().split(',')[0].split(':')[1])
if epo_tmp_num == 0 and epo_now != epoch:
ifepo=1
epo_now=epoch
epo_tmp_num=epo_tmp_num+1
return trainloss[0:e-1],len(trainloss[0:e-1])
def readfile_e(inputpath,x_e):
avg=np.zeros(len(x_e))
for i,ei in enumerate(x_e):
file='%s/ap_%d.csv' %(inputpath,ei)
f = open("%s" %file, 'r')
f_lines = f.readlines()
f.close()
res=np.zeros(20)
for ix, line in enumerate(f_lines):
res[ix]=float(line)
avg[i]=np.average(res)
return avg
def draw(type,id,x_e,lr):
if type == "hidden":
inpath="batch5_epoch75_hiddensize%d" %id
inputfile_t="%s/logTrain_h%d" %(inpath,id)
imgname='h%d.png' %(id)
plttitle='hidensize%d_lr%f' %(id,lr)
elif type == "len":
inpath="batch5_epoch75_hiddensize256_%s%d" %(type,id)
inputfile_t="%s/logTrain_%s%d_h256" %(inpath,type,id)
imgname='h256_%s%d.png' %(type,id)
plttitle='hidensize256_%s%d_lr%f' %(type,id,lr)
elif type == "rho":
inpath="batch5_epoch75_hiddensize256_%s%d" %(type,id)
inputfile_t="%s/logTrain_%s%d_h256" %(inpath,type,id)
imgname='h256_%s%d.png' %(type,id)
plttitle='hidensize256_%s%d_lr%f' %(type,id,lr)
loss_e= readfile_e(inpath,x_e)
lens=len(x_e)
loss_t,len_t= readfile_t(inputfile_t)
lens=len_t
x_tmp=range(lens)
x_t=[i+1 for i in x_tmp]
plt.figure()
fig,ax1=plt.subplots()
ax2=ax1.twinx()
y_loss1=loss_t
p1, =ax1.plot(x_t,y_loss1,'m*-', label=inputfile_t,linewidth=2)
ax1.set_xlabel('iteration')
ax1.set_ylabel('train_loss')
y_loss1=loss_e
p2, =ax2.plot(x_e,y_loss1,'bo-', label=inpath,linewidth=2)
ax2.set_ylabel('testdata_precistion')
plt.title(plttitle, fontsize = 16)
ax1.yaxis.label.set_color(p1.get_color())
ax2.yaxis.label.set_color(p2.get_color())
tkw = dict(size=5, width=1.5)
ax1.tick_params(axis='y', colors=p1.get_color(), **tkw)
ax1.set_ylim(ymin=0)
ax2.tick_params(axis='y', colors=p2.get_color(), **tkw)
ax2.set_ylim(ymin=0,ymax=0.5)
ax1.tick_params(axis='x', **tkw)
savefig(imgname)
if __name__ == "__main__":
types=["hidden","len","rho"]
lr=0.005
x_e=[(i+1)*5 for i in range(15)]
type="len"
print type
if type == "hidden":
x_e=[(i+3)*5 for i in range(13)]
ids=[56,128,256,512,1024]
lr=0.01
elif type == "len":
ids=[60,120]
elif type == "rho":
x_e=[(i+3)*5 for i in range(13)]
ids=[30,60,100]
for id in ids:
print id
draw(type,id,x_e,lr)