Esempio n. 1
0
class Trainer:

    def __init__(self):
        self.model = None
        self.batch_size = 0
        self.x_train = None
        self.x_test = None
        self.y_train = None
        self.y_test = None

    def train(self, epoch=10, batch_size=32, gpu=False):
        if gpu:
            cuda.check_cuda_available()
        xp = cuda.cupy if gpu else np

        self.batch_size = batch_size

        label_types = ['none', 'tap', 'up', 'down', 'right', 'left']

        self.model = Alex(len(label_types))
        optimizer = optimizers.MomentumSGD(lr=0.01, momentum=0.9)
        optimizer.setup(self.model)

        if gpu:
            self.model.to_gpu()

        training_data = TrainingData(IMAGE_ROOT, NOTE_ROOT, VIDEO_ROOT, SONG_LIST_PATH)
        self.x_train, self.x_test, self.y_train, self.y_test = training_data.get_train_data(label_types)
        data_size = self.x_train.shape[0]

        for ep in range(epoch):
            print('epoch {0}/{1}: (learning rate={2})'.format(ep + 1, epoch, optimizer.lr))
            indexes = np.random.permutation(data_size)
            for i in range(0, data_size, self.batch_size):
                x_batch = self.x_train[indexes[i:i + self.batch_size]]
                y_batch = self.y_train[indexes[i:i + self.batch_size]]
                x = chainer.Variable(x_batch)
                t = chainer.Variable(y_batch)
                optimizer.update(self.model, x, t)
                print("loss: {0}".format(self.model.loss.data))

            serializers.save_npz(MODEL_PATH, self.model)
            optimizer.lr *= 0.97

    def test(self):
        print('Test started')
        test_data_size = self.x_test.shape[0]
        sum_loss = 0
        for i in range(0, test_data_size, self.batch_size):
            x = chainer.Variable(self.x_test[i:i + self.batch_size])
            t = chainer.Variable(self.y_test[i:i + self.batch_size])
            loss = self.model(x, t)
            sum_loss += loss.data * self.batch_size
            print(self.model.forward(x).data)

        print('mean loss: {0}'.format(sum_loss / test_data_size))
Esempio n. 2
0
        self.root.fill('hy',y)
        self.root.fill('hz',z)
        self.root.fill('tgauss',tup)
        return True

#------- execution

if __name__ == '__main__':

    # imports
    from alex import Alex
    from messenger import Message, Messenger
    from rootsvc import ROOTSvc

    # configure alex
    alex = Alex() 
    alex.nevts = 1000 # number of events to run
    alex.evtfreq = 100 # frequency to print the event number
    
    # create messenger service, log output in file 'alex.log', level INFO
    msg = Messenger(name='msg',fname='alex_rootwrite.log',level=Message.Info)
    alex.addsvc(msg)
    
    # create histogram service, histogram root file 'alex.root'
    root = ROOTSvc(name='root',fname='alex_rootwrite.root')
    alex.addsvc(root)

    #flow
    gaus = GaussGenerate(name='gaus') # create GaussGenerate algorithm
    alex.addalg(gaus) # add gaus algorithm to alex flow
Esempio n. 3
0
    def define(self):
        """ path a list of the keys of the event DataSvc to dump
        """
        self.paths = [] 
        return

    def execute(self):
        for path in self.paths:
            ok,data = self.evt.has(path),self.evt[path]
            self.msg.info(self.name,path,ok)
            if (ok): self.msg.info(self.name,data)
        return True

# example of how to use the algorithms

if __name__ == '__main__':

    from alex import Alex
    
    alex = Alex('alex')
    alex.nevts = 100

    eff = EffFilter('eff')
    eff.eff = 0.8
    alex.addalg(eff)

    alex.run()
    
                
        
Esempio n. 4
0
        """ finalize
        """
        if (self.reader): self.reader.close()
        return
        

#-------- how to use reader

if __name__ == "__main__":
    
    # imports
    from alex import Alex
    from algorithms import Dump

    # configure alex
    alex = Alex('alex')

    # flow
    reader = Reader('reader',freader=FileReader)
    reader.fnames = ['examples/data0.txt','examples/data1.txt',
                     'examples/data2.txt']
    alex.addalg(reader)

    dump = Dump('dump')
    dump.paths+=['reader']
    alex.addalg(dump)

    # run
    alex.run()

    
