torch_geometric.nn.conv.GeneralConv
- class GeneralConv(in_channels: Union[int, Tuple[int, int]], out_channels: Optional[int], in_edge_channels: Optional[int] = None, aggr: str = 'add', skip_linear: str = False, directed_msg: bool = True, heads: int = 1, attention: bool = False, attention_type: str = 'additive', l2_normalize: bool = False, bias: bool = True, **kwargs)[source]
Bases:
MessagePassing
A general GNN layer adapted from the “Design Space for Graph Neural Networks” paper.
- Parameters:
in_channels (int or tuple) – Size of each input sample, or
-1
to derive the size from the first input(s) to the forward method. A tuple corresponds to the sizes of source and target dimensionalities.out_channels (int) – Size of each output sample.
in_edge_channels (int, optional) – Size of each input edge. (default:
None
)aggr (str, optional) – The aggregation scheme to use (
"add"
,"mean"
,"max"
). (default:"mean"
)skip_linear (bool, optional) – Whether apply linear function in skip connection. (default:
False
)directed_msg (bool, optional) – If message passing is directed; otherwise, message passing is bi-directed. (default:
True
)heads (int, optional) – Number of message passing ensembles. If
heads > 1
, the GNN layer will output an ensemble of multiple messages. If attention is used (attention=True
), this corresponds to multi-head attention. (default:1
)attention (bool, optional) – Whether to add attention to message computation. (default:
False
)attention_type (str, optional) – Type of attention:
"additive"
,"dot_product"
. (default:"additive"
)l2_normalize (bool, optional) – If set to
True
, output features will be \(\ell_2\)-normalized, i.e., \(\frac{\mathbf{x}^{\prime}_i} {\| \mathbf{x}^{\prime}_i \|_2}\). (default:False
)bias (bool, optional) – If set to
False
, the layer will not learn an additive bias. (default:True
)**kwargs (optional) – Additional arguments of
torch_geometric.nn.conv.MessagePassing
.
- Shapes:
input: node features \((|\mathcal{V}|, F_{in})\) or \(((|\mathcal{V_s}|, F_{s}), (|\mathcal{V_t}|, F_{t}))\) if bipartite, edge indices \((2, |\mathcal{E}|)\), edge attributes \((|\mathcal{E}|, D)\) (optional)
output: node features \((|\mathcal{V}|, F_{out})\) or \((|\mathcal{V}_t|, F_{out})\) if bipartite