Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ml_dataloader_TensorFlow.py File Reference

Detailed Description

View in nbviewer Open in SWAN
Example of getting batches of events from a ROOT dataset into a basic TensorFlow workflow.

import ROOT
tree_name = "sig_tree"
file_name = str(ROOT.gROOT.GetTutorialDir()) + "/machine_learning/data/Higgs_data.root"
batch_size = 128
approx_batches_in_memory = 50
rdataframe = ROOT.RDataFrame(tree_name, file_name)
target = ["Type"]
# Returns two TF.Dataset for training and validation batches.
dl = ROOT.Experimental.ML.RDataLoader(
rdataframe,
batch_size=batch_size,
batches_in_memory=approx_batches_in_memory,
target=target,
shuffle=True,
drop_remainder=True,
)
ds_train, ds_valid = dl.train_test_split(test_size=0.3)
num_of_epochs = 2
# Datasets have to be repeated as many times as there are epochs
ds_train_repeated = ds_train.as_tensorflow().repeat(num_of_epochs)
ds_valid_repeated = ds_valid.as_tensorflow().repeat(num_of_epochs)
# Number of batches per epoch must be given for model.fit
train_batches_per_epoch = ds_train.num_batches
validation_batches_per_epoch = ds_valid.num_batches
# Get a list of the columns used for training
input_columns = ds_train.feature_columns
num_features = len(input_columns)
##############################################################################
# AI example
##############################################################################
# TensorFlow has to be imported after ROOT has initialized its interpreter, to avoid
# LLVM symbol clashes with TensorFlow>=2.20.0.
import tensorflow as tf # noqa: E402
# Define TensorFlow model
model = tf.keras.Sequential(
[
tf.keras.layers.Input(shape=(num_features,)),
tf.keras.layers.Dense(300, activation=tf.nn.tanh),
tf.keras.layers.Dense(300, activation=tf.nn.tanh),
tf.keras.layers.Dense(300, activation=tf.nn.tanh),
tf.keras.layers.Dense(1, activation=tf.nn.sigmoid),
]
)
loss_fn = tf.keras.losses.BinaryCrossentropy()
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(
ds_train_repeated,
steps_per_epoch=train_batches_per_epoch,
validation_data=ds_valid_repeated,
validation_steps=validation_batches_per_epoch,
epochs=num_of_epochs,
)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
Epoch 1/2
␛[1m 1/54␛[0m ␛[37m━━━━━━━━━━━━━━━━━━━━␛[0m ␛[1m40s␛[0m 768ms/step - accuracy: 0.1406 - loss: 0.8603␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m16/54␛[0m ␛[32m━━━━━␛[0m␛[37m━━━━━━━━━━━━━━━␛[0m ␛[1m0s␛[0m 4ms/step - accuracy: 0.9463 - loss: 0.0635 ␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m31/54␛[0m ␛[32m━━━━━━━━━━━␛[0m␛[37m━━━━━━━━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 0.9723 - loss: 0.0328␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m46/54␛[0m ␛[32m━━━━━━━━━━━━━━━━━␛[0m␛[37m━━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 0.9813 - loss: 0.0221␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m54/54␛[0m ␛[32m━━━━━━━━━━━━━━━━━━━━␛[0m␛[37m␛[0m ␛[1m1s␛[0m 6ms/step - accuracy: 0.9841 - loss: 0.0188 - val_accuracy: 1.0000 - val_loss: 1.1964e-06
Epoch 2/2
␛[1m 1/54␛[0m ␛[37m━━━━━━━━━━━━━━━━━━━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 1.0000 - loss: 1.1846e-06␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m18/54␛[0m ␛[32m━━━━━━␛[0m␛[37m━━━━━━━━━━━━━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 1.0000 - loss: 1.1453e-06␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m34/54␛[0m ␛[32m━━━━━━━━━━━━␛[0m␛[37m━━━━━━━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 1.0000 - loss: 1.1427e-06␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m50/54␛[0m ␛[32m━━━━━━━━━━━━━━━━━━␛[0m␛[37m━━␛[0m ␛[1m0s␛[0m 3ms/step - accuracy: 1.0000 - loss: 1.1381e-06␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈␈
␛[1m54/54␛[0m ␛[32m━━━━━━━━━━━━━━━━━━━━␛[0m␛[37m␛[0m ␛[1m0s␛[0m 4ms/step - accuracy: 1.0000 - loss: 1.1426e-06 - val_accuracy: 1.0000 - val_loss: 1.1362e-06
Author
Dante Niewenhuis

Definition in file ml_dataloader_TensorFlow.py.