UNPKG

nanonet

Version:

A lightweight neural network class for JavaScript.

95 lines (69 loc) 3 kB
# nanonet A lightweight neural network class for JavaScript. ## Install Instructions ### via npm - run install command from terminal ```bash npm install nanonet ``` - Import the NanoNet class into your project, e.g., ```javascript import NanoNet from 'nanonet' ``` ### via download - *Download* or *Clone* repository and unzip. - Import the NanoNet class into your project, e.g., ```javascript import NanoNet from './nanonet' ``` ## How to Use NanoNet ### Initialise - After importing the NanoNet class into your project (see above), you can create a new neural network instance as follows: ```javascript let neuralNetwork = new NanoNet(); ``` This initialises a neural network with one input layer, one hidden layer and one output layer by default. - To define the structure of the network, pass in an array to the class constructor as follows: ```javascript // The structure can be any array of integers >= 1 and with length >= 2. let structure = [8,4,2]; let neuralNetwork = new NanoNet(structure); ``` The array length defines the number of layers in the network, whilst the integer values define how many neurons should be initialised in each layer, e.g., a network with an input layer with 16 neurons and an output layer with 9 neurons would have a structure [16,9]. To add in 3 hidden layers, with 4,5 and 6 neurons respectively, the structure becomes [16,4,5,6,9]. The default structure is [2,2,2]. ### Methods #### .feedForward(inputData) ```javascript let inputData = [7.5,0.40576,8]; let fed = neuralNetwork.feedForward(inputData); ``` Given an array of input data, the feedForward method feeds the data forwards through the network and returns the NanoNet instance that was fed. *Data must be numeric.* **Important** \- The length of the array must match the length of the input layer to the network. Hopefully this is intuitive as each piece of data corresponds to an input activation. #### .train(trainingData) Given an array of training data, the network will be trained (i.e., will update its weights and biases using SGD style backpropagation). Training data *must be numeric* and structured as follows: ```javascript let trainingData = [ // Each element in the array is a training instance. [ // Each training instance is expected to hold two arrays, the first // holding the input data (see .feedForward) [7.5,0.40576,8], // and the second holding the expected output [0,1], ], // ... ]; let trained = neuralNetwork.train(trainingData); ``` The train method returns the updated instance of the NanoNet class. **Important** \- The length of the input and expected output arrays must match the input and output structure of the network. ### Properties #### .learningRate The learning rate can be manually updated by reassigning the value of the property: ```javascript let neuralNetwork = new NanoNet(); neuralNetwork.learningRate = 0.02; ``` The default learning rate is 0.1; ## License [MIT](http://opensource.org/licenses/MIT)