Write initialisers array to JSON with base64-encoded rawData
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | unit |
Output unit receiving the JSON text |
||
| type(onnx_initialiser_type), | intent(in), | dimension(:) | :: | inits |
Initialiser collection to serialise |
|
| integer, | intent(in) | :: | num_inits |
Number of populated initialisers in the collection |
subroutine write_json_initialisers(unit, inits, num_inits) !! Write initialisers array to JSON with base64-encoded rawData implicit none ! Arguments integer, intent(in) :: unit !! Output unit receiving the JSON text type(onnx_initialiser_type), intent(in), dimension(:) :: inits !! Initialiser collection to serialise integer, intent(in) :: num_inits !! Number of populated initialisers in the collection ! Local variables integer :: i, j, n !! Initialiser index, dimension index, and raw element count character(:), allocatable :: raw_b64 !! Base64-encoded raw tensor payload write(unit, '(A)') ' "initializer": [' do i = 1, num_inits write(unit, '(A)') ' {' ! Dims if(allocated(inits(i)%dims))then write(unit, '(A)', advance='no') ' "dims": [' do j = 1, size(inits(i)%dims) if(j .gt. 1) write(unit, '(A)', advance='no') ', ' write(unit, '("""",I0,"""")' , advance='no') inits(i)%dims(j) end do write(unit, '(A)') '],' end if ! Data type write(unit, '(A,I0,A)') ' "dataType": ', inits(i)%data_type, ',' ! Name write(unit, '(A,A,A)') ' "name": "', & trim(adjustl(inits(i)%name)), '",' ! Raw data (base64 encoded) if(allocated(inits(i)%data))then n = size(inits(i)%data) call encode_float32_base64_alloc(inits(i)%data, n, raw_b64) write(unit, '(A,A,A)') ' "rawData": "', raw_b64, '"' else if(allocated(inits(i)%int_data))then n = size(inits(i)%int_data) call encode_int64_base64_alloc(inits(i)%int_data, n, raw_b64) write(unit, '(A,A,A)') ' "rawData": "', raw_b64, '"' else write(unit, '(A)') ' "rawData": ""' end if if(i .lt. num_inits)then write(unit, '(A)') ' },' else write(unit, '(A)') ' }' end if end do write(unit, '(A)') ' ]' end subroutine write_json_initialisers