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)
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)