Esempio n. 5
0
#            for seg in segments:
#
#                # Get the mean, min, and max chi2 values for each segment.
#                #  Set to -1 if the segment is not >= 3 points.
#                mean_chi2 = -1.; min_chi2 = -1.; max_chi2 = -1.;
#                if(len(seg.seg_k) >= 2):
#                    mean_chi2 = np.mean(seg.seg_fchisq[1:]);
#                    min_chi2 = min(seg.seg_fchisq[1:]);
#                    max_chi2 = max(seg.seg_fchisq[1:]);
#
#                # Print the segment file line.
#                f_fseg.write("{0} {1} {2} {3} {4}\n".format(seg.seg_id,len(seg.seg_k),mean_chi2,min_chi2,max_chi2));
#
#                # Print the track file lines for each segment point: include the smeared hits.
#                for k,x0,y0,z0,p1p,p2p,p3p,p4p,chi2p,p1f,p2f,p3f,p4f,chi2f,cfxy,cftxy,edep in zip(seg.seg_k,seg.seg_x0,seg.seg_y0,seg.seg_z0,seg.seg_p1p,seg.seg_p2p,seg.seg_p3p,seg.seg_p4p,seg.seg_pchisq,seg.seg_p1f,seg.seg_p2f,seg.seg_p3f,seg.seg_p4f,seg.seg_fchisq,seg.seg_cfxy,seg.seg_cftxy,seg.seg_edep):
#                    if(isinstance(chi2f,KFVector)):
#                        chi2 = chi2f[2];
#                    else:
#                        chi2 = chi2f;
#                    f_ftrk.write("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17}\n".format(seg.seg_id,k,x0,y0,z0,p1p,p2p,p3p,p4p,chi2p,p1f,p2f,p3f,p4f,chi2f,cfxy,cftxy,edep));
#        return True

    def finalize(self):
        return

alex = Alex('alex')
kf = JJKalmanFilter()
alex.addalg(kf)
alex.nevts = 1
alex.run()
Esempio n. 6
0
#            for seg in segments:
#                
#                # Get the mean, min, and max chi2 values for each segment.
#                #  Set to -1 if the segment is not >= 3 points.
#                mean_chi2 = -1.; min_chi2 = -1.; max_chi2 = -1.;
#                if(len(seg.seg_k) >= 2):
#                    mean_chi2 = np.mean(seg.seg_fchisq[1:]);
#                    min_chi2 = min(seg.seg_fchisq[1:]);
#                    max_chi2 = max(seg.seg_fchisq[1:]);
#                
#                # Print the segment file line.
#                f_fseg.write("{0} {1} {2} {3} {4}\n".format(seg.seg_id,len(seg.seg_k),mean_chi2,min_chi2,max_chi2));
#                
#                # Print the track file lines for each segment point: include the smeared hits.
#                for k,x0,y0,z0,p1p,p2p,p3p,p4p,chi2p,p1f,p2f,p3f,p4f,chi2f,cfxy,cftxy,edep in zip(seg.seg_k,seg.seg_x0,seg.seg_y0,seg.seg_z0,seg.seg_p1p,seg.seg_p2p,seg.seg_p3p,seg.seg_p4p,seg.seg_pchisq,seg.seg_p1f,seg.seg_p2f,seg.seg_p3f,seg.seg_p4f,seg.seg_fchisq,seg.seg_cfxy,seg.seg_cftxy,seg.seg_edep):
#                    if(isinstance(chi2f,KFVector)):
#                        chi2 = chi2f[2];
#                    else:
#                        chi2 = chi2f;
#                    f_ftrk.write("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17}\n".format(seg.seg_id,k,x0,y0,z0,p1p,p2p,p3p,p4p,chi2p,p1f,p2f,p3f,p4f,chi2f,cfxy,cftxy,edep));
#        return True

    def finalize( self ):
        return

alex = Alex('alex')
kf   = JJKalmanFilter()
alex.addalg(kf)
alex.nevts = 1
alex.run()