def test_antithetic_uniform_is_symmetrical(self): shape = [512] antithetic_uniform_samples = dynamics.random_antithetic_uniform(shape) with self.session() as session: [samples, sym_samples] = session.run(tf.split(antithetic_uniform_samples, 2)) self.assertAllEqual(samples, 1.0 - sym_samples)
def test_antithetic_uniform_lowers_variance(self): shape = [512] num_trials = 128 key_ph = tf.placeholder(shape=(), dtype=tf.int32) uniform_samples = dynamics.random_uniform(shape, key=key_ph) antithetic_uniform_samples = dynamics.random_antithetic_uniform( shape, key=key_ph) mean_estimator = tf.reduce_mean(uniform_samples) antithetic_mean_estimator = tf.reduce_mean(antithetic_uniform_samples) mean_estimates = [] antithetic_mean_estimates = [] with self.session() as session: for i in range(num_trials): mean_estimates.append( session.run(mean_estimator, feed_dict={key_ph: i})) antithetic_mean_estimates.append( session.run(antithetic_mean_estimator, feed_dict={key_ph: i})) self.assertLessEqual( np.std(antithetic_mean_estimates), np.std(mean_estimates))