Skip to content

Repository files navigation

brain.js train-stream

A node train stream for brain.js

Usage

Streams are a very powerful tool in node for massive data spread across processes and are provided via the brain.js api in the following way:

Use with brain.js' NeuralNetwork class

import{NeuralNetwork}from'brain.js';import{TrainStream}from'train-stream';constnet=newNeuralNetwork();consttrainStream=newTrainStream({neuralNetwork: net,floodCallback: ()=>{readInputs(trainStream,data);},doneTrainingCallback: (stats)=>{// network is done training! What next?},});// kick it offreadInputs(trainStream,data);functionreadInputs(stream,data){for(leti=0;i<data.length;i++){stream.write(data[i]);}// let it know we've reached the end of the inputsstream.endInputs();}

Use with brain.js' RNN/LSTM class

import{recurrent,utilities}from'brain.js';import{TrainStream}from'train-stream';const{LSTM}=recurrent;constneuralNetwork=newLSTM({hiddenLayers: [10],dataFormatter: newutilities.DataFormatter(),// You'll need to setup a dataformatter});consttrainStream=newTrainStream({
neuralNetwork,floodCallback: ()=>{trainStream.write(myData);trainStream.endInputs();},doneTrainingCallback: (stats)=>{// network is done training! What next?},});

An example of using train stream can be found in examples/stream-example.ts

API

The network now has a WriteStream. You can train the network by using pipe() to send the training data to the network.

Initialization

To train the network using a stream you must first initialize the stream new TrainStream({ neuralNetwork, floodCallback, doneTrainingCallback }) which takes the following options:

  • neuralNetwork - the instance of neural network from brain.js used with the stream. Examples are NeuralNetwork, LSTMTimeStep, or LSTM.
  • floodCallback - the callback function to re-populate the stream. This gets called on every training iteration.
  • doneTrainingCallback(info: { error: number, iterations: number}) - the callback function to execute when the network is done training. The info param will contain a hash of information about how the training went.

Transform

Use a Transform to coerce the data into the correct format. You might also use a Transform stream to normalize your data on the fly.

About

A node train stream for brain.js

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages