public void testSumGradLog () { Assignment alphaAssn = new Assignment (alpha, 1.0); double[] values = new double[] { 0.4, 0.1, 0.3, 0.2 }; Factor q = new TableFactor (vars, values); double grad = factor.sumGradLog (q, alpha, alphaAssn); assertEquals (-0.4, grad, 1e-5); }
public void testSumGradLog () { Assignment alphaAssn = new Assignment (alpha, 1.0); double[] values = new double[] { 0.4, 0.1, 0.3, 0.2 }; Factor q = new TableFactor (vars, values); double grad = factor.sumGradLog (q, alpha, alphaAssn); assertEquals (-0.4, grad, 1e-5); }
public double secondDerivative (Factor q, Variable param, Assignment theta) { double e_x = sumGradLog (q, param, theta); Factor q_xs = q.marginalize (xs); double e_x2 = 0.0; for (AssignmentIterator it = xs.assignmentIterator (); it.hasNext(); it.advance()) { Assignment assn = it.assignment (); if (!isAllEqual (assn)) { e_x2 += q_xs.value (it); } } return e_x2 - (e_x * e_x); }
public void testSumGradLog2 () { Assignment alphaAssn = new Assignment (alpha, 1.0); double[] values = new double[] { 0.4, 0.1, 0.3, 0.2 }; Factor q1 = new TableFactor (vars, values); Factor q2 = new TableFactor (new Variable(2), new double[] { 0.7, 0.3 }); Factor q = q1.multiply (q2); double grad = factor.sumGradLog (q, alpha, alphaAssn); assertEquals (-0.4, grad, 1e-5); }
public void testSumGradLog2 () { Assignment alphaAssn = new Assignment (alpha, 1.0); double[] values = new double[] { 0.4, 0.1, 0.3, 0.2 }; Factor q1 = new TableFactor (vars, values); Factor q2 = new TableFactor (new Variable(2), new double[] { 0.7, 0.3 }); Factor q = q1.multiply (q2); double grad = factor.sumGradLog (q, alpha, alphaAssn); assertEquals (-0.4, grad, 1e-5); }
public double secondDerivative (Factor q, Variable param, Assignment theta) { double e_x = sumGradLog (q, param, theta); Factor q_xs = q.marginalize (xs); double e_x2 = 0.0; for (AssignmentIterator it = xs.assignmentIterator (); it.hasNext(); it.advance()) { Assignment assn = it.assignment (); if (!isAllEqual (assn)) { e_x2 += q_xs.value (it); } } return e_x2 - (e_x * e_x); }
public double secondDerivative (Factor q, Variable param, Assignment theta) { double e_x = sumGradLog (q, param, theta); Factor q_xs = q.marginalize (xs); double e_x2 = 0.0; for (AssignmentIterator it = xs.assignmentIterator (); it.hasNext(); it.advance()) { Assignment assn = it.assignment (); if (!isAllEqual (assn)) { e_x2 += q_xs.value (it); } } return e_x2 - (e_x * e_x); }