public void LogForwardGesturesTest()
{
int[] labels;
double[][][] words;
var classifier = IndependentMarkovFunctionTest.CreateModel4(out words, out labels, false);
var function = new MarkovMultivariateFunction(classifier, includePriors: false);
var target = new HiddenConditionalRandomField<double[]>(function);
foreach (var word in words)
{
for (int c = 0; c < 3; c++)
{
var actual = Accord.Statistics.Models.Fields.ForwardBackwardAlgorithm.LogForward(
target.Function.Factors[c], word, c);
var expected = Accord.Statistics.Models.Markov.ForwardBackwardAlgorithm.LogForward(
classifier[c], word);
for (int i = 0; i < actual.GetLength(0); i++)
{
for (int j = 0; j < actual.GetLength(1); j++)
{
double a = actual[i, j];
double e = expected[i, j];
Assert.IsTrue(e.IsRelativelyEqual(a, 1e-10));
}
}
}
}
}