Belle II Software  light-2403-persian
GraFEIModel Class Reference
Inheritance diagram for GraFEIModel:
Collaboration diagram for GraFEIModel:

Public Member Functions

def __init__ (self, nfeat_in_dim, efeat_in_dim, gfeat_in_dim, edge_classes=6, x_classes=7, hidden_layer_dim=128, num_hid_layers=1, num_ML=1, dropout=0.0, global_layer=True, **kwargs)
 
def forward (self, batch)
 

Public Attributes

 first_ML
 First MetaLayer.
 
 ML_list
 Intermediate MetaLayers.
 
 last_ML
 Output MetaLayer.
 

Detailed Description

Actual implementation of the model,
based on the
`MetaLayer <https://pytorch-geometric.readthedocs.io/en/latest/generated/torch_geometric.nn.models.MetaLayer.html>`_
class.

.. seealso::
    `Relational inductive biases, deep learning, and graph networks <https://arxiv.org/abs/1806.01261>`_

The network is composed of:

1. A first MetaLayer to increase the number of nodes and edges features;
2. A number of intermediate MetaLayers (tunable in config file);
3. A last MetaLayer to decrease the number of node and edge features to the desired output dimension.

.. figure:: figs/graFEI.png
    :width: 42em
    :align: center

Each MetaLayer is in turn composed of `EdgeLayer`, `NodeLayer` and `GlobalLayer` sub-blocks.

Args:
    nfeat_in_dim (int): Node features dimension (number of input node features).
    efeat_in_dim (int): Edge features dimension (number of input edge features).
    gfeat_in_dim (int): Global features dimension (number of input global features).
    edge_classes (int): Edge features output dimension (i.e. number of different edge labels in the LCAS matrix).
    x_classes (int): Node features output dimension (i.e. number of different mass hypotheses).
    hidden_layer_dim (int): Intermediate features dimension (same for node, edge and global).
    num_hid_layers (int): Number of hidden layers in every MetaLayer.
    num_ML (int): Number of intermediate MetaLayers.
    droput (float): Dropout rate :math:`r \\in [0,1]`.
    global_layer (bool): Whether to use global layer.

:return: Node, edge and global features after model evaluation.
:rtype: tuple(`Tensor <https://pytorch.org/docs/stable/tensors.html#torch.Tensor>`_)

Definition at line 15 of file geometric_network.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  nfeat_in_dim,
  efeat_in_dim,
  gfeat_in_dim,
  edge_classes = 6,
  x_classes = 7,
  hidden_layer_dim = 128,
  num_hid_layers = 1,
  num_ML = 1,
  dropout = 0.0,
  global_layer = True,
**  kwargs 
)
Initialization.

Definition at line 53 of file geometric_network.py.

66  ):
67  """
68  Initialization.
69  """
70  super(GraFEIModel, self).__init__()
71 
72 
73  self.first_ML = MetaLayer(
74  EdgeLayer(
75  nfeat_in_dim,
76  efeat_in_dim,
77  gfeat_in_dim,
78  hidden_layer_dim,
79  hidden_layer_dim,
80  num_hid_layers,
81  dropout,
82  ),
83  NodeLayer(
84  nfeat_in_dim,
85  hidden_layer_dim,
86  gfeat_in_dim,
87  hidden_layer_dim,
88  hidden_layer_dim,
89  num_hid_layers,
90  dropout,
91  ),
92  GlobalLayer(
93  hidden_layer_dim,
94  hidden_layer_dim,
95  gfeat_in_dim,
96  hidden_layer_dim,
97  hidden_layer_dim,
98  num_hid_layers,
99  dropout,
100  )
101  if global_layer
102  else None,
103  )
104 
105 
106  self.ML_list = torch.nn.ModuleList(
107  [
108  MetaLayer(
109  EdgeLayer(
110  hidden_layer_dim,
111  hidden_layer_dim,
112  hidden_layer_dim if global_layer else 0,
113  hidden_layer_dim,
114  hidden_layer_dim,
115  num_hid_layers,
116  dropout,
117  ),
118  NodeLayer(
119  hidden_layer_dim,
120  hidden_layer_dim,
121  hidden_layer_dim if global_layer else 0,
122  hidden_layer_dim,
123  hidden_layer_dim,
124  num_hid_layers,
125  dropout,
126  ),
127  GlobalLayer(
128  hidden_layer_dim,
129  hidden_layer_dim,
130  hidden_layer_dim,
131  hidden_layer_dim,
132  hidden_layer_dim,
133  num_hid_layers,
134  dropout,
135  )
136  if global_layer
137  else None,
138  )
139  for _ in range(num_ML)
140  ]
141  )
142 
143 
144  self.last_ML = MetaLayer(
145  EdgeLayer(
146  hidden_layer_dim,
147  hidden_layer_dim,
148  hidden_layer_dim if global_layer else 0,
149  hidden_layer_dim,
150  edge_classes,
151  num_hid_layers,
152  dropout,
153  normalize=False, # Do not normalize output layer
154  ),
155  NodeLayer(
156  hidden_layer_dim,
157  edge_classes,
158  hidden_layer_dim if global_layer else 0,
159  hidden_layer_dim,
160  x_classes,
161  num_hid_layers,
162  dropout,
163  normalize=False, # Do not normalize output layer
164  ),
165  GlobalLayer(
166  x_classes,
167  edge_classes,
168  hidden_layer_dim,
169  hidden_layer_dim,
170  1,
171  num_hid_layers,
172  dropout,
173  normalize=False, # Do not normalize output layer
174  )
175  if global_layer
176  else None,
177  )
178 

Member Function Documentation

◆ forward()

def forward (   self,
  batch 
)
Called internally by PyTorch to propagate the input through the network.

Definition at line 179 of file geometric_network.py.


The documentation for this class was generated from the following file: