Инициализировать модель GPFlow с пустыми X и Y

Я использую GPFlow для многомерной регрессии и хочу сравнить различные ядра, начиная с пустого набора X и Y. Но, похоже, библиотеке нужен набор, содержащий пары значений. Я думал об инициализации с точкой, удаленной от моего пространства ввода, но эта точка была бы включена при оптимизации моих гиперпараметров. Есть какое-то решение, которое я пропускаю или обходной путь?

Спасибо за вашу помощь!

Это некоторый стандартный код для инициализации моей модели:

import gpflow
k = gpflow.kernels.RBF(input_dim=1, lengthscales=1, variance=1)
x_sample = np.array([])
y_sample = np.array([])
model = gpflow.models.GPR(x_sample, y_sample, kern=k)

что приводит к следующей ошибке:

IndexError: tuple index out of range

И следующий фрагмент приводит к:

model = gpflow.models.GPR(kern=k)
TypeError: __init__() missing 2 required positional arguments: 'X' and 'Y'

Было бы здорово, если бы у кого-то была идея, что я мог бы сделать, чтобы инициализировать мою модель с пустым набором

1 ответ

Решение

Библиотека может иметь дело с пустым X а также Y установить - но вы должны соблюдать необходимые формы. И то и другое X а также Y должен иметь ndim=2, При написании x_sample = np.array([]), затем x_sample.shape == (0,) а также x_sample.ndim == 1, Вместо этого установите x_sample = np.empty((0, 2)) (и аналогично y_sample = np.empty((0, 2)), затем ndim=2 и их форма (0, 2) как требуется.

(Очевидно, что без данных не имеет смысла оптимизировать ваши гиперпараметры, и на самом деле вы ничего не можете сделать с моделью; если вы хотите просто сравнить ядра, вам не нужно создавать модель для вычисления ядра матрицы... но это зависит более конкретно от того, чего вы хотите достичь!)

Другие вопросы по тегам