Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ApplicationRegressionPyTorch.py
Go to the documentation of this file.
1#!/usr/bin/env python
2## \file
3## \ingroup tutorial_tmva_pytorch
4## \notebook -nodraw
5## This tutorial shows how to apply a trained model to new data (regression).
6##
7## \macro_code
8##
9## \date 2020
10## \author Anirudh Dagar <anirudhdagar6@gmail.com> - IIT, Roorkee
11
12
13# PyTorch has to be imported before ROOT to avoid crashes because of clashing
14# std::regexp symbols that are exported by cppyy.
15# See also: https://github.com/wlav/cppyy/issues/227
16import torch
17
18from ROOT import TMVA, TFile, TString
19from array import array
20from subprocess import call
21from os.path import isfile
22
23
24# Setup TMVA
27reader = TMVA.Reader("Color:!Silent")
28
29
30# Load data
32data = TFile.Open("http://root.cern.ch/files/tmva_reg_example.root", "CACHEREAD")
33if data is None:
34 raise FileNotFoundError("Input file cannot be downloaded - exit")
35
36tree = data.Get('TreeR')
37
38branches = {}
39for branch in tree.GetListOfBranches():
40 branchName = branch.GetName()
41 branches[branchName] = array('f', [-999])
42 tree.SetBranchAddress(branchName, branches[branchName])
43 if branchName != 'fvalue':
44 reader.AddVariable(branchName, branches[branchName])
45
46
47# Book methods
48reader.BookMVA('PyTorch', TString('dataset/weights/TMVARegression_PyTorch.weights.xml'))
49
50
51# Define predict function
52def predict(model, test_X, batch_size=32):
53 # Set to eval mode
54 model.eval()
55
56 test_dataset = torch.utils.data.TensorDataset(torch.Tensor(test_X))
57 test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
58
59 predictions = []
60 with torch.no_grad():
61 for i, data in enumerate(test_loader):
62 X = data[0]
63 outputs = model(X)
64 predictions.append(outputs)
65 preds = torch.cat(predictions)
66
67 return preds.numpy()
68
69load_model_custom_objects = {"optimizer": None, "criterion": None, "train_func": None, "predict_func": predict}
70
71
72# Print some example regressions
73print('Some example regressions:')
74for i in range(20):
75 tree.GetEntry(i)
76 print('True/MVA value: {}/{}'.format(branches['fvalue'][0],reader.EvaluateMVA('PyTorch')))
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 format
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Definition TFile.h:323
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.
Definition TFile.cxx:4053
static void PyInitialize()
Initialize Python interpreter.
The Reader class serves to use the MVAs in a specific analysis context.
Definition Reader.h:64
static Tools & Instance()
Definition Tools.cxx:71
Basic string class.
Definition TString.h:139