Skip to main content

A tiny Python library to create and train feedforward neural networks

Project description

<p align="center">
<img src="https://gvinciguerra.github.io/nnweaver/_static/logo.svg">
</p>

# NNWeaver #

[![Coverage Status](https://coveralls.io/repos/github/gvinciguerra/nnweaver/badge.svg?branch=master)](https://coveralls.io/github/gvinciguerra/nnweaver?branch=master)
[![Build Status](https://travis-ci.org/gvinciguerra/nnweaver.svg?branch=master)](https://travis-ci.org/gvinciguerra/nnweaver)

NNWeaver is a *tiny* Python library to create and train feedforward neural networks. We developed this library as a project for a Machine Learning course.

Some of its features are:

1. Simple API, easy to learn.
2. Validation functions included.
3. Lightweight and with few dependencies.
4. Live loss/epoch curve display.

## Installation ##

You can install NNWeaver from the GitHub source with the following commands:

git clone https://github.com/gvinciguerra/nnweaver.git
cd nnweaver
python3 setup.py install

You can also run the test suite with `python3 setup.py test`.

## Getting started ##

### Specify a Neural Network Topology ###

You can create a feedforward neural network specifying the number of inputs as the argument of [`NN`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.nn.NN), and the number of outputs by adding a [`Layer`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.nn.Layer):

from nnweaver import *
nn = NN(3)
nn.add_layer(Layer(5, Linear))

You can always add more layers, specify an activation function and a weights initializer, as the following lines of code show:

nn.add_layer(Layer(7, Sigmoid))
nn.add_layer(Layer(6, Rectifier, uniform(0, 0.05)))
nn.add_layer(Layer(42, TanH, glorot_uniform()))

See [`activations`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#module-nnweaver.activations) for the list of available activation functions.

### Train the Neural Network ###

Now, choose a [`Loss`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.losses.Loss) function, pass it to an [`Optimizer`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.optimizers.Optimizer) (like the stochastic gradient descent) and start the training:

sgd = SGD(MSE)
sgd.train(nn, x, y, learning_rate=0.3)

There are other arguments to pass to the [`SGD.train()`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.optimizers.SGD.train) method, for example:

sgd.train(nn, x_train, y_train,
learning_rate_time_based(0.25, 0.001),
batch_size=10, epochs=100, momentum=0.85)

Also, you may want to control the model complexity. [`SGD.train()`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.optimizers.SGD.train) has a `regularizer` argument, that accepts an instance of the [`L1L2Regularizer`](https://gvinciguerra.github.io/nnweaver/nnweaver.html#nnweaver.regularizers.L1L2Regularizer) class.

### A very, very simple example ###

<img src="https://github.com/gvinciguerra/nnweaver/blob/gh-pages/_images/nnweaver.gif?raw=true" width="550" />

## Documentation ##

For more information, tutorials, and API reference, please visit [NNweaver's online documentation](https://gvinciguerra.github.io/nnweaver/index.html) or build your own offline copy executing `python3 setup.py docs`.

## License ##

This project is licensed under the terms of the MIT License.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nnweaver-0.2.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

nnweaver-0.2-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file nnweaver-0.2.tar.gz.

File metadata

  • Download URL: nnweaver-0.2.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3

File hashes

Hashes for nnweaver-0.2.tar.gz
Algorithm Hash digest
SHA256 770ae4efbd369731e10aaa0589e1d922757de37aa180c9d11a53914a2a7c7f5c
MD5 c6ada2991e0f6c89634f6487e34ae3c3
BLAKE2b-256 7c11446600dc15f2f73923dad17da4d91460e4d1b8cfb095f645a89478edfacc

See more details on using hashes here.

File details

Details for the file nnweaver-0.2-py3-none-any.whl.

File metadata

  • Download URL: nnweaver-0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.3

File hashes

Hashes for nnweaver-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8ac0070cb66e30f3e7798be15897c82685d93b533ea4f46ea957f73afe6c8098
MD5 b8b1c7559d667b055dc1ef7fec0ecf52
BLAKE2b-256 5ffe8753ebabfc20ac862ffc6089569516c86cb5f8c3fc90a351ff89ad02c368

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page