def test_binary_vis_layer_sample(): # Verifies that BinaryVector.sample returns an expression # whose value passes check_binary_samples assert hasattr(np, 'exp') n = 5 num_samples = 1000 tol = .04 class DummyLayer(object): """ A layer that we build for the test that just uses a state as its downward message. """ def downward_state(self, state): return state def downward_message(self, state): return state vis = BinaryVector(nvis=n) hid = DummyLayer() rng = np.random.RandomState([2012,11,1,259]) mean = rng.uniform(1e-6, 1. - 1e-6, (n,)) ofs = rng.randn(n) vis.set_biases(ofs.astype(config.floatX)) z = inverse_sigmoid_numpy(mean) - ofs z_var = sharedX(np.zeros((num_samples, n)) + z) theano_rng = MRG_RandomStreams(2012+11+1) sample = vis.sample(state_above=z_var, layer_above=hid, theano_rng=theano_rng) sample = sample.eval() check_binary_samples(sample, (num_samples, n), mean, tol)