Если вы просто хотите установить значение, вы можете сделать
model = gpflow.models.GPR(np.zeros((1, 1)),
np.zeros((1, 1)),
gpflow.kernels.RBF(1, lengthscales=0.2))
В качестве альтернативы
model = gpflow.models.GPR(np.zeros((1, 1)),
np.zeros((1, 1)),
gpflow.kernels.RBF(1))
model.kern.lengthscales = 0.2
Если вы хотите изменить преобразование, вам нужно либо создать подкласс ядраили вы также можете сделать
with gpflow.defer_build():
model = gpflow.models.GPR(np.zeros((1, 1)),
np.zeros((1, 1)),
gpflow.kernels.RBF(1))
transform = gpflow.transforms.Logistic(0.1, 1.))
model.kern.lengthscales = gpflow.params.Parameter(0.3, transform=transform)
model.compile()
. Вам нужно defer_build
, чтобы остановить компиляцию графика перед тем, как вы изменили преобразование.При использовании подхода, описанного выше, компиляция графа тензорного потока задерживается (до явного model.compile()
), поэтому создается с предполагаемым ограничивающим преобразованием.
Использование параметра массива для дисперсии правдоподобия выходит за рамки gpflow.Для чего это стоит (и потому что об этом спрашивали раньше), эта конкретная модель особенно проблематична, так как неясно, как определяются контрольные точки.