x = np.random.choice([0, 1], size=(N,), p=[1./3, 2./3]) y = np.random.choice([0, 1], size=(N,), p=[1./3, 2./3]) train.append((x, y)) for i in xrange(T_test): x = np.random.choice([0, 1], size=(N,), p=[1./3, 2./3]) 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