from ROOT import TMVA, TFile, TCut, gROOT
from subprocess import call
from os.path import isfile
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
def create_model():
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=4))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=SGD(learning_rate=0.01), weighted_metrics=['accuracy', ])
model.save('modelClassification.keras')
model.summary()
def run():
with TFile.Open(
'TMVA_Classification_Keras.root',
'RECREATE')
as output,
TFile.Open(str(gROOT.GetTutorialDir()) +
'/machine_learning/data/tmva_class_example.root')
as data:
'!V:!Silent:Color:DrawProgressBar:Transformations=D,G:AnalysisType=Classification')
signal = data.Get('TreeS')
background = data.Get('TreeB')
for branch in signal.GetListOfBranches():
dataloader.AddVariable(branch.GetName())
dataloader.AddSignalTree(signal, 1.0)
dataloader.AddBackgroundTree(background, 1.0)
dataloader.PrepareTrainingAndTestTree(
TCut(
''),
'nTrain_Signal=4000:nTrain_Background=4000:SplitMode=Random:NormMode=NumEvents:!V')
factory.BookMethod(dataloader, TMVA.Types.kFisher, 'Fisher',
'!H:!V:Fisher:VarTransform=D,G')
factory.BookMethod(dataloader, TMVA.Types.kPyKeras, 'PyKeras',
'H:!V:VarTransform=D,G:FilenameModel=modelClassification.keras:FilenameTrainedModel=trainedModelClassification.keras:NumEpochs=20:BatchSize=32:LearningRateSchedule=10,0.01;20,0.005')
factory.TrainAllMethods()
factory.TestAllMethods()
factory.EvaluateAllMethods()
if __name__ == "__main__":
create_model()
run()
A specialized string object used for TTree selections.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
This is the main MVA steering class.
static void PyInitialize()
Initialize Python interpreter.