ACRF.UnrolledVarSet clique = new ACRF.UnrolledVarSet (graph, this, vars, fv); graph.addClique (clique); numSkip++;
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext ();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; if (tidx == -1) continue; for (int vi = 0; vi < clique.size (); vi++) { Variable target = clique.get (vi); value += computeValueGradientForAssn (observations, clique, target);
private void recomputeFactors () { lastResids = new double [factors ().size ()]; for (Iterator it = cliques.iterator(); it.hasNext();) { UnrolledVarSet clique = (UnrolledVarSet) it.next(); AbstractTableFactor oldF = (AbstractTableFactor) clique.getFactor (); AbstractTableFactor newF = clique.tmpl.computeFactor (clique); double dist = Factors.distLinf ((AbstractTableFactor) oldF.duplicate ().normalize (), (AbstractTableFactor) newF.duplicate ().normalize ()); lastResids [getIndex (oldF)] = dist; oldF.setValues (newF.getLogValueMatrix ()); clique.tmpl.modifyPotential (this, clique, oldF); } }
ACRF.UnrolledVarSet vs = (ACRF.UnrolledVarSet) it.next (); Factor marg = inf.lookupMarginal (vs); for (AssignmentIterator assnIt = vs.assignmentIterator (); assnIt.hasNext (); assnIt.advance ()) { if (marg.value (assnIt) > wrongWrongThreshold) { Assignment assn = assnIt.assignment (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (isWrong2RightAssn (target, assn, var)) { int assnIdx = assn.singleIndex ();
int tidx = clique.getTemplate().index; if (tidx == -1) continue; int assnIdx = clique.lookupNumberOfAssignment (assn); expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
int tidx = clique.getTemplate().index; if (tidx == -1) continue; int assnIdx = clique.lookupNumberOfAssignment (assn); expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
ACRF.UnrolledVarSet vs = (ACRF.UnrolledVarSet) it.next (); Factor marg = inf.lookupMarginal (vs); for (AssignmentIterator assnIt = vs.assignmentIterator (); assnIt.hasNext (); assnIt.advance ()) { if (marg.value (assnIt) > wrongWrongThreshold) { Assignment assn = assnIt.assignment (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (isWrong2RightAssn (target, assn, var)) { int assnIdx = assn.singleIndex ();
int tidx = clique.getTemplate().index; if (tidx == -1) continue; int assnIdx = clique.lookupNumberOfAssignment (assn); expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
ACRF.UnrolledVarSet vs = (ACRF.UnrolledVarSet) it.next (); Factor marg = inf.lookupMarginal (vs); for (AssignmentIterator assnIt = vs.assignmentIterator (); assnIt.hasNext (); assnIt.advance ()) { if (marg.value (assnIt) > wrongWrongThreshold) { Assignment assn = assnIt.assignment (); for (int vi = 0; vi < vs.size (); vi++) { Variable var = vs.get (vi); if (isWrong2RightAssn (target, assn, var)) { int assnIdx = assn.singleIndex ();
ACRF.UnrolledVarSet clique = new ACRF.UnrolledVarSet (graph, this, vars, fv); graph.addClique (clique); numSkip++;
ACRF.UnrolledVarSet clique = new ACRF.UnrolledVarSet (graph, this, vars, fv); graph.addClique (clique); numSkip++;
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext ();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; if (tidx == -1) continue; for (int vi = 0; vi < clique.size (); vi++) { Variable target = clique.get (vi); value += computeValueGradientForAssn (observations, clique, target);
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next(); int tidx = clique.getTemplate().index; if (tidx == -1) continue; AssignmentIterator assnIt = clique.assignmentIterator (); int i = 0; while (assnIt.hasNext ()) { double marginal = Math.exp (ptl.logValue (assnIt) - logZ); expectations [tidx][i].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (i) != -1) defaultExpectations [tidx].incrementValue (i, marginal);
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext ();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next (); int tidx = clique.getTemplate ().index; if (tidx == -1) continue; int assn = clique.lookupAssignmentNumber (); constraints[tidx][assn].plusEqualsSparse (clique.getFv (), clique.size ()); if (defaultConstraints[tidx].location (assn) != -1) { defaultConstraints[tidx].incrementValue (assn, clique.size ()); WrongWrong ww = (WrongWrong) wwIt.next (); ACRF.UnrolledVarSet clique = ww.findVarSet (unrolled); int tidx = clique.getTemplate ().index; int wrong2rightId = ww.assnIdx; constraints[tidx][wrong2rightId].plusEqualsSparse (clique.getFv (), 1.0); if (defaultConstraints[tidx].location (wrong2rightId) != -1) { defaultConstraints[tidx].incrementValue (wrong2rightId, 1.0);
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next(); int tidx = clique.getTemplate().index; if (tidx == -1) continue; AssignmentIterator assnIt = clique.assignmentIterator (); int i = 0; while (assnIt.hasNext ()) { double marginal = Math.exp (ptl.logValue (assnIt) - logZ); expectations [tidx][i].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (i) != -1) defaultExpectations [tidx].incrementValue (i, marginal);
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext ();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; if (tidx == -1) continue; for (int vi = 0; vi < clique.size (); vi++) { Variable target = clique.get (vi); value += computeValueGradientForAssn (observations, clique, target);
for (Iterator it = unrolled.unrolledVarSetIterator (); it.hasNext ();) { ACRF.UnrolledVarSet clique = (ACRF.UnrolledVarSet) it.next (); int tidx = clique.getTemplate ().index; if (tidx == -1) continue; int assn = clique.lookupAssignmentNumber (); constraints[tidx][assn].plusEqualsSparse (clique.getFv (), clique.size ()); if (defaultConstraints[tidx].location (assn) != -1) { defaultConstraints[tidx].incrementValue (assn, clique.size ()); WrongWrong ww = (WrongWrong) wwIt.next (); ACRF.UnrolledVarSet clique = ww.findVarSet (unrolled); int tidx = clique.getTemplate ().index; int wrong2rightId = ww.assnIdx; constraints[tidx][wrong2rightId].plusEqualsSparse (clique.getFv (), 1.0); if (defaultConstraints[tidx].location (wrong2rightId) != -1) { defaultConstraints[tidx].incrementValue (wrong2rightId, 1.0);