def test_compute_C_matches_sym(): sigma = 1. Z = np.random.randn(10, 2) K = gaussian_kernel(Z, sigma=sigma) C_sym = develop_gaussian.compute_C_sym(Z, K, sigma=sigma) C = gaussian.compute_C(Z, Z, K, sigma=sigma) assert_allclose(C, C_sym)
def test_compute_C_sym_against_paper(): sigma = 1. D = 1 Z = np.random.randn(1, D) K = gaussian_kernel(Z, sigma=sigma) C = develop_gaussian.compute_C_sym(Z, K, sigma) # compute by hand, well, it's just zero (look at it) x = Z[0] k = K[0, 0] C_paper = (x * k - k * x) * (k * x - x * k) assert_equal(C, C_paper)
def test_objective_sym_same_as_from_estimation(): sigma = 1. lmbda = 1. Z = np.random.randn(100, 2) K = gaussian_kernel(Z, sigma=sigma) a = develop_gaussian.fit_sym(Z, sigma, lmbda, K) C = develop_gaussian.compute_C_sym(Z, K, sigma) b = develop_gaussian.compute_b_sym(Z, K, sigma) J = develop_gaussian.objective_sym(Z, sigma, lmbda, a, K, b, C) J2 = develop_gaussian.objective_sym(Z, sigma, lmbda, a, K) assert_almost_equal(J, J2)
def test_apply_C_left_sym_matches_full(): sigma = 1. N = 10 Z = np.random.randn(N, 2) K = gaussian_kernel(Z, sigma=sigma) R = incomplete_cholesky_gaussian(Z, sigma, eta=0.1)["R"] v = np.random.randn(Z.shape[0]) lmbda = 1. x = (develop_gaussian.compute_C_sym(Z, K, sigma) + lmbda * (K + np.eye(len(K)))).dot(v) y = develop_gaussian_low_rank.apply_left_C_sym(v, Z, R.T, lmbda) assert_allclose(x, y, atol=2e-1, rtol=2e-1)
def test_objective_matches_sym_precomputed_KbC(): sigma = 1. lmbda = 1. Z = np.random.randn(100, 2) K = gaussian_kernel(Z, sigma=sigma) alpha = np.random.randn(len(Z)) C = develop_gaussian.compute_C_sym(Z, K, sigma) b = develop_gaussian.compute_b_sym(Z, K, sigma) K = gaussian_kernel(Z, sigma=sigma) J_sym = develop_gaussian.objective_sym(Z, sigma, lmbda, alpha, K, b, C) J = gaussian.objective(Z, Z, sigma, lmbda, alpha, K_XY=K, b=b, C=C) assert_equal(J, J_sym)
def test_compute_C_against_initial_notebook(): D = 2 sigma = 1. Z = np.random.randn(100, D) K = gaussian_kernel(Z, sigma=sigma) # build matrix expressions from notes m = Z.shape[0] D = Z.shape[1] C = np.zeros((m, m)) for l in np.arange(D): x_l = Z[:, l] C += (np.diag(x_l).dot(K) - K.dot(np.diag(x_l))).dot(K.dot(np.diag(x_l)) - np.diag(x_l).dot(K)) C_test = develop_gaussian.compute_C_sym(Z, K, sigma) assert_allclose(C, C_test)
def test_compute_C_against_initial_notebook(): D = 2 sigma = 1. Z = np.random.randn(100, D) K = gaussian_kernel(Z, sigma=sigma) # build matrix expressions from notes m = Z.shape[0] D = Z.shape[1] C = np.zeros((m, m)) for l in np.arange(D): x_l = Z[:, l] C += (np.diag(x_l).dot(K) - K.dot( np.diag(x_l))).dot(K.dot(np.diag(x_l)) - np.diag(x_l).dot(K)) C_test = develop_gaussian.compute_C_sym(Z, K, sigma) assert_allclose(C, C_test)