I have 2 variable of Gaussian formed from some factors, and I would like to form a Variable of bivariate Gaussian from them.
let a = Variable.GaussianFromMeanAndVariance(0.0, 1.0)
let b = Variable.GaussianFromMeanAndVariance(1.0, 2.0)
let range = Range 2
let x = Variable.Array range
x.[0] <- a
x.[1] <- b
printfn "%A" (engine.Infer x)
let y = Variable.Vector(x)
printfn "%A" (engine.Infer y)
The above doesn't work.
I know if I have a VariableArray<double>, then I can simply use Variable.Vector.
But here I have 2 Variables instead of a Variable Array
Update:
I got a workaround, it is quite ugly, and maybe very inefficient.
let a = Variable.GaussianFromMeanAndVariance(0.0, 1.0)
let b = Variable.GaussianFromMeanAndVariance(1.0, 2.0)
let range = Range 2
let x = Variable.Array<double> range
using(Variable.ForEach range) (fun rangeBlock -> (Variable.IfBlock (rangeBlock.Index == 0)) (fun _ -> x.[range] <- a) (fun _ -> x.[range] <- b))
printfn "%A" (engine.Infer x)
let y = Variable.Vector(x)
printfn "%A" (engine.Infer y)