14torch.manual_seed(seed)
20def make_df(b1_expr, num_events):
24df_major = make_df(
"(int) 2 * rdfentry_", 100000)
25df_minor = make_df(
"(int) 2 * rdfentry_ + 1", 1000)
30loss_fn = torch.nn.BCEWithLogitsLoss()
34def train_model(model, optimizer, dataloader):
35 train, val = dataloader.train_test_split(test_size=0.2)
36 for _
in range(num_epochs):
41 for X, y
in train.as_torch():
44 loss = loss_fn(outputs, y)
48 preds = (outputs > 0.5).float()
49 train_correct += (preds == y).
sum().item()
50 train_total += y.size(0)
51 train_losses.append(loss.item())
53 f
"Training => Accuracy: {int(train_correct / train_total * 100000) / 100000}; Loss: {int(sum(train_losses) / len(train_losses) * 100000) / 100000}"
58 for X, y
in val.as_torch():
61 loss = loss_fn(outputs, y)
63 preds = (outputs > 0.5).float()
64 val_correct += (preds == y).
sum().item()
65 val_total += y.size(0)
66 val_losses.append(loss.item())
69 f
"Validation => Accuracy: {int(val_correct / val_total * 100000) / 100000}; Loss: {int(sum(val_losses) / len(val_losses) * 100000) / 100000}\n"
75dl_oversampled = ROOT.Experimental.ML.RDataLoader(
77 batch_size=batch_size,
81 sampling_type=
"oversampling",
85oversampling_model = torch.nn.Linear(1, 1)
86oversampling_optimizer = torch.optim.Adam(oversampling_model.parameters())
88print(
"Training with oversampling:")
89train_model(oversampling_model, oversampling_optimizer, dl_oversampled)
RInterface< Proxied > Define(std::string_view name, F expression, const ColumnNames_t &columns={})
Define a new column.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
static uint64_t sum(uint64_t i)