Recursive Graph Neural Network (models.RecursiveGraphNeuralNetwork)

Import with:

from AnalysisG.models.RecursiveGraphNeuralNetwork import RecursiveGraphNeuralNetwork

RecursiveGraphNeuralNetwork

RecursiveGraphNeuralNetwork is a ModelTemplate subclass wrapping the recursivegraphneuralnetwork C++ class.

The model performs recursive message-passing over node and edge features using 8 sub-networks to simultaneously predict edge-level top assignments, node-level aggregated features, and event-level exotic resonance and number-of-tops outputs.

Architecture (from RecursiveGraphNeuralNetwork.cxx)

Constructor signature: recursivegraphneuralnetwork(int rep=1024, double drop_out=0.1)

Sub-network

Role

rnn_dx

Edge message network: (_dx + 2×_rep) (_rep×2) _rep; LayerNorm + SiLU + Dropout + Sigmoid

rnn_x

Node encoder: (_x + _rep) (_rep×2) _rep; LayerNorm + Dropout

rnn_merge

Hidden-state merge: (_rep×3) _rep; LayerNorm + SiLU + Dropout

rnn_update

Edge-prediction updater: (_output×2 + _rep×2) _output; LayerNorm + SiLU + Dropout

exotic_mlp

Exotic resonance head: (_x + _output) (_rep×2) _output; LayerNorm + Dropout

node_aggr_mlp

Node aggregation: _x _rep _x; LayerNorm + Dropout

ntops_mlp

Number-of-tops head: (_x + 4) _rep _x; LayerNorm + SiLU + ReLU

exo_mlp

Second exotic head (post-aggregation): same pattern as ntops_mlp

Architecture dimensions:

Field

Default

Meaning

_dx

26

Input edge-feature dimension (concatenated node features for both endpoints)

_x

5

Input node-feature dimension

_output

2

Output edge-prediction dimension (binary: same-top or not)

_rep

256

Internal hidden-state dimension (overridden by constructor argument)

Hyper-parameters (Python layer)

Property

Type

Description

drop_out

float

Dropout probability. Default 0.1.

res_mass

float

Target resonance mass [MeV] used as an auxiliary loss constraint. Default 0.0 (disabled).

is_mc

bool

Include MC-truth features in the input. Default True.

Usage

from AnalysisG import Analysis
from AnalysisG.models.RecursiveGraphNeuralNetwork import RecursiveGraphNeuralNetwork

ana = Analysis()
ana.AddModel(RecursiveGraphNeuralNetwork)
ana.Epochs = 20
ana.Start()

C++ Reference

class recursivegraphneuralnetwork : public model_template

Public Functions

recursivegraphneuralnetwork(int rep = 1024, double dpt = 0.1)
~recursivegraphneuralnetwork()
virtual model_template *clone() override

Create a default-constructed clone. Override in subclasses.

Returns:

New model instance.

virtual void forward(graph_t*) override

Execute one forward pass. Override in subclasses to implement the model computation.

Parameters:

data – Pointer to the input graph.

torch::Tensor message(torch::Tensor trk_i, torch::Tensor trk_j, torch::Tensor pmc, torch::Tensor pmc_i, torch::Tensor pmc_j, torch::Tensor hx_i, torch::Tensor hx_j)

Public Members

int _dx = 26
int _x = 5
int _output = 2
int _rep = 256
double res_mass = 0
double drop_out = 0.1
bool is_mc = true
torch::nn::Sequential *rnn_x = nullptr
torch::nn::Sequential *rnn_dx = nullptr
torch::nn::Sequential *rnn_merge = nullptr
torch::nn::Sequential *rnn_update = nullptr
torch::nn::Sequential *exotic_mlp = nullptr
torch::nn::Sequential *node_aggr_mlp = nullptr
torch::nn::Sequential *ntops_mlp = nullptr
torch::nn::Sequential *exo_mlp = nullptr