예제 #1
0
def test_non_linear_kernel_ard():
    """
    Test that the kernels that act on the input space have the correct number of lengthscales when ARD is true
    """
    kernels = make_non_linear_kernels(GPy.kern.RBF, 2, 2, ARD=True)
    assert len(kernels[0].lengthscale) == 2
    assert len(kernels[1].bias_kernel_fidelity2.lengthscale) == 2
    assert len(kernels[1].mul.scale_kernel_fidelity2.lengthscale) == 2
예제 #2
0
def test_non_linear_kernel_ard():
    """
    Test that the kernels that act on the input space have the correct number of lengthscales when ARD is true
    """
    kernels = make_non_linear_kernels(GPy.kern.RBF, 2, 2, ARD=True)
    assert len(kernels[0].lengthscale) == 2
    assert len(kernels[1].bias_kernel_fidelity2.lengthscale) == 2
    assert len(kernels[1].mul.scale_kernel_fidelity2.lengthscale) == 2
예제 #3
0
 def non_linear_model(self, x_init, y_init):
     """
     Creates a NonLinearModel instance to use in tests
     """
     np.random.seed(123)
     base_kernel = GPy.kern.RBF
     kernel = make_non_linear_kernels(base_kernel, len(x_init), x_init.shape[1] - 1)
     model = emukit.multi_fidelity.models.NonLinearMultiFidelityModel(x_init, y_init, 3, kernel, n_samples=3)
     return model
예제 #4
0
 def non_linear_model(self, x_init, y_init):
     """
     Creates a NonLinearModel instance to use in tests
     """
     np.random.seed(123)
     base_kernel = GPy.kern.RBF
     kernel = make_non_linear_kernels(base_kernel, len(x_init),
                                      x_init.shape[1] - 1)
     model = emukit.multi_fidelity.models.NonLinearMultiFidelityModel(
         x_init, y_init, 3, kernel, n_samples=3)
     return model
def log_nonlinear_mfdgp(X_train, Y_train):
    base_kernel = GPy.kern.RBF
    kernels = make_non_linear_kernels(base_kernel, 2, X_train.shape[1] - 1)
    nonlin_mf_model = NonLinearMultiFidelityModel(
        X_train, Y_train, n_fidelities=2, kernels=kernels, verbose=True,
        optimization_restarts=5)
    mf1, mf2 = nonlin_mf_model.models
    mf1.Gaussian_noise.variance.fix(0)
    mf2.Gaussian_noise.variance.fix(0)
    nonlin_mf_model.optimize()
    return nonlin_mf_model
예제 #6
0
def variable_model(x_train, y_train, n_fidelity, fullname_temp):
    base_kernel = GPy.kern.RBF
    kernels = make_non_linear_kernels(base_kernel, 2, x_train.shape[1] - 1)
    nonlin_mf_model = NonLinearMultiFidelityModel(x_train,
                                                  y_train,
                                                  n_fidelities=n_fidelity,
                                                  kernels=kernels,
                                                  verbose=True,
                                                  optimization_restarts=5)

    for m in nonlin_mf_model.models:
        m.Gaussian_noise.variance.fix(0)
    nonlin_mf_model.optimize()

    # 保存模型
    from sklearn.externals import joblib
    model_temp = fullname_temp + "\\nonlin_nf_model.pkl"
    gol.set_map("model_temp", model_temp)
    joblib.dump(nonlin_mf_model, model_temp)
예제 #7
0
def nonlinear_model(X_train, Y_train, save=False):
    """ Returns GPy model of nonlinear multi-fidelity GP (Perdikaris 2017) """

    base_kernel = GPy.kern.RBF
    kernels = make_non_linear_kernels(base_kernel, 2, X_train.shape[1] - 1)
    nonlin_mf_model = NonLinearMultiFidelityModel(X_train,
                                                  Y_train,
                                                  n_fidelities=2,
                                                  kernels=kernels,
                                                  verbose=True,
                                                  optimization_restarts=5)

    for m in nonlin_mf_model.models:
        m.Gaussian_noise.variance.fix(0)

    # Optimise
    nonlin_mf_model.optimize()

    if save is not False:
        nonlin_mf_model.save_model(save)

    return nonlin_mf_model
예제 #8
0
                 alpha=0.3)
plt.xlim(0, 1)
plt.xlabel('x')
plt.ylabel('f (x)')
plt.legend(['True Function', 'Linear multi-fidelity GP'], loc='lower right')
plt.title('Linear multi-fidelity model fit to high fidelity function')

####

## Create nonlinear model

from emukit.multi_fidelity.models.non_linear_multi_fidelity_model import make_non_linear_kernels, \
    NonLinearMultiFidelityModel

base_kernel = GPy.kern.RBF
kernels = make_non_linear_kernels(base_kernel, 2, X_train.shape[1] - 1)
# print(kernels)
nonlin_mf_model = NonLinearMultiFidelityModel(
    X_train,
    Y_train,
    n_fidelities=2,
    kernels=kernels,  #n_samples=1,
    verbose=False,
    optimization_restarts=5)
# print(nonlin_mf_model.models[0])
# print(nonlin_mf_model.models[1])
for m in nonlin_mf_model.models:
    m.Gaussian_noise.variance.fix(0)

nonlin_mf_model.optimize()
print()