'Returns the (flattened, log-transformed) non-fixed hyperparameters.
Note that theta are typically the log-transformed values of the
kernel\'s hyperparameters as this representation of the search space
is more amenable for hyperparameter search, as hyperparameters like
length-scales naturally live on a log-scale.
Returns
theta : array, shape (n_dims,)
The non-fixed, log-transformed hyperparameters of the kernel'

@property
def theta(self):

    theta = []
    params = self.get_params()
    for hyperparameter in self.hyperparameters:
        if (not hyperparameter.fixed):
            theta.append(params[hyperparameter.name])
    if (len(theta) > 0):
        return np.log(np.hstack(theta))
    else:
        return np.array([])
