Shared utility routines for NOP ONNX export/import.
Reconstruct the activation name from the tail of an expanded-ONNX NOP cluster.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix |
Layer node prefix without leading slash |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Parsed ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of valid node entries |
Reconstructed ATHENA activation name
Extract the node prefix from an athena_nop_node_X metadata key.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_key |
Return the index of a named initialiser, or zero when not found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name | |||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) | |||
| integer, | intent(in) | :: | num_inits |
Return the first initialiser referenced by a node's inputs.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_node_type), | intent(in) | :: | node |
Parsed ONNX node whose inputs may reference an initialiser |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of valid initialiser entries |
Return the node index matching one /layerN/suffix name, 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) | :: | prefix |
Layer prefix and trailing node name token |
||
| character(len=*), | intent(in) | :: | suffix |
Layer prefix and trailing node name token |
Emit a float32 initialiser with explicit dimensions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name | |||
| real(kind=real32), | intent(in) | :: | data(:) | |||
| integer, | intent(in) | :: | dims(:) | |||
| type(onnx_initialiser_type), | intent(inout) | :: | inits(:) | |||
| integer, | intent(inout) | :: | num_inits |
Emit a 2D float32 initialiser after converting to row-major order.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name | |||
| real(kind=real32), | intent(in) | :: | data_col_major(:) | |||
| integer, | intent(in) | :: | rows | |||
| integer, | intent(in) | :: | cols | |||
| type(onnx_initialiser_type), | intent(inout) | :: | inits(:) | |||
| integer, | intent(inout) | :: | num_inits |
Emit the common NOP input transpose.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix | |||
| character(len=*), | intent(in) | :: | input_name | |||
| type(onnx_node_type), | intent(inout) | :: | nodes(:) | |||
| integer, | intent(inout) | :: | num_nodes | |||
| character(len=*), | intent(in) | :: | output_name |
Build the metadata entry required to reconstruct a NOP layer.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_layer_type), | intent(in) | :: | layer | |||
| character(len=*), | intent(in) | :: | prefix | |||
| character(len=4096), | intent(inout) | :: | metadata(:) | |||
| integer, | intent(inout) | :: | num_meta |
Emit the common transpose and optional activation at the end of a NOP.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | prefix | |||
| character(len=*), | intent(in) | :: | activation_name | |||
| logical, | intent(in) | :: | is_last_layer | |||
| character(len=*), | intent(in) | :: | input_name | |||
| type(onnx_node_type), | intent(inout) | :: | nodes(:) | |||
| integer, | intent(inout) | :: | num_nodes | |||
| character(len=128), | intent(out) | :: | final_output |
Reconstruct dynamic LNO poles from exported encoder/decoder arguments.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(onnx_initialiser_type), | intent(in) | :: | e_args_init | |||
| type(onnx_initialiser_type), | intent(in) | :: | d_args_init | |||
| integer, | intent(in) | :: | num_inputs | |||
| integer, | intent(in) | :: | num_outputs | |||
| real(kind=real32), | intent(out) | :: | poles(:) |
Load a parameter from ONNX initialisers into a diffstruc array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(inout) | :: | param | |||
| character(len=*), | intent(in) | :: | prefix | |||
| character(len=*), | intent(in) | :: | suffix | |||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) | |||
| integer, | intent(in) | :: | num_inits | |||
| integer, | intent(in) | :: | dims(2) |
Copy a row-major ONNX matrix initialiser into a diffstruc parameter.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(inout) | :: | param |
Destination diffstruc parameter tensor |
||
| type(onnx_initialiser_type), | intent(in) | :: | init |
Row-major ONNX initialiser data |
||
| integer, | intent(in) | :: | rows |
Matrix shape |
||
| integer, | intent(in) | :: | cols |
Matrix shape |
Parse common NOP hyperparameters from metadata value string.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | meta_value | |||
| integer, | intent(inout) | :: | num_inputs | |||
| integer, | intent(inout) | :: | num_outputs | |||
| integer, | intent(inout) | :: | num_modes | |||
| logical, | intent(inout) | :: | use_bias | |||
| character(len=64), | intent(inout) | :: | activation_name |