Module containing ONNX layer creator functions
Build a Duvenaud layer from an expanded-ONNX cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. "node_2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
||
| type(onnx_tensor_type), | intent(in) | :: | inputs(:) |
Parsed ONNX graph input tensors |
||
| integer, | intent(in) | :: | num_inputs |
Number of valid graph input entries |
Constructed Duvenaud layer
Build one dynamic LNO layer from an expanded-ONNX node cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. layer1) |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
Constructed dynamic LNO layer
Build one fixed LNO layer from an expanded-ONNX node cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. layer2) |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
Constructed fixed LNO layer
Build a Kipf GCN layer from an expanded-ONNX cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. "node_2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
||
| type(onnx_tensor_type), | intent(in) | :: | inputs(:) |
Parsed ONNX graph input tensors |
||
| integer, | intent(in) | :: | num_inputs |
Number of valid graph input entries |
Constructed Kipf GCN layer
Build one neural operator layer from an expanded-ONNX node cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. layer3) |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
Constructed neural operator layer
Build one spectral filter layer from an expanded-ONNX node cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. layer4) |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
Constructed spectral filter layer
Return true when the expanded-ONNX node cluster for prefix is a Duvenaud message-passing layer.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer prefix (e.g. "node_2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value: true when the cluster matches the Duvenaud pattern
Return true when the expanded-ONNX node cluster for prefix is a dynamic LNO.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Expanded-ONNX layer prefix (e.g. "layer1") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value
Return true when the expanded-ONNX node cluster for prefix is a fixed LNO.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Expanded-ONNX layer prefix (e.g. "layer2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value
Fixed LNO has MatMul_3 but not the Exp/Exp_1 pair of dynamic LNO
Return true when the expanded-ONNX node cluster for prefix is a Kipf GCN layer.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer prefix (e.g. "node_2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value: true when the cluster matches the Kipf GCN pattern
Return true when the expanded-ONNX node cluster for prefix is a neural operator.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Expanded-ONNX layer prefix (e.g. "layer3") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value
Neural operator has ReduceMean but not Exp/Exp_1 or MatMul_3
Return true when the expanded-ONNX node cluster for prefix is a spectral filter.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Expanded-ONNX layer prefix (e.g. "layer4") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Return value
Spectral filter has Mul but not Exp/Exp_1 or ReduceMean or MatMul_3
Build avgpool layer from attributes and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
ONNX node information |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | initialisers |
ONNX initialiser information |
|
| type(onnx_tensor_type), | intent(in), | dimension(:) | :: | value_info |
ONNX value info information |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Instance of the 2D convolutional layer
Build batchnorm layer from attributes and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
ONNX node information |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | initialisers |
ONNX initialiser information |
|
| type(onnx_tensor_type), | intent(in), | dimension(:) | :: | value_info |
ONNX value info information |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Instance of the batch normalisation layer
Build conv layer from attributes and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
ONNX node information |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | initialisers |
ONNX initialiser information |
|
| type(onnx_tensor_type), | intent(in), | dimension(:) | :: | value_info |
ONNX value info information |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Instance of the 2D convolutional layer
Build Duvenaud message-passing layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
GNN metadata key (e.g. "athena_gnn_node_1") |
||
| character(len=*), | intent(in) | :: | meta_value |
Semicolon-separated GNN metadata value string |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers (valid entries only) |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed Duvenaud message-passing layer
Build dynamic LNO layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
NOP metadata key/value pair |
||
| character(len=*), | intent(in) | :: | meta_value |
NOP metadata key/value pair |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers containing parameter tensors |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed dynamic LNO layer
Build fixed LNO layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
NOP metadata key/value pair |
||
| character(len=*), | intent(in) | :: | meta_value |
NOP metadata key/value pair |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers containing parameter tensors |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed fixed LNO layer
Build Kipf GCN layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
GNN metadata key (e.g. "athena_gnn_node_1") |
||
| character(len=*), | intent(in) | :: | meta_value |
Semicolon-separated GNN metadata value string |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers (valid entries only) |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed Kipf GCN layer
Build maxpool layer from attributes and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
ONNX node information |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | initialisers |
ONNX initialiser information |
|
| type(onnx_tensor_type), | intent(in), | dimension(:) | :: | value_info |
ONNX value info information |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Instance of the 2D convolutional layer
Build neural_operator layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
NOP metadata key/value pair |
||
| character(len=*), | intent(in) | :: | meta_value |
NOP metadata key/value pair |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers containing parameter tensors |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed neural operator layer
Build orthogonal attention layer from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
NOP metadata key/value pair |
||
| character(len=*), | intent(in) | :: | meta_value |
NOP metadata key/value pair |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers containing parameter tensors |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed orthogonal attention layer
Build orthogonal NOP block from ONNX metadata and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
NOP metadata key/value pair |
||
| character(len=*), | intent(in) | :: | meta_value |
NOP metadata key/value pair |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
ONNX initialisers containing parameter tensors |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Constructed orthogonal NOP layer
Build pad layer from attributes and return layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
ONNX node information |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | initialisers |
ONNX initialiser information |
|
| type(onnx_tensor_type), | intent(in), | dimension(:) | :: | value_info |
ONNX value info information |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
Instance of the pad layer
Detect the activation op used in a GNN layer cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix (e.g. "node_2") |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Detected ATHENA activation name
Return the index of a node with exact name match, or zero.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
||
| character(len=*), | intent(in) | :: | name |
Exact node name to search for |
Return value: index of the matching node, or zero if not found