Могут ли ядра, отличные от периодических, использоваться в SGPR в gpflow? - PullRequest
0 голосов
/ 15 мая 2018

Я довольно новичок в GPR . Буду признателен, если вы дадите мне несколько советов по следующим вопросам:

Можем ли мы использовать ядро ​​ Matern52 в разреженном гауссовском процессе?

Каков наилучший способ выбора псевдо входов (Z)? Является ли случайная выборка разумной?

Я хотел бы отметить, что при использовании ядра Matern52 следующая ошибка останавливает процесс оптимизации. Мой код:

k1 = gpflow.kernels.Matern52(input_dim=X_train.shape[1], ARD=True)
m = gpflow.models.SGPR(X_train, Y_train, kern=k1, Z=X_train[:50, :].copy())

InvalidArgumentError (см. Выше для отслеживания): входная матрица не является обратимой. [[Узел: градиенты_25 / SGPR-31ceaea6-412 / Cholesky_grad / MatrixTriangularSolve = MatrixTriangularSolve [T = DT_DOUBLE, adjoint = false, lower = true, _device = "/ job: localhost / replica: 0 / task: 0 / device: 0: device: CPU: 0 "] (SGPR-31ceaea6-412 / Cholesky, SGPR-31ceaea6-412 / eye_1 / MatrixDiag)]

Любая помощь будет оценена, спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Вы пробовали это на небольшом тестовом наборе данных, который вы могли бы публиковать здесь?Нет причин, по которым Matern52 не должен работать.Случайные выборочные точки должны быть разумной инициализацией, особенно в более высоких измерениях.Тем не менее, вы можете столкнуться с проблемами, если у вас возникнут точки побуждения, расположенные очень близко друг к другу (это может сделать матрицу K_ {zz} = cov (f (Z), f (Z)) плохо обусловленной, что объясняет, почемуХолецкий терпит неудачу).Если ваш X_train еще не перемешан, вы можете использовать Z=X_train[np.random.permutation(len(X_train))[:50] для получения перемешанных индексов.Также может помочь добавить ядро ​​с белым шумом, kern = k1 + gpflow.kernels.White () ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...