luz.modules module¶
Custom PyTorch modules.
- class AdditiveAttention(d, d_attn, activation=None)¶
Bases:
torch.nn.modules.module.Module
Additive attention, from https://arxiv.org/abs/1409.0473.
Additive attention, from https://arxiv.org/abs/1409.0473.
- Parameters
d (
int
) – Feature length.d_attn (
int
) – Attention vector length.activation (
Optional
[Callable
[[Tensor
],Tensor
]]) – Activation function, by default None.
- forward(s, h, mask=None)¶
Compute forward pass.
- Parameters
s (
Tensor
) – Shape: \((N,d)\)h (
Tensor
) – Shape: \((N,d)\)mask (
Optional
[Tensor
]) – Mask tensor, by default None.
- Returns
Output tensor. Shape: \((1,N)\)
- Return type
torch.Tensor
- training: bool¶
- class AdditiveNodeAttention(d, d_attn, activation=None)¶
Bases:
torch.nn.modules.module.Module
Additive node attention on graphs. From https://arxiv.org/abs/1710.10903.
- Parameters
d (
int
) – Node feature length.d_attn (
int
) – Attention vector length.activation (
Optional
[Callable
[[Tensor
],Tensor
]]) – Activation function, by default None.
- forward(nodes, edge_index)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)
- Returns
Output tensor. Shape: \((N_{edges},N_{nodes})\)
- Return type
torch.Tensor
- training: bool¶
- class ApplyFunction(f)¶
Bases:
torch.nn.modules.module.Module
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(x)¶
Compute forward pass.
- Parameters
x (
Tensor
) – Input tensor.- Returns
Output tensor.
- Return type
torch.Tensor
- training: bool¶
- class AverageGraphPool(num_clusters)¶
Bases:
torch.nn.modules.module.Module
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(nodes, edges, edge_index, batch, assignment)¶
Pool graph by average node clustering.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edges (
Tensor
) – Edge features. Shape: \((N_{edges},d_e)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)batch (
Tensor
) – Nodewise batch tensor. Shape: \((N_{nodes},)\)assignment (
Tensor
) – Soft cluster assignment tensor. Shape: \((N_{nodes},N_{clusters})\)
- Return type
tuple
[Tensor
,Tensor
,Tensor
]- Returns
torch.Tensor – Pooled node features. Shape: \((N_{nodes}',d_v)\)
torch.Tensor – Pooled edge features. Shape: \((N_{edges}',d_e)\)
torch.Tensor – Pooled edge index tensor. Shape: \((2,N_{edges}')\)
- training: bool¶
- class Concatenate(dim=0)¶
Bases:
torch.nn.modules.module.Module
Concatenate tensors along a given dimension.
- Parameters
dim (
Optional
[int
]) – Concenation dimension, by default 0
- forward(*tensors)¶
Compute forward pass.
- Parameters
*args – Input tensors. Shape: \((N,*)\)
- Returns
Output tensor.
- Return type
torch.Tensor
- training: bool¶
- class Dense(*features, bias=True, activation=None)¶
Bases:
torch.nn.modules.module.Module
Dense feed-forward neural network.
- Parameters
*features – Number of features at each layer.
bias (
Optional
[bool
]) – If False, each layer will not learn an additive bias; by default True.activation (
Optional
[Callable
[[Tensor
],Tensor
]]) – Activation function.
- forward(x)¶
Compute forward pass.
- Parameters
x (
Tensor
) – Input tensor. Shape: \((N, *, H_{in})\)- Returns
Output tensor. Shape: \((N, *, H_{out})\)
- Return type
torch.Tensor
- training: bool¶
- class DenseRNN(input_size, hidden_size, output_size)¶
Bases:
torch.nn.modules.module.Module
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(x)¶
Compute forward pass.
- Parameters
x (
Tensor
) – Input tensor.- Returns
Output tensor.
- Return type
torch.Tensor
- training: bool¶
- class DotProductAttention¶
Bases:
torch.nn.modules.module.Module
Scaled dot product attention.
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(query, key, mask=None)¶
Compute forward pass.
- Parameters
query (
Tensor
) – Query vectors. Shape: \((N_{queries},d_q)\)key (
Tensor
) – Key vectors. Shape: \((N_{keys},d_q)\)mask (
Optional
[Tensor
]) – Mask tensor to ignore query-key pairs, by default None. Shape: \((N_{queries},N_{keys})\)
- Returns
Scaled dot product attention between each query and key vector. Shape: \((N_{queries},N_{keys})\)
- Return type
torch.Tensor
- training: bool¶
- class EdgeAggregateGlobal(d_v, d_e, d_u, d_attn, num_heads=1)¶
Bases:
torch.nn.modules.module.Module
Aggregates graph edges using multihead attention.
- Parameters
d_v (
int
) – Node feature length.d_e (
int
) – Edge feature length.d_u (
int
) – Global feature length.d_attn (
int
) – Attention vector length.num_heads (
Optional
[int
]) – Number of attention heads.
- forward(nodes, edges, edge_index, u, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)edges (
Tensor
) – Edge features, by default None. Shape: \((N_{edges},d_e)\)u (
Tensor
) – Global features, by default None. Shape: \((N_{batch},d_u)\)batch (
Tensor
) – Nodewise batch tensor, by default None. Shape: \((N_{nodes},)\)
- Returns
Output tensor. Shape: \((N_{batch},d_e)\)
- Return type
torch.Tensor
- training: bool¶
- class EdgeAggregateGlobalHead(d_v, d_e, d_u, d_attn)¶
Bases:
torch.nn.modules.module.Module
Aggregates graph edges using attention.
- Parameters
d_v (
int
) – Node feature length.d_e (
int
) – Edge feature length.d_u (
int
) – Global feature length.d_attn (
int
) – Attention vector length.
- forward(nodes, edges, edge_index, u, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edges (
Tensor
) – Edge features. Shape: \((N_{edges},d_e)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)u (
Tensor
) – Global features. Shape: \((N_{batch},d_u)\)batch (
Tensor
) – Nodewise batch tensor. Shape: \((N_{nodes},)\)
- Returns
Output tensor. Shape: \((N_{batch},d_e)\)
- Return type
torch.Tensor
- training: bool¶
- class EdgeAggregateLocal(d_v, d_e, d_u, d_attn, num_heads=1)¶
Bases:
torch.nn.modules.module.Module
Aggregates graph edges using multihead attention.
- Parameters
d_v (
int
) – Node feature length.d_e (
int
) – Edge feature length.d_u (
int
) – Global feature length.d_attn (
int
) – Attention vector length.num_heads (
Optional
[int
]) – Number of attention heads.
- forward(nodes, edges, edge_index, u, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)edges (
Tensor
) – Edge features, by default None. Shape: \((N_{edges},d_e)\)u (
Tensor
) – Global features, by default None. Shape: \((N_{batch},d_u)\)batch (
Tensor
) – Nodewise batch tensor, by default None. Shape: \((N_{nodes},)\)
- Returns
Output tensor. Shape: \((N_{nodes},d_e)\)
- Return type
torch.Tensor
- training: bool¶
- class EdgeAggregateLocalHead(d_v, d_e, d_u, d_attn, nodewise=True)¶
Bases:
torch.nn.modules.module.Module
Aggregates graph edges using attention.
- Parameters
d_v (
int
) – Node feature length.d_e (
int
) – Edge feature length.d_u (
int
) – Global feature length.d_attn (
int
) – Attention vector length.
- forward(nodes, edges, edge_index, u, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edges (
Tensor
) – Edge features. Shape: \((N_{edges},d_e)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)u (
Tensor
) – Global features. Shape: \((N_{batch},d_u)\)batch (
Tensor
) – Nodewise batch tensor. Shape: \((N_{nodes},)\)
- Returns
Output tensor. Shape: \((N_{nodes},d_e)\)
- Return type
torch.Tensor
- training: bool¶
- class ElmanRNN(input_size, hidden_size, num_layers=None, nonlinearity=None, bias=None, batch_first=None, dropout=None, bidirectional=None, h0=None)¶
Bases:
torch.nn.modules.module.Module
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(x)¶
Defines the computation performed at every call.
Should be overridden by all subclasses.
Note
Although the recipe for forward pass needs to be defined within this function, one should call the
Module
instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.
- training: bool¶
- class GraphConv(d_v, activation)¶
Bases:
torch.nn.modules.module.Module
Graph convolutional network from https://arxiv.org/abs/1609.02907.
- Parameters
d_v (
int
) – Node feature length.activation (
Callable
[[Tensor
],Tensor
]) – Activation function.
- forward(nodes, edge_index)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge indices. Shape: \((2,N_{edges})\)
- Returns
Output tensor. Shape: \((N_{nodes},d_v)\)
- Return type
torch.Tensor
- training: bool¶
- class GraphConvAttention(d_v, activation=None)¶
Bases:
torch.nn.modules.module.Module
Compute node attention weights using graph convolutional network.
- Parameters
d_v (
int
) – Node feature length.activation (
Optional
[Callable
[[Tensor
],Tensor
]]) – Activation function.
- forward(nodes, edge_index, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge indices. Shape: \((2,N_{edges})\)batch (
Tensor
) – Batch indices. Shape: \((N_{nodes},)\)
- Returns
Attention weights. Shape: \((N_{batch},N_{nodes})\)
- Return type
torch.Tensor
- training: bool¶
- class GraphNetwork(edge_model=None, node_model=None, global_model=None, num_layers=1)¶
Bases:
torch.nn.modules.module.Module
Graph Network from https://arxiv.org/abs/1806.01261.
[summary]
- Parameters
edge_model (
Optional
[Module
]) – Edge update network, by default None.node_model (
Optional
[Module
]) – Node update network, by default None.global_model (
Optional
[Module
]) – Global update network, by default None.num_layers (
Optional
[int
]) – Number of passes, by default 1.
- forward(nodes, edge_index, edges=None, u=None, batch=None)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)edges (
Optional
[Tensor
]) – Edge features, by default None. Shape: \((N_{edges},d_e)\)u (
Optional
[Tensor
]) – Global features, by default None. Shape: \((N_{batch},d_u)\)batch (
Optional
[Tensor
]) – Nodewise batch tensor, by default None. Shape: \((N_{nodes},)\)
- Return type
Tensor
- Returns
torch.Tensor – Output node feature tensor. Shape: \((N_{nodes},d_v)\)
torch.Tensor – Output edge index tensor. Shape: \((2,N_{edges})\)
torch.Tensor – Output edge feature tensor. Shape: \((N_{edges},d_e)\)
torch.Tensor – Output global feature tensor. Shape: \((N_{batch},d_u)\)
torch.Tensor – Output batch tensor. Shape: \((N_{nodes},)\)
- training: bool¶
- class MaskedSoftmax(dim=None)¶
Bases:
torch.nn.modules.module.Module
Compute softmax of a tensor using a mask.
Initializes internal Module state, shared by both nn.Module and ScriptModule.
- forward(x, mask=None)¶
Compute forward pass.
- Parameters
x (
Tensor
) – Argument of softmax.mask (
Optional
[Tensor
]) – Mask tensor with the same shape as x, by default None.
- Returns
Masked softmax of x.
- Return type
torch.Tensor
- training: bool¶
- class NodeAggregate(d_v, d_u, num_heads=1)¶
Bases:
torch.nn.modules.module.Module
Aggregates graph edges using multihead attention.
- Parameters
d_v (
int
) – Node feature length.d_u (
int
) – Global feature length.d_attn – Attention vector length.
num_heads (
Optional
[int
]) – Number of attention heads.
- forward(nodes, edges, edge_index, u, batch)¶
Compute forward pass.
- Parameters
nodes (
Tensor
) – Node features. Shape: \((N_{nodes},d_v)\)edge_index (
Tensor
) – Edge index tensor. Shape: \((2,N_{edges})\)edges (
Tensor
) – Edge features, by default None. Shape: \((N_{edges},d_e)\)u (
Tensor
) – Global features, by default None. Shape: \((N_{batch},d_u)\)batch (
Tensor
) – Nodewise batch tensor, by default None. Shape: \((N_{nodes},)\)
- Returns
Output tensor. Shape: \((N_{batch},d_v)\)
- Return type
torch.Tensor
- training: bool¶