def test_transforming(): k = TEST_CASES[6][0] def vscaling_fn(x): return x.sum(dim=1) def iwarping_fn(x): return x**2 owarping_coef = [2, 0, 1, 3, 0] K = k(X, Z) K_iwarp = k(iwarping_fn(X), iwarping_fn(Z)) K_owarp = 2 + K**2 + 3 * K**3 K_vscale = vscaling_fn(X).unsqueeze(1) * K * vscaling_fn(Z).unsqueeze(0) assert_equal(K_iwarp.data, Warping(k, iwarping_fn=iwarping_fn)(X, Z).data) assert_equal(K_owarp.data, Warping(k, owarping_coef=owarping_coef)(X, Z).data) assert_equal(K_vscale.data, VerticalScaling(k, vscaling_fn=vscaling_fn)(X, Z).data) assert_equal(K.exp().data, Exponent(k)(X, Z).data) # test get_subkernel k1 = Sum(Warping(k, iwarping_fn=iwarping_fn), TEST_CASES[7][0]) assert k1.get_subkernel(k.name) is k
def test_combination(): k0 = TEST_CASES[0][0] k5 = TEST_CASES[5][0] # TEST_CASES[1] is Brownian, only work for 1D k2 = TEST_CASES[2][0] k3 = TEST_CASES[3][0] k4 = TEST_CASES[4][0] k = Sum(Product(Product(Sum(Sum(k0, k5), k2), 2), k3), Sum(k4, 1)) K = 2 * (k0(X, Z) + k5(X, Z) + k2(X, Z)) * k3(X, Z) + (k4(X, Z) + 1) assert_equal(K.data, k(X, Z).data)
def test_combination(): k0 = TEST_CASES[0][0] k5 = TEST_CASES[5][0] # TEST_CASES[1] is Brownian, only work for 1D k2 = TEST_CASES[2][0] k3 = TEST_CASES[3][0] k4 = TEST_CASES[4][0] k = Sum(Product(Product(Sum(Sum(k0, k5), k2), 2), k3), Sum(k4, 1)) K = 2 * (k0(X, Z) + k5(X, Z) + k2(X, Z)) * k3(X, Z) + (k4(X, Z) + 1) assert_equal(K.data, k(X, Z).data) # test get_subkernel assert k.get_subkernel(k5.name) is k5
def test_transforming(): k = TEST_CASES[6][0] def vscaling_fn(x): return x.sum(dim=1) def iwarping_fn(x): return x**2 owarping_coef = [2, 0, 1, 3, 0] K = k(X, Z) K_iwarp = k(iwarping_fn(X), iwarping_fn(Z)) K_owarp = 2 + K ** 2 + 3 * K ** 3 K_vscale = vscaling_fn(X).unsqueeze(1) * K * vscaling_fn(Z).unsqueeze(0) assert_equal(K_iwarp.data, Warping(k, iwarping_fn=iwarping_fn)(X, Z).data) assert_equal(K_owarp.data, Warping(k, owarping_coef=owarping_coef)(X, Z).data) assert_equal(K_vscale.data, VerticalScaling(k, vscaling_fn=vscaling_fn)(X, Z).data) assert_equal(K.exp().data, Exponent(k)(X, Z).data) # test get_subkernel k1 = Sum(Warping(k, iwarping_fn=iwarping_fn), TEST_CASES[7][0]) assert k1.get_subkernel(k.name) is k
def test_active_dims_disjoint_ok(): k1 = Matern52(2, variance, lengthscale[0], active_dims=[0, 1]) k2 = Matern32(1, variance, lengthscale[0], active_dims=[2]) Sum(k1, k2)
def test_active_dims_overlap_ok(): k1 = Matern52(2, variance, lengthscale[0], active_dims=[0, 1]) k2 = Matern32(2, variance, lengthscale[0], active_dims=[1, 2]) Sum(k1, k2)