The three GPR implementations in our ML lib are scattered and need refactoring.
Suggested changes:
- Move the numpy and tensorflow implementations into the gpr module (this is currently where the GPFlow implementation lives). The code for each implementation should be in its own submodule directory.
- Rename the submodules, files, classes, and methods to be readable and consistent.
Specifically, we should move all GPR classes into the existing GPR module and rename all classes and methods to be readable and consistent.
- Rename the unit test classes accordingly.
- Refactor the duplicate code in the unit test classes into a base class with test cases to verify the output (ypreds (means) and sigmas) for both predict and optimize.