Releases: ESMS-Group-Public/FoKL-GPy
Releases · ESMS-Group-Public/FoKL-GPy
FoKL 3.4.4
- .toml fixes
FoKL 3.4.3
- Added pyomo as optional dependency: pip install FoKL[pyomo]
- Updated documentation
FoKL 3.4.2
- draws of coefficients no longer re-selected with subsequent evaluate calls
- draw selection more efficient, should have significant speed upgrade on high draw spaces or single instance evaluate calls (i.e integration)
- fixed normalization bug where inputs in evaluate were normalized based on themselves and not the trained minmax
FoKL 3.4.1
Embedded GP Update
This update is for the Embedded GP approach. This includes updates to the following
- Added beta priors with high variance
- Removed
autograd
from dependencies - Added
pandas
as a dependency - Updated documentation of the Embedded GP tool
- Updated LICENSE to include all contributors
FoKL 3.4.0
- Model update methodology integrated into FoKL, see documentation for more details
- Experimental Embedded GP
- minax specification
- normalized RMSE now available in coverage
FoKL 3.3.0
Highlights
clean()
split into_normalize()
and_format()
to provide more user-friendly normalization methods (e.g., new keywordsminmax
andpillow
, ability to pass non-formatted non-normalized inputs toevaluate()
)- automatic tests of package now included in repo
- isotherm benchmark comparison added as example
- FoKL-to-Pyomo method received significant improvements (e.g., user-definable variable names, normalization within Pyomo s.t. variable name refers to true scale value)
- multiple GP models in Pyomo added as example
- updated documentation to reflect current changes
What's Changed
- v3.3.0 by @jakekrell in #23
Full Changelog: v3.2.4...v3.3.0
FoKL 3.2.4
- patch in 'to_pyomo'
FoKL 3.2.3
What's Changed
- Optimized scaling of "Bernoulli Polynomials" basis functions to best align with "Cubic Splines" basis functions while preserving eigenvalue ratios of BSS-ANOVA kernel approaching infinite resolution; documentation for this method stored as 'docs/_dev/basis_functions/bernoulli_polynomials/main.ipynb'
For Developers
- FoKL v3.2.3 by @jakekrell in #19
Full Changelog: v3.2.2...v3.2.3
FoKL 3.2.2
What's Changed
- Pyomo example using simple toy problem to demonstrate nonlinear optimization of a GP model trained by FoKL
- Optimization of model attributes added so .fokl files require less memory
- Support for large datasets added, where 16-bit or 32-bit floating point numbers (after normalization) are acceptable
For Developers
- FoKL v3.2.2 by @jakekrell in #18
Bugs and Changes from v3.2.1:
ID | Status | Description | Solution Notes | Documentation Status |
---|---|---|---|---|
bug1 | Complete (debug_16bit) | Evaluate, e.g., causes 1x6 to become 6x1 despite there being 6 input vars in model; | ‘AutoTranspose’ setting added during class initialization; | complete |
bug2 | semi-urgent; will fix in later release | README logo and links do not work in (at least) PyPI; | PyTorch has same issue; consider https://docs.readthedocs.io/en/stable/; consider hosting ESMS website that links point to (like pyomo.org); | n/a |
change1 | Complete (pyomo_dev) | ‘to_pyomo’: multiple draws called ‘scenarios’ included in Pyomo model; 0=abs(f(x)-y) replaced with y=f(x); | complete | |
bug3 | Complete (likely pyomo_dev but confirm) | ‘Check_xaxis’ function in ‘coverage3’ fails for inputs as list; | len(inputs[0]) updated to np.shape(inputs)[0]; | n/a |
bug4 | Complete (pyomo_dev) | ‘Draws’ keyword in ‘evaluate’ uses first models instead of last, so does not align with ‘to_pyomo’ method; | Local variable ‘betas’ indexed by ‘draws’ so that only most recent samples (i.e., last models built) are used; | Missing, but this functionality may be assumed implicit |
bug5 | Complete (likely pyomo_dev but confirm) | ‘bounds[i, 1] = drawset[draws - cut]’ results in indexing error if ‘cut=0’, since ‘drawset’ has length of ‘draws’; | Added 1 to value of ‘cut’, so ‘cut = int(np.floor(draws * .025))’ was updated with ‘cut = int(np.floor(draws * 0.025) + 1)’; also, minimum of ‘draws=40’ was added for ‘ReturnBounds=True’; | n/a |
change2 | Complete (debug_16bit) | ‘clean’ assumes 64 bit dataset which wastes memory for large 16 bit datasets; | Keyword ‘bit’ added to ‘clean’ for defining bits used in floating point of ‘self.inputs’ and ‘self.data’; | complete |
change3 | Complete (debug_16bit) | Extraneous attributes such as ‘traininputs’, ‘rawdata’, etc. can cause unnecessary memory issues; | ‘inputs’ made into numpy array for all FoKLRoutines; only ‘inputs’, ‘data’, ‘normalize’, and ‘trainlog’ kept in ‘clean’; now, ‘traininputs, traindata = self.trainset()’, ‘inputs_np = self.inputs’; | Complete |
bug6 | Complete (debug_16bit) | In fit/gibbs, ‘dtd=inf’ for large datasets causes ‘betas=nan’; | ‘dtd’ re-calculated as 64-bit if ‘dtd=inf’ and ‘data.dtype’ is not ‘64-bit’ (i.e., large dataset) in a for loop with one element at a time such that any potential memory overflows are avoided; | n/a |
change4 | Complete (debug_16bit) | fit/gibbs (and fit in general) has repeat calculations, with at least ‘dtd’ being one; | Some constants taken out of for loops; | n/a |
bug7 | Complete (debug_16bit) | In fit, ‘sigmasq = np.var(data)’ likely will equal inf if not 64-bit, so fails for large datasets where memory is crucial; | Variance ‘sigmasq’ and mean ‘data_mean’ calculated manually in for loop if ‘data.dtype != np.float64’ such that any potential memory overflows are avoided; | n/a |
change5 | Complete (debug_16bit) | ‘clean’ defines ‘trainlog’, but it is inconvenient to call ‘clean’ every time for a large dataset when testing different ‘train’ values; | ‘trainlog’ routine from within ‘clean’ moved to class method to decouple it from ‘clean’; | complete |
change6 | complete | ‘gibbs’ has for loop across instances which takes long time for large datasets, so progress indicator is useful; | Percentage complete added to show progress of current model prior to printing ‘[ind, ev]’; | complete |
change7 | complete | ‘meen’ renamed to ‘mean’; | For Python, ‘mean’ is not an internal function so the MATLAB workaround ‘meen’ is not needed; | n/a |
Full Changelog: v3.2.1...v3.2.2
FoKL 3.2.1
- Updated Dependencies to include Pyomo
- Removed redundant files