def test_ais_with_semirbm(self):
		rbm = SemiRBM(5, 20)
		rbm.L = np.matrix(np.random.randn(5, 5))
		rbm.L = np.triu(rbm.L) + np.triu(rbm.L).T - 2 * np.diag(np.diag(rbm.L))
		rbm.num_lateral_updates = 5
		rbm.sampling_method = SemiRBM.GIBBS

		ais = Estimator(rbm)

		ais_logz = ais.estimate_log_partition_function(100, np.arange(0, 1, 0.001))
		brf_logz = np.log(np.sum(np.exp(rbm._ulogprob_vis(utils.binary_numbers(rbm.X.shape[0])))))

		lower = np.log(np.exp(ais_logz) - 4 * np.sqrt(rbm._ais_var))
		upper = np.log(np.exp(ais_logz) + 4 * np.sqrt(rbm._ais_var))

		self.assertTrue(upper - lower < 1.)
		self.assertTrue(lower < brf_logz and brf_logz < upper)
示例#2
0
    def test_ais_with_semirbm(self):
        rbm = SemiRBM(5, 20)
        rbm.L = np.matrix(np.random.randn(5, 5))
        rbm.L = np.triu(rbm.L) + np.triu(rbm.L).T - 2 * np.diag(np.diag(rbm.L))
        rbm.num_lateral_updates = 5
        rbm.sampling_method = SemiRBM.GIBBS

        ais = Estimator(rbm)

        ais_logz = ais.estimate_log_partition_function(100,
                                                       np.arange(0, 1, 0.001))
        brf_logz = np.log(
            np.sum(
                np.exp(rbm._ulogprob_vis(utils.binary_numbers(
                    rbm.X.shape[0])))))

        lower = np.log(np.exp(ais_logz) - 4 * np.sqrt(rbm._ais_var))
        upper = np.log(np.exp(ais_logz) + 4 * np.sqrt(rbm._ais_var))

        self.assertTrue(upper - lower < 1.)
        self.assertTrue(lower < brf_logz and brf_logz < upper)