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))
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
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()
""" 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()
# 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()
# 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()