Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tmva/sofie/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ parser.CheckModel("example_model.ONNX");
- **Tutorials**
- [TMVA_SOFIE_Inference](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_Inference.py)
- [TMVA_SOFIE_Keras](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_Keras.C)
- [TMVA_SOFIE_Keras_HiggsModel](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_Keras_HiggsModel.C)
- [TMVA_SOFIE_ONNX](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_ONNX.C)
- [TMVA_SOFIE_PyTorch](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_PyTorch.py)
- [TMVA_SOFIE_PyTorch_HiggsModel](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_PyTorch_HiggsModel.py)
- [TMVA_SOFIE_RDataFrame](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_RDataFrame.C)
- [TMVA_SOFIE_RDataFrame](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_RDataFrame.py)
- [TMVA_SOFIE_RDataFrame_JIT](https://github.com/root-project/root/blob/master/tutorials/machine_learning/TMVA_SOFIE_RDataFrame_JIT.C)
Expand Down
28 changes: 13 additions & 15 deletions tutorials/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -363,20 +363,20 @@ else()
# These SOFIE tutorials take models trained via PyMVA-PyKeras as input
if (NOT tmva-sofie OR NOT ROOT_KERAS_FOUND)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Keras.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Models.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Keras_HiggsModel.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame_JIT.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RSofieReader.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RSofieReader.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Inference.py)
endif()
if (NOT tmva-sofie OR NOT ROOT_TORCH_FOUND)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_PyTorch.py)
endif()
# These SOFIE tutorials take the ONNX HiggsModel trained with PyTorch as input
if (NOT tmva-sofie OR NOT ROOT_TORCH_FOUND OR NOT ROOT_ONNX_FOUND)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_ONNX.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Models.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_PyTorch_HiggsModel.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame_JIT.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RSofieReader.C)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_RDataFrame.py)
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_Inference.py)
endif()
#veto this tutorial since it is added directly
list(APPEND tmva_veto machine_learning/TMVA_SOFIE_GNN_Parser.py)
Expand Down Expand Up @@ -641,7 +641,7 @@ set (machine_learning-tmva004_RStandardScaler-depends tutorial-machine_learning-
set (machine_learning-pytorch-ApplicationClassificationPyTorch-depends tutorial-machine_learning-pytorch-ClassificationPyTorch-py)
set (machine_learning-pytorch-RegressionPyTorch-depends tutorial-machine_learning-pytorch-ApplicationClassificationPyTorch-py)
set (machine_learning-pytorch-ApplicationRegressionPyTorch-depends tutorial-machine_learning-pytorch-RegressionPyTorch-py)
set (machine_learning-TMVA_SOFIE_RDataFrame-depends tutorial-machine_learning-TMVA_SOFIE_Keras_HiggsModel-py)
set (machine_learning-TMVA_SOFIE_RDataFrame-depends tutorial-machine_learning-TMVA_SOFIE_PyTorch_HiggsModel-py)
set (machine_learning-TMVA_SOFIE_RDataFrame_JIT-depends tutorial-machine_learning-TMVA_SOFIE_RDataFrame)
set (machine_learning-TMVA_SOFIE_RSofieReader-depends tutorial-machine_learning-TMVA_SOFIE_RDataFrame_JIT)
set (machine_learning-TMVA_SOFIE_Inference-depends tutorial-machine_learning-TMVA_SOFIE_RSofieReader)
Expand Down Expand Up @@ -834,8 +834,8 @@ if(pyroot)
list(APPEND pyveto ${tmva_veto_py})
endif()

if (ROOT_KERAS_FOUND)
set (machine_learning-TMVA_SOFIE_RDataFrame-py-depends tutorial-machine_learning-TMVA_SOFIE_Keras_HiggsModel)
if (ROOT_TORCH_FOUND AND ROOT_ONNX_FOUND)
set (machine_learning-TMVA_SOFIE_RDataFrame-py-depends tutorial-machine_learning-TMVA_SOFIE_PyTorch_HiggsModel)
endif()

if(NOT tmva-pymva)
Expand Down Expand Up @@ -933,25 +933,23 @@ if(pyroot)
roofit/roofit/rf409_NumPyPandasToRooFit.py)

