Create one GNN or NOP layer from metadata and append it to the network.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(network_type), | intent(inout) | :: | network |
Network receiving the created layer |
||
| character(len=*), | intent(in) | :: | meta_key |
Metadata key/value pair describing one layer |
||
| character(len=*), | intent(in) | :: | meta_value |
Metadata key/value pair describing one layer |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Parsed ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of initialisers and effective verbosity level |
||
| integer, | intent(in) | :: | verbose_ |
Number of initialisers and effective verbosity level |
subroutine add_gnn_layer_from_metadata(network, meta_key, meta_value, inits, & num_inits, verbose_) !! Create one GNN or NOP layer from metadata and append it to the network. use athena__base_layer, only: base_layer_type use athena__container_layer, only: list_of_onnx_meta_layer_creators implicit none ! Arguments type(network_type), intent(inout) :: network !! Network receiving the created layer character(*), intent(in) :: meta_key, meta_value !! Metadata key/value pair describing one layer type(onnx_initialiser_type), intent(in) :: inits(:) !! Parsed ONNX initialisers integer, intent(in) :: num_inits, verbose_ !! Number of initialisers and effective verbosity level ! Local variables character(64) :: subtype_name !! Parsed subtype token from metadata payload integer :: i, layer_index !! Creator search index and selected creator slot call extract_gnn_subtype(meta_value, subtype_name) layer_index = 0 do i = 1, size(list_of_onnx_meta_layer_creators) if(trim(list_of_onnx_meta_layer_creators(i)%layer_subtype) .eq. & trim(subtype_name))then layer_index = i exit end if end do if(layer_index .eq. 0)then if(index(trim(meta_key), 'athena_nop_') .gt. 0)then write(*,*) 'ERROR: Unknown NOP subtype: ', trim(subtype_name) else write(*,*) 'ERROR: Unknown GNN subtype: ', trim(subtype_name) end if return end if block class(base_layer_type), allocatable :: meta_layer meta_layer = list_of_onnx_meta_layer_creators(layer_index)%create_ptr( & meta_key, meta_value, inits(1:num_inits), verbose_) call network%add(meta_layer) end block end subroutine add_gnn_layer_from_metadata