Skip to content

v0.8.0

Compare
Choose a tag to compare
@bwpriest bwpriest released this 27 Sep 00:09
· 45 commits to main since this release

v0.8.0 introduces significant changes to the libraries namespaces and introduces changes to the optimization API. It also streamlines the library's optimization workflows, and makes the library largely ifless. The primary changes felt by users will be the following:

  • The API now accepts no "*_method" string arguments (other than those to NN_Wrapper). Instead, one should import and use loss and optimization functions directly. See the univariate regression tutorial and the optimization docs for details.
  • Several keyword arguments, member objects, and functor classes are renamed. References to Greek character names deriving from equations have been dropped in favor of interpretable English words. Some examples follow:
    • The eps kwarg and member of MuyGPS is now called noise.
    • The sigma_sq kwarg and member is now called scale, as in the variance scale parameter, and the SigmaSq class has been replaced:
      • FixedScale is insensitive to optimization.
      • AnalyticScale contains the analytic optimization internally.
    • DistortionFn is replaced by the more precise DeformationFn, and is contained in the MuyGPS kwarg and member deformation instead of distortion_fn. The usable functors are renamed Isotropy and Anisotropy for brevity.
    • ScalarHyperparameter now has the simpler alias Parameter.

There are other, less obvious-to-users changes in this update as well

  • The whole optimization workflow has been made ifless. Optimization choices are now purely functions of the classes involved and their member functors.
    • loss functions are all now objects of the LossFn class, and similarly outer-loop optimization functions are objects of the OptimizeFn class.
    • OptimizeFn takes an objective function maker function in its constructor, which makes it easier to define and incorporate new objective functions.
    • As a consequence, it is now much easier to add alternative loss or objective functions or to wrap different optimization libraries entirely.
    • It will also be easier to add different ways to optimize the variance scale parameter.
  • There are no more "toss-catch"-style optimization function preparations. The primary function held by MuyGPS.kernel, MuyGPS.posterior_mean, etc, are now suitable for optimization and are all created by MuyGPS._make(). If a user for some reason changes a parameter value directly, it is necessary to run MuyGPS._make() to update the downstream functors.
  • Backend-sensitive classes have _backend_fn-type kwargs in their constructors that allows a user to override the default backend specified by the MUYGPYS_BACKEND environment variable. This makes testing the backends against one another simpler. Users should most likely ignore these kwargs, as it is unclear if they have other uses.

What's Changed

Full Changelog: v0.7.2...v0.8.0