file(GLOB requires_keras RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
machine_learning/TMVA_SOFIE_Inference.py
machine_learning/TMVA_SOFIE_Models.py
machine_learning/TMVA_SOFIE_RDataFrame.py
machine_learning/keras/*.py
)
file(GLOB requires_torch RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
machine_learning/pytorch/*.py
machine_learning/ml_dataloader_PyTorch.py
machine_learning/ml_dataloader_resampling.py
machine_learning/ml_dataloader_Higgs_Classification.py
machine_learning/TMVA_SOFIE_Models.py
machine_learning/TMVA_SOFIE_PyTorch.py
machine_learning/TMVA_SOFIE_PyTorch_HiggsModel.py
)
file(GLOB requires_xgboost RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
machine_learning/tmva101_Training.py
machine_learning/tmva102_Testing.py # requires tmva101_Training.py
roofit/roofit/rf618_mixture_models.py
)
file(GLOB requires_sklearn RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
machine_learning/TMVA_SOFIE_Models.py
machine_learning/tmva101_Training.py # uses the xgboost sklearn plugin
machine_learning/tmva102_Testing.py # requires tmva101_Training.py
roofit/roofit/rf617_simulation_based_inference_multidimensional.py
Expand Down
26 changes: 11 additions & 15 deletions tutorials/machine_learning/TMVA_SOFIE_Inference.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
### \file
### \ingroup tutorial_ml
### \notebook -nodraw
### This macro provides an example of using a trained model with Keras
### This macro provides an example of using a trained model with PyTorch
### and make inference using SOFIE directly from Numpy
### This macro uses as input a Keras model generated with the
### TMVA_Higgs_Classification.C tutorial
### This macro uses as input an ONNX model generated with the
### TMVA_SOFIE_PyTorch_HiggsModel.py tutorial
### You need to run that macro before this one.
### In this case we are parsing the input file and then run the inference in the same
### macro making use of the ROOT JITing capability
Expand All @@ -20,32 +20,28 @@
import ROOT

# check if the input file exists
modelFile = "HiggsModel.keras"
modelFile = "HiggsModel.onnx"

if not exists(modelFile):
raise FileNotFoundError("You need to run TMVA_Higgs_Classification.C to generate the Keras trained model")
raise FileNotFoundError("You need to run TMVA_SOFIE_PyTorch_HiggsModel.py to generate the ONNX trained model")


# parse the input Keras model into RModel object
model = ROOT.TMVA.Experimental.SOFIE.PyKeras.Parse(modelFile)
# parse the input ONNX model into RModel object
parser = ROOT.TMVA.Experimental.SOFIE.RModelParser_ONNX()
model = parser.Parse(modelFile)

generatedHeaderFile = modelFile.replace(".keras",".hxx")
print("Generating inference code for the Keras model from ",modelFile,"in the header ", generatedHeaderFile)
generatedHeaderFile = modelFile.replace(".onnx", ".hxx")
print("Generating inference code for the ONNX model from ", modelFile, "in the header ", generatedHeaderFile)
#Generating inference code
model.Generate()
model.OutputGenerated(generatedHeaderFile)
model.PrintGenerated()

# now compile using ROOT JIT trained model
modelName = modelFile.replace(".keras","")
modelName = modelFile.replace(".onnx", "")
print("compiling SOFIE model ", modelName)
ROOT.gInterpreter.Declare('#include "' + generatedHeaderFile + '"')


generatedHeaderFile = modelFile.replace(".keras",".hxx")
print("Generating inference code for the Keras model from ",modelFile,"in the header ", generatedHeaderFile)
#Generating inference

inputFileName = "Higgs_data.root"
inputFile = str(ROOT.gROOT.GetTutorialDir()) + "/machine_learning/data/" + inputFileName

Expand Down
164 changes: 0 additions & 164 deletions tutorials/machine_learning/TMVA_SOFIE_Keras_HiggsModel.py

This file was deleted.

Loading
Loading