Skip to content
forked from sods/paramz

Parameterization Framework for parameterized model creation and handling.

License

Notifications You must be signed in to change notification settings

MartinBubel/paramz

 
 

Repository files navigation

paramz

pypi build codecov

Coverage

codecov.io

Parameterization Framework for parameterized model creation and handling. This is a lightweight framework for using parameterized models.

See examples model in 'paramz.examples.'

Features:

  • Easy model creation with parameters
  • Fast optimized access of parameters for optimization routines
  • Memory efficient storage of parameters (only one copy in memory)
  • Renaming of parameters
  • Intuitive printing of models and parameters
  • Gradient saving directly inside parameters
  • Gradient checking of parameters
  • Optimization of parameters
  • Jupyter notebook integration
  • Efficient storage of models, for reloading
  • Efficient caching included

Installation

You can install this package via pip

pip install paramz

There is regular update for this package, so make sure to keep up to date (Rerunning the install above will update the package and dependencies).

Supported Platforms:

Python 2.7, 3.5 and higher

Saving models in a consistent way across versions:

As pickle is inconsistent across python versions and heavily dependent on class structure, it behaves inconsistent across versions. Pickling as meant to serialize models within the same environment, and not to store models on disk to be used later on.

To save a model it is best to save the m.param_array of it to disk (using numpy’s np.save). Additionally, you save the script, which creates the model. In this script you can create the model using initialize=False as a keyword argument and with the data loaded as normal. You then set the model parameters by setting m.param_array[:] = loaded_params as the previously saved parameters. Then you initialize the model by m.initialize_parameter(), which will make the model usable. Be aware that up to this point the model is in an inconsistent state and cannot be used to produce any results.

# let X, Y be data loaded above
# Model creation:
m = paramz.examples.RidgeRegression(X, Y)
m.optimize()
# 1: Saving a model:
np.save('model_save.npy', m.param_array)
# 2: loading a model
# Model creation, without initialization:
m_load = paramz.examples.RidgeRegression(X, Y,initialize=False)
m_load.update_model(False) # do not call the underlying expensive algebra on load
m_load.initialize_parameter() # Initialize the parameters (connect the parameters up)
m_load[:] = np.load('model_save.npy') # Load the parameters
m_load.update_model(True) # Call the algebra only once
print(m_load)

Running unit tests:

Ensure nose is installed via pip:

pip install nose

Run nosetests from the root directory of the repository:

nosetests -v paramz/tests

or using setuptools

python setup.py test

Developer Documentation:

Compiling documentation:

The documentation is stored in doc/ and is compiled with the Sphinx Python documentation generator, and is written in the reStructuredText format.

The Sphinx documentation is available here: http://sphinx-doc.org/latest/contents.html

Installing dependencies:

To compile the documentation, first ensure that Sphinx is installed. On Debian-based systems, this can be achieved as follows:

sudo apt-get install python-pip
sudo pip install sphinx

Compiling documentation:

The documentation can be compiled as follows:

cd doc
sphinx-apidoc -o source/ ../GPy/
make html

The HTML files are then stored in doc/build/html

Funding Acknowledgements

Current support for the paramz software is coming through the following projects.

About

Parameterization Framework for parameterized model creation and handling.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.9%
  • Jupyter Notebook 14.1%