Example #1
0
    y = np.random.choice([0, 1], size=(N,), p=[1./3, 2./3])
    test.append((x, y))

    
model = RRBM(N, train)
# check partition function
assert np.allclose(model.Z(model.W, model.b, train[0][0]), model.enum_Z(model.W, model.b, train[0][0]), atol = 0.01)

gW_fd, gb_fd = fd(model)
gW, gb = model.g(model.W, model.b)

# check gradient
assert np.allclose(gW, gW_fd, atol=0.01)
assert np.allclose(gb, gb_fd, atol=0.01)

# check conversion
W2, b2 = model.vec2theta(model.theta2vec(model.W, model.b))
assert (W2 == model.W).all()
assert (b2 == model.b).all()

# check optimization
err, ham = model.eval(test)
print err
print ham

model.learn()

err, ham = model.eval(test)
print err
print ham