v0.8.0
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 toNN_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 ofMuyGPS
is now callednoise
. - The
sigma_sq
kwarg and member is now calledscale
, as in the variance scale parameter, and theSigmaSq
class has been replaced:FixedScale
is insensitive to optimization.AnalyticScale
contains the analytic optimization internally.
DistortionFn
is replaced by the more preciseDeformationFn
, and is contained in theMuyGPS
kwarg and memberdeformation
instead ofdistortion_fn
. The usable functors are renamedIsotropy
andAnisotropy
for brevity.ScalarHyperparameter
now has the simpler aliasParameter
.
- The
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 theOptimizeFn
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.
- loss functions are all now objects of the
- 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 byMuyGPS._make()
. If a user for some reason changes a parameter value directly, it is necessary to runMuyGPS._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 theMUYGPYS_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
- Feature/ifless loss by @bwpriest in #190
- improved loss abstraction by @bwpriest in #191
- made noise perturbation logic ifless by @bwpriest in #192
- made sigma_sq logic ifless by @bwpriest in #193
- streamlined and made DistortionFns ifless by @bwpriest in #194
- made outer-loop optimization ifless by @bwpriest in #195
- divested namespace of notation in favor of English by @bwpriest in #196
Full Changelog: v0.7.2...v0.8.0