private void collectConstraintsForInstance (InstanceList ilist, int inum) { Instance inst = ilist.get (inum); ACRF.UnrolledGraph unrolled = new ACRF.UnrolledGraph (inst, templates, null, false); 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 ()); if (defaultConstraints[tidx].location (assn) != -1) defaultConstraints [tidx].incrementValue (assn, 1.0); } }
constraints[tidx][assn].plusEqualsSparse (clique.getFv (), clique.size ()); if (defaultConstraints[tidx].location (assn) != -1) { defaultConstraints[tidx].incrementValue (assn, clique.size ()); 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);
constraints[tidx][assn].plusEqualsSparse (clique.getFv (), clique.size ()); if (defaultConstraints[tidx].location (assn) != -1) { defaultConstraints[tidx].incrementValue (assn, clique.size ()); 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);
expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
expectations [tidx][assnIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (assnIdx) != -1) defaultExpectations [tidx].incrementValue (assnIdx, marginal);
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);
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);
constraints[tidx][assn].plusEqualsSparse (clique.getFv (), clique.size ()); if (defaultConstraints[tidx].location (assn) != -1) { defaultConstraints[tidx].incrementValue (assn, clique.size ()); 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);
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);
private double computeValueGradientForAssn (Assignment observations, ACRF.UnrolledVarSet clique, Variable target) { numCvgaCalls++; Timing timing = new Timing (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; Assignment cliqueAssn = Assignment.restriction (observations, clique); int M = target.getNumOutcomes (); double[] vals = new double [M]; int[] singles = new int [M]; for (int assnIdx = 0; assnIdx < M; assnIdx++) { cliqueAssn.setValue (target, assnIdx); vals[assnIdx] = computeLogFactorValue (cliqueAssn, tmpl, clique.getFv ()); singles[assnIdx] = cliqueAssn.singleIndex (); } double logZ = Maths.sumLogProb (vals); for (int assnIdx = 0; assnIdx < M; assnIdx++) { double marginal = Math.exp (vals[assnIdx] - logZ); int expIdx = singles[assnIdx]; expectations[tidx][expIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (expIdx) != -1) { defaultExpectations[tidx].incrementValue (expIdx, marginal); } } int observedVal = observations.get (target); timePerCvgaCall += timing.elapsedTime (); return vals[observedVal] - logZ; }
private double computeValueGradientForAssn (Assignment observations, ACRF.UnrolledVarSet clique, Variable target) { numCvgaCalls++; Timing timing = new Timing (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; Assignment cliqueAssn = Assignment.restriction (observations, clique); int M = target.getNumOutcomes (); double[] vals = new double [M]; int[] singles = new int [M]; for (int assnIdx = 0; assnIdx < M; assnIdx++) { cliqueAssn.setValue (target, assnIdx); vals[assnIdx] = computeLogFactorValue (cliqueAssn, tmpl, clique.getFv ()); singles[assnIdx] = cliqueAssn.singleIndex (); } double logZ = Maths.sumLogProb (vals); for (int assnIdx = 0; assnIdx < M; assnIdx++) { double marginal = Math.exp (vals[assnIdx] - logZ); int expIdx = singles[assnIdx]; expectations[tidx][expIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (expIdx) != -1) { defaultExpectations[tidx].incrementValue (expIdx, marginal); } } int observedVal = observations.get (target); timePerCvgaCall += timing.elapsedTime (); return vals[observedVal] - logZ; }
private double computeValueGradientForAssn (Assignment observations, ACRF.UnrolledVarSet clique, Variable target) { numCvgaCalls++; Timing timing = new Timing (); ACRF.Template tmpl = clique.getTemplate (); int tidx = tmpl.index; Assignment cliqueAssn = Assignment.restriction (observations, clique); int M = target.getNumOutcomes (); double[] vals = new double [M]; int[] singles = new int [M]; for (int assnIdx = 0; assnIdx < M; assnIdx++) { cliqueAssn.setValue (target, assnIdx); vals[assnIdx] = computeLogFactorValue (cliqueAssn, tmpl, clique.getFv ()); singles[assnIdx] = cliqueAssn.singleIndex (); } double logZ = Maths.sumLogProb (vals); for (int assnIdx = 0; assnIdx < M; assnIdx++) { double marginal = Math.exp (vals[assnIdx] - logZ); int expIdx = singles[assnIdx]; expectations[tidx][expIdx].plusEqualsSparse (clique.getFv (), marginal); if (defaultExpectations[tidx].location (expIdx) != -1) { defaultExpectations[tidx].incrementValue (expIdx, marginal); } } int observedVal = observations.get (target); timePerCvgaCall += timing.elapsedTime (); return vals[observedVal] - logZ; }
private void collectConstraintsForGraph (ACRF.UnrolledGraph unrolled, Assignment observations) { for (CliquesIterator it = makeCliquesIterator (unrolled, observations); it.hasNext();) { it.advance (); ACRF.UnrolledVarSet[] cliques = it.cliques (); for (int cidx = 0; cidx < cliques.length; cidx++) { ACRF.UnrolledVarSet clique = cliques[cidx]; int tidx = clique.getTemplate().index; if (tidx < 0) continue; int assnIdx = clique.lookupNumberOfAssignment (observations); constraints [tidx][assnIdx].plusEqualsSparse (clique.getFv (), 1.0); if (defaultConstraints[tidx].location (assnIdx) != -1) defaultConstraints [tidx].incrementValue (assnIdx, 1.0); } } }
private void collectConstraintsForGraph (ACRF.UnrolledGraph unrolled, Assignment observations) { for (CliquesIterator it = makeCliquesIterator (unrolled, observations); it.hasNext();) { it.advance (); ACRF.UnrolledVarSet[] cliques = it.cliques (); for (int cidx = 0; cidx < cliques.length; cidx++) { ACRF.UnrolledVarSet clique = cliques[cidx]; int tidx = clique.getTemplate().index; if (tidx < 0) continue; int assnIdx = clique.lookupNumberOfAssignment (observations); constraints [tidx][assnIdx].plusEqualsSparse (clique.getFv (), 1.0); if (defaultConstraints[tidx].location (assnIdx) != -1) defaultConstraints [tidx].incrementValue (assnIdx, 1.0); } } }
private void collectConstraintsForInstance (InstanceList ilist, int inum) { Instance inst = ilist.get (inum); ACRF.UnrolledGraph unrolled = new ACRF.UnrolledGraph (inst, templates, null, false); 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 ()); if (defaultConstraints[tidx].location (assn) != -1) defaultConstraints [tidx].incrementValue (assn, 1.0); } }
private void collectConstraintsForInstance (InstanceList ilist, int inum) { Instance inst = ilist.get (inum); ACRF.UnrolledGraph unrolled = new ACRF.UnrolledGraph (inst, templates, null, false); 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 ()); if (defaultConstraints[tidx].location (assn) != -1) defaultConstraints [tidx].incrementValue (assn, 1.0); } }
private void collectConstraintsForGraph (ACRF.UnrolledGraph unrolled, Assignment observations) { for (CliquesIterator it = makeCliquesIterator (unrolled, observations); it.hasNext();) { it.advance (); ACRF.UnrolledVarSet[] cliques = it.cliques (); for (int cidx = 0; cidx < cliques.length; cidx++) { ACRF.UnrolledVarSet clique = cliques[cidx]; int tidx = clique.getTemplate().index; if (tidx < 0) continue; int assnIdx = clique.lookupNumberOfAssignment (observations); constraints [tidx][assnIdx].plusEqualsSparse (clique.getFv (), 1.0); if (defaultConstraints[tidx].location (assnIdx) != -1) defaultConstraints [tidx].incrementValue (assnIdx, 1.0); } } }