GitXplorerGitXplorer
a

swi-ml

public
14 stars
0 forks
1 issues

Commits

List of commits on branch master.
Unverified
c7a44c71683a9bfb4adb13c7eb6117e652177807

ENH: Add PyPI shield

aaitikgupta committed 4 years ago
Unverified
6fb9a6ce987e23dea39a2a20156293267fc2862b

REF: Remove annotations for Python 3.6

aaitikgupta committed 4 years ago
Unverified
e89e361b20fca7eeadb1016ee7a54c9ba068e646

DOC: Fix logo and website links

aaitikgupta committed 4 years ago
Unverified
19b60b6f3c52943a2071b676b5190ee8ecf850ff

DOC: Update LICENSE

aaitikgupta committed 4 years ago
Unverified
5b3a5d1ee36c472c05d4bc87a0ab5ce95cc150e3

BUG: Fix output shape

aaitikgupta committed 4 years ago
Unverified
6e45d775efbe6dfc91c56b65d38790cf599ee69a

TST: XFail on special case

aaitikgupta committed 4 years ago

README

The README file for this repository.

swi-ml

A machine learning library written from scratch - with runtime switchable backend!

Logo

Provides a single interface to interact with single-core CPU operations (with NumPy backend), as well as thousands of cores on a GPU (with CuPy backend), in runtime!

Python PyPI Code style Stargazers Codecov Personal Website MIT License

NOTE: This is NOT an alternative to libraries like scikit-learn and cuML. Their interfaces are complete on their own!

Prerequsites

swi-ml is built on bare Python and NumPy backbones, all other dependencies are optional!

Installation

  1. (Optional) Setup a virtual environment using virtualenv or anaconda.
  2. Install NumPy by following their insallation guide or simply via pip:
    pip install numpy
  3. (Optional) For GPU-supported backend, setup a working installation of CuPy by following their installation guide.
    python -c 'import cupy; cupy.show_config()'
  4. (Optional) Install Matplotlib to plot specific curves. (via their installation guide)
  5. Install swi-ml:
    pip install swi-ml  # from PyPI
    pip install git+https://github.com/aitikgupta/swi-ml  # from GitHub
  6. (Optional) To run the pre-defined tests, install pytest by following their installation guide or simply via pip:
    pip install pytest

Usage

Switching backend

from swi_ml import set_backend

# numpy backend (CPU)
set_backend("numpy")

# cupy backend (GPU)
set_backend("cupy")

Automatic fallback

Don't have a physical GPU, or don't know if you have a proper setup for a GPU-enabled backend?

Set automatic fallback (to NumPy - the only hard dependency):

from swi_ml import set_automatic_fallback

# this has been enabled by default for tests
# see https://github.com/aitikgupta/swi-ml/blob/master/tests/__init__.py
set_automatic_fallback(True)

A simple Linear Regression with Gradient Descent

from swi_ml.regression import LinearRegressionGD

data = [[1], [2], [3]]
labels = [2, 4, 6]

model = LinearRegressionGD(
    num_iterations=3,
    learning_rate=0.1,
    normalize=False,
    initialiser="uniform",
    verbose="DEBUG",
)

model.fit(data, labels)

print("Current MSE:", model.curr_loss)

Output:

INFO: Backend is not set, using default `numpy`
INFO: Setting backend: numpy
INFO: MSE (1/3): 13.93602
INFO: MSE (2/3): 0.22120
INFO: MSE (3/3): 0.05478
INFO: Training time: 0.00035 seconds
Current MSE: 0.054780625247184585

For more concrete examples, please refer to examples directory.

Running the tests

To run the testing suite, execute the following command in the root directory:

python -mpytest  # run the whole suite
python -mpytest tests/test_module.py  # run the specific test module

Contributing

Contributions are what makes the open source community such an amazing place to learn, inspire, and create. Any contributions are much appreciated!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

About

Aitik Gupta - Personal Website