Coder Social home page Coder Social logo

bradparks / neocortex__analyze_picture_for_subjects__eg_finds_frog_in_photo_node Goto Github PK

View Code? Open in Web Editor NEW

This project forked from scienceai/neocortex

0.0 1.0 0.0 565 KB

Run trained deep neural networks in the browser or node.js

Home Page: https://scienceai.github.io/neocortex

License: Apache License 2.0

JavaScript 91.46% GLSL 2.35% Python 6.19%

neocortex__analyze_picture_for_subjects__eg_finds_frog_in_photo_node's Introduction

PROJECT PAGE AND EXAMPLES

Run trained deep neural networks in the browser or node.js. Currently supports serialization from trained Keras models (note: not up-to-date with the current Keras API).

build status npm version

Background

Training deep neural networks on any meaningful dataset requires massive computational resources and lots and lots of time. However, the forward-pass prediction phase is relatively cheap - typically there is no backpropagation, computational graphs, loss functions, or optimization algorithms to worry about.

What do you do when you have a trained deep neural network and now wish to use it to power a part of your client-facing web application? Traditionally, you would deploy your model on a server and call it from your web application through an API. But what if you can deploy it in the browser alongside the rest of your webapp? Computation would be offloaded entirely to your end-user!

Perhaps most users will not be able to run billion-parameter networks in their browsers quite yet, but smaller networks are certainly within the realm of possibility.

The goal of this project is to provide a lightweight javascript library that can take a serialized Keras, Caffe, Torch or [insert other deep learning framework here] model, together with pre-trained weights, pack it in your webapp, and be up and running. Currently supports serialization from trained Keras models.

Examples

  • MNIST multi-layer perceptron / src / demo

  • CIFAR-10 VGGNet-like convolutional neural network / src / demo

  • LSTM recurrent neural network for classifying astronomical object names / src / demo

You can also run the examples on your local machine at http://localhost:8000:

$ npm run examples-server

Usage

See the source code of the examples above. In particular, the CIFAR-10 example demonstrates a multi-threaded implementation using Web Workers.

In the browser:

<script src="neocortex.min.js"></script>
<script>
  // use neural network here
</script>

In node.js:

$ npm install neocortex-js
import NeuralNet from 'neocortex-js';

The core steps involve:

  1. Instantiate neural network class
let nn = new NeuralNet({
  // relative URL in browser/webworker, absolute path in node.js
  modelFilePath: 'model.json',
  arrayType: 'float64', // float64 or float32
});
  1. Load the model JSON file, then once loaded, feed input data into neural network
nn.init().then(() => {
  let predictions = nn.predict(input);
  // make use of predictions
});

Build

To build the project yourself, for both the browser (outputs to build/neocortex.min.js) and node.js (outputs to dist/):

$ npm install
$ npm run build

To build just for the browser:

$ npm run build-browser

Keras

A script to serialize a trained Keras model together with its hdf5 formatted weights is located in the utils/ folder. It currently only supports sequential models with layers listed below. Implementation of graph models is planned.

Functions and layers currently implemented are listed below. More forthcoming.

  • Activation functions: linear, relu, sigmoid, hard_sigmoid, tanh, softmax

  • Advanced activation layers: leakyReLULayer, parametricReLULayer, parametricSoftplusLayer, thresholdedLinearLayer, thresholdedReLuLayer

  • Basic layers: denseLayer, dropoutLayer, flattenLayer, mergeLayer

  • Recurrent layers: rGRULayer (gated-recurrent unit or GRU), rLSTMLayer (long short-term memory or LSTM)

  • Convolutional layers: convolution2DLayer, maxPooling2DLayer, convolution1DLayer, maxPooling1DLayer

  • Embedding layers: embeddingLayer (maps indices to corresponding embedding vectors)

  • Normalization layers: batchNormalizationLayer

Tests

$ npm test

Browser testing is planned.

Credits

Thanks to @halmos for the logo.

Citation

DOI

License

Apache 2.0

neocortex__analyze_picture_for_subjects__eg_finds_frog_in_photo_node's People

Contributors

staticskies avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.