You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been working on implementing a permutationally invariant Matern kernel in GPytorch for an ExactGP model. My approach involves modifying the Matern kernel from the GPytorch source and incorporating permutational symmetry operations as described in the following paper:
Input: Tensor with each row containing xyz coordinates of all atoms.
Transformation: Converts xyz coordinates to internuclear distances, scaled by the exponential of the negative inverse distance.
I want to perform the transformation of the xyz coordinates to the distances inside the kernel class so that I have easy access to gradients and hessians w.r.t. the xyz inputs during simulations.
Here is the implementation of the kernel function:
Normalizing the kernel as suggested in the paper above results in a kernel matrix of all ones.
When training a model with ARD using the non-normalized kernel, I encounter a NotPSDError after about 15 iterations, indicating the matrix is not positive definite. This issue does not occur with a regular Matern kernel and an already transformed dataset.
Is there an issue with the kernel class that makes it not possible to use ARD? Would the normalization (if implemented correctly) be able to help?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
I've been working on implementing a permutationally invariant Matern kernel in GPytorch for an ExactGP model. My approach involves modifying the Matern kernel from the GPytorch source and incorporating permutational symmetry operations as described in the following paper:
Bartók and Csányi - 2015 - Gaussian approximation potentials A brief tutoria.pdf
Kernel Details:
I want to perform the transformation of the xyz coordinates to the distances inside the kernel class so that I have easy access to gradients and hessians w.r.t. the xyz inputs during simulations.
Here is the implementation of the kernel function:
I face two issues:
Is there an issue with the kernel class that makes it not possible to use ARD? Would the normalization (if implemented correctly) be able to help?
Beta Was this translation helpful? Give feedback.
All reactions