private boolean willBeNaN (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.divideBy (otherMsg); return p2.isNaN (); }
private boolean willBeNaN2 (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.multiplyBy (otherMsg); return p2.isNaN (); }
private boolean willBeNaN (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.divideBy (otherMsg); return p2.isNaN (); }
private boolean willBeNaN2 (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.multiplyBy (otherMsg); return p2.isNaN (); }
private boolean willBeNaN2 (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.multiplyBy (otherMsg); return p2.isNaN (); }
private boolean willBeNaN (Factor product, Factor otherMsg) { Factor p2 = product.duplicate (); p2.divideBy (otherMsg); return p2.isNaN (); }
public Factor multiply (Factor other) { // special handling of identity factor if (Maths.almostEquals (c, 1.0)) { return other.duplicate (); } else if (other instanceof ConstantFactor) { return new ConstantFactor (c * ((ConstantFactor)other).c); } else { return other.multiply (this); } }
public Factor multiply (Factor other) { // special handling of identity factor if (Maths.almostEquals (c, 1.0)) { return other.duplicate (); } else if (other instanceof ConstantFactor) { return new ConstantFactor (c * ((ConstantFactor)other).c); } else { return other.multiply (this); } }
public Factor multiply (Factor other) { // special handling of identity factor if (Maths.almostEquals (c, 1.0)) { return other.duplicate (); } else if (other instanceof ConstantFactor) { return new ConstantFactor (c * ((ConstantFactor)other).c); } else { return other.multiply (this); } }
public void testLogNormalize () { FactorGraph mdl = models [0]; Iterator it = mdl.variablesIterator (); Variable v1 = (Variable) it.next(); Variable v2 = (Variable) it.next(); Random rand = new Random (3214123); for (int i = 0; i < 10; i++) { Factor ptl = randomEdgePotential (rand, v1, v2); Factor norm1 = new LogTableFactor((AbstractTableFactor) ptl); Factor norm2 = ptl.duplicate(); norm1.normalize(); norm2.normalize(); assertTrue ("LogNormalize failed! Correct: "+norm2+" Log-normed: "+norm1, norm1.almostEquals (norm2)); } }
public void testLogNormalize () { FactorGraph mdl = models [0]; Iterator it = mdl.variablesIterator (); Variable v1 = (Variable) it.next(); Variable v2 = (Variable) it.next(); Random rand = new Random (3214123); for (int i = 0; i < 10; i++) { Factor ptl = randomEdgePotential (rand, v1, v2); Factor norm1 = new LogTableFactor((AbstractTableFactor) ptl); Factor norm2 = ptl.duplicate(); norm1.normalize(); norm2.normalize(); assertTrue ("LogNormalize failed! Correct: "+norm2+" Log-normed: "+norm1, norm1.almostEquals (norm2)); } }
public void sendMessage (FactorGraph mdl, Factor from, Variable to) { int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor product = from.duplicate (); msgProduct (product, fromIdx, toIdx); Factor msg = product.marginalize (to); msg.normalize (); if (logger.isLoggable (Level.FINEST)) { logger.info ("MSG "+from+" --> "+to); logger.info ("FACTOR: "+from.dumpToString()); logger.info ("MSG: "+msg.dumpToString ()); logger.info ("END MSG "+from+" --> "+to); } assert msg.varSet ().size () == 1; assert msg.varSet ().contains (to); makeDampedUpdate (fromIdx, toIdx, msg); }
public void sendMessage (FactorGraph mdl, Factor from, Variable to) { int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor product = from.duplicate (); msgProduct (product, fromIdx, toIdx); Factor msg = product.marginalize (to); msg.normalize (); if (logger.isLoggable (Level.FINEST)) { logger.info ("MSG "+from+" --> "+to); logger.info ("FACTOR: "+from.dumpToString()); logger.info ("MSG: "+msg.dumpToString ()); logger.info ("END MSG "+from+" --> "+to); } assert msg.varSet ().size () == 1; assert msg.varSet ().contains (to); makeDampedUpdate (fromIdx, toIdx, msg); }
private void makeDampedUpdate (int fromIdx, int toIdx, Factor msg) { if (damping < 1.0) { // there's damping Factor oldMsg = oldMessages.get (fromIdx, toIdx); // Factor oldMsg = messages.get (fromIdx, toIdx); if (oldMsg != null) { AbstractTableFactor oldTbl = (AbstractTableFactor) oldMsg.duplicate (); oldTbl.normalize (); oldTbl.timesEquals (1 - damping); AbstractTableFactor tbl = (AbstractTableFactor) msg; tbl.timesEquals (damping); tbl.plusEquals (oldTbl); msg = tbl; } } messages.put (fromIdx, toIdx, msg); }
public MIntInt2ObjectMap deepCopy (MIntInt2ObjectMap msgs) { MIntInt2ObjectMap copy = new MIntInt2ObjectMap (numV + numF); int[] keys1 = msgs.keys1 (); for (int i = 0; i < keys1.length; i++) { int k1 = keys1[i]; ToMsgsIterator msgIt = new ToMsgsIterator (msgs, k1); while (msgIt.hasNext ()) { Factor msg = msgIt.next (); int from = msgIt.currentFromIdx (); copy.put (k1, from, msg.duplicate ()); } } return copy; }
public MIntInt2ObjectMap deepCopy (MIntInt2ObjectMap msgs) { MIntInt2ObjectMap copy = new MIntInt2ObjectMap (numV + numF); int[] keys1 = msgs.keys1 (); for (int i = 0; i < keys1.length; i++) { int k1 = keys1[i]; ToMsgsIterator msgIt = new ToMsgsIterator (msgs, k1); while (msgIt.hasNext ()) { Factor msg = msgIt.next (); int from = msgIt.currentFromIdx (); copy.put (k1, from, msg.duplicate ()); } } return copy; }
public MIntInt2ObjectMap deepCopy (MIntInt2ObjectMap msgs) { MIntInt2ObjectMap copy = new MIntInt2ObjectMap (numV + numF); int[] keys1 = msgs.keys1 (); for (int i = 0; i < keys1.length; i++) { int k1 = keys1[i]; ToMsgsIterator msgIt = new ToMsgsIterator (msgs, k1); while (msgIt.hasNext ()) { Factor msg = msgIt.next (); int from = msgIt.currentFromIdx (); copy.put (k1, from, msg.duplicate ()); } } return copy; }
public void sendMessage (FactorGraph mdl, Factor from, Variable to) { // System.err.println ("...max-prod message"); int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor product = from.duplicate (); msgProduct (product, fromIdx, toIdx); Factor msg = product.extractMax (to); msg.normalize (); assert msg.varSet ().size () == 1; assert msg.varSet ().contains (to); messages.put (fromIdx, toIdx, msg); }
public void sendMessage (FactorGraph mdl, Factor from, Variable to) { // System.err.println ("...max-prod message"); int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor product = from.duplicate (); msgProduct (product, fromIdx, toIdx); Factor msg = product.extractMax (to); msg.normalize (); assert msg.varSet ().size () == 1; assert msg.varSet ().contains (to); messages.put (fromIdx, toIdx, msg); }
public void sendMessage (FactorGraph mdl, Factor from, Variable to) { // System.err.println ("...max-prod message"); int fromIdx = messages.getIndex (from); int toIdx = messages.getIndex (to); Factor product = from.duplicate (); msgProduct (product, fromIdx, toIdx); Factor msg = product.extractMax (to); msg.normalize (); assert msg.varSet ().size () == 1; assert msg.varSet ().contains (to); messages.put (fromIdx, toIdx, msg); }