def test_correlations_narrow_v1_vs_v5(self): inverse_power = wpe.get_power_inverse(self.Y) R_desired, r_desired = wpe.get_correlations_narrow( self.Y, inverse_power, self.K, self.delay) R_actual, r_actual = wpe.get_correlations_narrow_v5( self.Y, inverse_power, self.K, self.delay) tc.assert_allclose(R_actual, R_desired) tc.assert_allclose(r_actual, r_desired)
def test_inverse_power(self): np_inv_power = wpe.get_power_inverse(self.Y) with self.test_session() as sess: tf_signal = tf.placeholder(tf.complex128, shape=[None, None]) tf_res = tf_wpe.get_power_inverse(tf_signal) tf_inv_power = sess.run(tf_res, {tf_signal: self.Y}) np.testing.assert_allclose(np_inv_power, tf_inv_power)
def test_correlations_v1_vs_v2_toy_example(self): K = 3 delay = 1 Y = np.asarray([[11, 12, 13, 14], [41, 22, 23, 24]], dtype=np.float32) inverse_power = wpe.get_power_inverse(Y) R_desired, r_desired = wpe.get_correlations(Y, inverse_power, K, delay) R_actual, r_actual = wpe.get_correlations_v2(Y, inverse_power, K, delay) tc.assert_allclose(R_actual, R_desired) tc.assert_allclose(r_actual, r_desired)
def test_filter_matrix_conj_v1_vs_v5(self): inverse_power = wpe.get_power_inverse(self.Y) correlation_matrix, correlation_vector = wpe.get_correlations( self.Y, inverse_power, self.K, self.delay) desired = wpe.get_filter_matrix_conj(correlation_matrix, correlation_vector, self.K, self.D) actual = wpe.get_filter_matrix_conj_v5(self.Y, inverse_power, self.K, self.delay) tc.assert_allclose(actual, desired, atol=1e-10)
def test_correlations(self): np_inv_power = wpe.get_power_inverse(self.Y) np_corr = wpe.get_correlations_narrow(self.Y, np_inv_power, self.K, self.delay) with tf.Graph().as_default(), tf.Session() as sess: tf_signal = tf.placeholder(tf.complex128, shape=[None, None]) tf_inverse_power = tf_wpe.get_power_inverse(tf_signal) tf_res = tf_wpe.get_correlations_for_single_frequency( tf_signal, tf_inverse_power, self.K, self.delay) tf_corr = sess.run(tf_res, {tf_signal: self.Y}) np.testing.assert_allclose(np_corr[0], tf_corr[0]) np.testing.assert_allclose(np_corr[1], tf_corr[1])
def test_correlations_narrow_v1_vs_v6(self): inverse_power = wpe.get_power_inverse(self.Y) R_desired, r_desired = wpe.get_correlations_narrow( self.Y, inverse_power, self.K, self.delay) s = [Ellipsis, slice(self.delay + self.K - 1, None)] Y_tilde = wpe.build_y_tilde(self.Y, self.K, self.delay) R_actual, r_actual = wpe.get_correlations_v6(self.Y[s], Y_tilde[s], inverse_power[s]) tc.assert_allclose(R_actual.conj(), R_desired) tc.assert_allclose(r_actual.conj(), np.swapaxes(r_desired, 1, 2).reshape(-1, r_desired.shape[-1]), rtol=1e-5, atol=1e-5)
def test_filter_matrix(self): np_inv_power = wpe.get_power_inverse(self.Y) np_filter_matrix = wpe.get_filter_matrix_conj_v5( self.Y, np_inv_power, self.K, self.delay) with tf.Graph().as_default(), tf.Session() as sess: tf_signal = tf.placeholder(tf.complex128, shape=[None, None]) tf_inverse_power = tf_wpe.get_power_inverse(tf_signal) tf_matrix, tf_vector = tf_wpe.get_correlations_for_single_frequency( tf_signal, tf_inverse_power, self.K, self.delay) tf_filter = tf_wpe.get_filter_matrix_conj(tf_signal, tf_matrix, tf_vector, self.K, self.delay) tf_filter_matrix, tf_inv_power_2 = sess.run( [tf_filter, tf_inverse_power], {tf_signal: self.Y}) np.testing.assert_allclose(np_inv_power, tf_inv_power_2) np.testing.assert_allclose(np_filter_matrix, tf_filter_matrix)
def test_filter_matrix_conj_v1_vs_v7(self): inverse_power = wpe.get_power_inverse(self.Y) correlation_matrix, correlation_vector = wpe.get_correlations( self.Y, inverse_power, self.K, self.delay) desired = wpe.get_filter_matrix_conj(correlation_matrix, correlation_vector, self.K, self.D) s = [Ellipsis, slice(self.delay + self.K - 1, None)] Y_tilde = wpe.build_y_tilde(self.Y, self.K, self.delay) actual = wpe.get_filter_matrix_v7( self.Y, Y_tilde=Y_tilde, inverse_power=inverse_power, ) tc.assert_allclose(actual.conj(), np.swapaxes(desired, 1, 2).reshape(-1, desired.shape[-1]), atol=1e-10)
def test_filter_operation(self): np_inv_power = wpe.get_power_inverse(self.Y) np_filter_matrix = wpe.get_filter_matrix_conj_v5( self.Y, np_inv_power, self.K, self.delay) np_filter_op = wpe.perform_filter_operation_v4(self.Y, np_filter_matrix, self.K, self.delay) with tf.Graph().as_default(), tf.Session() as sess: tf_signal = tf.placeholder(tf.complex128, shape=[None, None]) tf_inverse_power = tf_wpe.get_power_inverse(tf_signal) tf_matrix, tf_vector = tf_wpe.get_correlations_narrow( tf_signal, tf_inverse_power, self.K, self.delay) tf_filter = tf_wpe.get_filter_matrix_conj(tf_signal, tf_inverse_power, tf_matrix, tf_vector, self.K, self.delay) tf_filter_op = tf_wpe.perform_filter_operation( tf_signal, tf_filter, self.K, self.delay) tf_filter_op = sess.run(tf_filter_op, {tf_signal: self.Y}) np.testing.assert_allclose(np_filter_op, tf_filter_op)