Mercurial > pylearn
diff sandbox/rbm/model.py @ 398:6e55ccb7e2bf
Better output
author | Joseph Turian <turian@gmail.com> |
---|---|
date | Tue, 08 Jul 2008 20:48:56 -0400 |
parents | e0c9357456e0 |
children | 8796b91a9f09 |
line wrap: on
line diff
--- a/sandbox/rbm/model.py Tue Jul 08 20:39:36 2008 -0400 +++ b/sandbox/rbm/model.py Tue Jul 08 20:48:56 2008 -0400 @@ -30,6 +30,15 @@ else: x[j][i] = 0 return x +def crossentropy(output, target): + """ + Compute the crossentropy of binary output wrt binary target. + @note: We do not sum, crossentropy is computed by component. + @todo: Rewrite as a scalar, and then broadcast to tensor. + """ + return -(target * numpy.log(output) + (1 - target) * numpy.log(1 - output)) + + class Model: def __init__(self): self.parameters = parameters.Parameters(randomly_initialize=True) @@ -55,11 +64,11 @@ print "Q(h[0][i] = 1 | v[0]):", q0 print "h[0]:", h0 print "P(v[1][j] = 1 | h[0]):", p0 + print "XENT(P(v[1][j] = 1 | h[0]) | v0):", numpy.sum(crossentropy(p0, v0)) print "v[1]:", v1 print "Q(h[1][i] = 1 | v[1]):", q1 - print self.parameters.w.shape self.parameters.w += LR * (dot(v0.T, h0) - dot(v1.T, q1)) self.parameters.b += LR * (h0 - q1) self.parameters.c += LR * (v0 - v1) - print self.parameters +# print self.parameters