Hi, Infer.Net People,
I know Factor "AllTrue" or "Sum" is not supported in Gibbs Sampling, but I do want some way to summarize a VariableArray to a single value using Gibbs Sampling. Because Gibbs sampling shows
much better and robust performance in my model, switching to EP or VMP is not a option.
I tried to implement the Sum Operation using similar way as
public Variable<double> Sum(VariableArray<double> array)
{
Range n = array.Range;
var SumUpTo = Variable.Array<double>(n).Named("SumUpTo");
using (var fb = Variable.ForEach(n))
{
var i = fb.Index;
using (Variable.Case(i, 0))
{
SumUpTo[i] = Variable.Copy(array[i]);
}
using (Variable.If(i > 0))
{
SumUpTo[i] = SumUpTo[i - 1]+ array[i];
}
}
var s= Variable.Copy(SumUpTo[((Variable<int>)n.Size) - 1]);
return s;
}
But a error "Internal: schedule splits group 169 " pop out.
Thank you for any help in advance!