[python]画图

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=min(len(iter1),len(iter2))
    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):
    #files = glob.glob('%s/ap_*.csv' %inputpath)
    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 #[0:lens]
        p1, =ax1.plot(x_t,y_loss1,'m*-', label=inputfile_t,linewidth=2)
        ax1.set_xlabel('iteration')
        ax1.set_ylabel('train_loss')
        #plt.legend(loc='upper right')
        #plt.title('train_loss_hiddensize'+id, fontsize = 16)
        #savefig('train_loss_h%s.png' %id)
        #plt.show()

        y_loss1=loss_e #[0:lens]
        p2, =ax2.plot(x_e,y_loss1,'bo-', label=inpath,linewidth=2)
        ax2.set_ylabel('testdata_precistion')
        #plt.legend(loc='upper right')
        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)]
#    for type in types:
        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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值