npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

jellybrain

v1.1.0

Published

A simple artificial neural network

Downloads

18

Readme

JellyBrain

JellyBrain is a simple neural network written in Javascript. This was written as an exercise to learn how neural networks work. You can also test out the neural network with hand drawn numbers here: https://frasersab.github.io/JellyBrainInteractive/

Installation

npm install jellybrain

Simple Usage

const {JellyBrain} = require('../JellyBrain.js');

let brain = new JellyBrain(2, 2, 1);    // 2 inputs, 2 hidden nodes, 1 output

brain.train([0.2, 0.5], [1]);
brain.guess([0.1, 0.6]);

Available Functions

Activation Functions

  • sigmoid - Sigmoid activation (output range 0-1)
  • tanh - Hyperbolic tangent (output range -1 to 1)
  • relu - Rectified Linear Unit
  • lrelu - Leaky ReLU
  • linear - Linear activation (no transformation)
  • softmax - Softmax activation (for multi-class classification)

Cost Functions

  • errorSquared - Mean squared error (default)
  • crossEntropy - Cross entropy (for multi-class with softmax)
  • binaryCrossEntropy - Binary cross entropy

Advanced Usage

Custom Configuration

const {JellyBrain, costFuncs, activationFuncs} = require('../JellyBrain.js');

// Constructor: (inputNodes, hiddenNodes, outputNodes, costFunction, learningRate, hiddenActivation, outputActivation)
let brain = new JellyBrain(
    784,                           // input nodes
    784,                           // hidden nodes
    10,                            // output nodes
    costFuncs.crossEntropy,        // cost function
    0.001,                         // learning rate
    activationFuncs.sigmoid,       // hidden layer activation
    activationFuncs.softmax        // output layer activation
);

Batch Training

let simpleBrain = new JellyBrain(2, 2, 1);

simpleBrain.addToBatch([0.2, 0.5], [1]);
simpleBrain.addToBatch([0.6, 0.4], [0.7]);
simpleBrain.addToBatch([0.1, 0.2], [0.2]);
simpleBrain.computeBatch();
simpleBrain.clearBatch();

Saving and Loading Brains

// Export brain state
let brainData = brain.exportBrain();
let jsonString = JSON.stringify(brainData);

// Import brain state
let loadedData = JSON.parse(jsonString);
brain.importBrain(loadedData);

Example Configurations

Simple Linear Regression

const {JellyBrain, sigmoid} = require('../JellyBrain.js');
let brain = new JellyBrain(1, 8, 1, undefined, 0.5, sigmoid, sigmoid);

Binary Classification

const {JellyBrain} = require('../JellyBrain.js');
let brain = new JellyBrain(2, 5, 1);
brain.setLearningRate(0.1);

Multi-class Classification (MNIST)

const {JellyBrain, costFuncs, activationFuncs} = require('../JellyBrain.js');
let brain = new JellyBrain(784, 784, 10, costFuncs.crossEntropy, 0.0008, activationFuncs.sigmoid, activationFuncs.softmax);

Examples

The src/examples/ directory contains several working examples:

  • simpleLinearRegression.js - Learning y = 2x using sigmoid activation
  • multipleLinearRegression.js - Learning y = 2a + 3b using sigmoid activation
  • binaryClassification.js - Classifying points above/below a line
  • numberIdentifier.js - MNIST digit recognition with pre-trained models

Utility Scripts

Generate PNG images from dataset files:

# Generate MNIST images
npm run generate-mnist -- 0 10 test   # First 10 test images
npm run generate-mnist -- 0 10 train  # First 10 training images

# Generate custom dataset images
npm run generate-custom -- 0 10       # First 10 custom images

License

ISC