How do I use gaussian_pdf in Owl.Arr?
I'm struggling to figure out how to use the function gaussian_pdf : mu:arr -> sigma:arr -> arr -> arr in the Owl.Arr module. When I tried the following code in the top level (i.e. OCaml's REPL), it crashes due to a segmentation fault:
#require "owl";;
open Owl;;
let mu_arr = Arr.init [|2|] (fun _ -> 1.);;
Arr.set mu_arr [|1|] 4.;; (* Set the second element of mu_arr to 4. *)
let sigma_arr = Arr.init [|2|] (fun _ -> 0.1);;
let current_point = Arr.init [|2|] (fun _ -> 1.5);;
let result_arr = Arr.gaussian_pdf ~mu:mu_arr ~sigma:sigma_arr current_point;;
I managed to figure out how to use gaussian_rvs, but gaussian_pdf still eludes me. Thanks a lot in advance!
I don't get a segfault but I get nonsensical results (~1E-22). There must be a bug in Arr.gaussian_pdf. The scalar version Stats.gaussian_pdf works fine. I don't have time to chase this now but perhaps @jzstark can take a look?
Hi @ghennequin. It's interesting that you didn't get a segmentation fault. I think the low value in your result (~1E-22) makes sense because I accidentally set sigma to a very low value (0.1) in the above example.
Nonetheless, even if I use a larger (and more reasonable) value for sigma, I still get a segmentation fault. Specifically, the following simpler code produces a segmentation fault:
#require "owl";;
open Owl;;
let mu_arr = Arr.zeros [|2|];;
let sigma_arr = Arr.ones [|2|];;
let current_point = Arr.ones [|2|];;
let result_arr = Arr.gaussian_pdf ~mu:mu_arr ~sigma:sigma_arr current_point;;
My OS is Ubuntu.