Feed Forward Neural Networks
Project description
Feed Forward Neural Networks using NumPy
This library is a modification of my previous one. Click Here to check my previous library.
Installation
$ [sudo] pip3 install neuralnetworks-shine7
Development Installation
$ git clone https://github.com/Subhash3/Neural_Net_Using_NumPy.git
Usage
>>> from Model import NeuralNetwork
Creating a Neural Network
inputs = 2
outputs = 1
network = NeuralNetwork(inputs, outputs)
# Add 2 hidden layers with 16 neurons each and activation function 'tanh'
network.addLayer(16, activation_function="tanh")
network.addLayer(16, activation_function="tanh")
# Finish the neural network by adding the output layer with sigmoid activation function.
network.compile(activation_function="sigmoid")
Building a dataset
The package contains a Dataset class to create a dataset.
>>> from Model import Dataset
Make sure you have inputs and target values in seperate files in csv format.
input_file = "inputs.csv"
target_file = "targets.csv"
# Create a dataset object with the same inputs and outputs defined for the network.
datasetCreator = Dataset(inputs, outputs)
datasetCreator.makeDataset(input_file, target_file)
data, size = datasetCreator.getRawData()
If you want to manually make a dataset, follow these rules:
- Dataset must be a list of data samples.
- A data sample is a list containing inputs and target values.
- Input and target values are column vector of size (inputs x 1) and (outputs x 1) respectively.
For eg, a typical XOR data set looks something like :
>>> XOR_data = [
[
np.array([[0], [0]]),
np.array([[0]])
],
[
np.array([[0], [1]]),
np.array([[1]])
],
[
np.array([[1], [0]]),
np.array([[1]])
],
[
np.array([[1], [1]]),
np.array([[0]])
]
]
>>> size = 4
Training The network
The library provides a Train function which accepts the dataset, dataset size, and two optional parameters epochs, and logging.
def Train(dataset, size, epochs=5000, logging=True) :
....
....
For Eg: If you want to train your network for 1000 epochs.
>>> network.Train(data, size, epochs=1000)
Notice that I didn't change the value of log_outputs as I want the output to printed for each epoch.
Debugging
Plot a nice epoch vs error graph
>>> network.epoch_vs_error()
Know how well the model performed.
>>> network.evaluate()
To take a look at all the layers' info
>>> network.display()
Sometimes, learning rate might have to be altered for better convergence.
>>> network.setLearningRate(0.1)
Exporting Model
You can export a trained model to a json file which can be loaded and used for predictions in the future.
filename = "model.json"
network.export_model(filename)
Load Model
To load a model from an exported model (json) file. load_model is a static function, so you must not call this on a NeuralNetwork object!.
filename = "model.json"
network = NeuralNetwork.load_model(filename)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for neuralnetworks-shine7-0.0.13.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed42fa289b6a50fe55739a11ba6cdf9a86a58353347665fe2a3e89c27703d514 |
|
MD5 | bdd142d5fcc2193805d359b65281c866 |
|
BLAKE2b-256 | 00dc423152aece1e773be535bbf903d158f49cc20f59128bc01bbb332845210e |
Hashes for neuralnetworks_shine7-0.0.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb09583a948e2972888114c83738d4667044f697f90f9f8ca1268c308044476b |
|
MD5 | e83fafd9815584b4b3777d453d903f73 |
|
BLAKE2b-256 | 2c5fc5a1e1d22a7bb35736902ffef3074cdd488e29f8d569ce98a992ed1edc06 |