A fork of mtelver's day10 project
at main2 40 lines 1.2 kB view raw
1open Js_of_ocaml 2open Onnxrt 3 4let log msg = 5 let el = Dom_html.getElementById "output" in 6 let prev = 7 Js.to_string (Js.Opt.get el##.textContent (fun () -> Js.string "")) 8 in 9 el##.textContent := Js.some (Js.string (prev ^ msg ^ "\n")) 10 11let () = 12 Lwt.async @@ fun () -> 13 let open Lwt.Syntax in 14 log "Creating tensors..."; 15 let a_data = 16 Bigarray.Array1.of_array Bigarray.float32 Bigarray.c_layout 17 [| 1.0; 2.0; 3.0 |] 18 in 19 let b_data = 20 Bigarray.Array1.of_array Bigarray.float32 Bigarray.c_layout 21 [| 4.0; 5.0; 6.0 |] 22 in 23 let a = Tensor.of_bigarray1 Dtype.Float32 a_data ~dims:[| 3 |] in 24 let b = Tensor.of_bigarray1 Dtype.Float32 b_data ~dims:[| 3 |] in 25 log "Loading model..."; 26 let* session = Session.create "add.onnx" () in 27 log "Running inference..."; 28 let* outputs = Session.run session [ ("A", a); ("B", b) ] in 29 let c = List.assoc "C" outputs in 30 let c_data = Tensor.to_bigarray1_exn Dtype.Float32 c in 31 log 32 (Printf.sprintf "Result C = [%g, %g, %g]" (Bigarray.Array1.get c_data 0) 33 (Bigarray.Array1.get c_data 1) 34 (Bigarray.Array1.get c_data 2)); 35 Tensor.dispose a; 36 Tensor.dispose b; 37 Tensor.dispose c; 38 let* () = Session.release session in 39 log "Done!"; 40 Lwt.return_unit