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 🙏

© 2026 – Pkg Stats / Ryan Hefner

feedforward

v0.1.2

Published

feedforward network

Downloads

8

Readme

feedforward

author: Arne (voidragon) Simon [[email protected]]

A simple layered feedforward network with momentum based backward propergation.

It learns fast and it is easy to train a whole population of networks.

Please Donate

  • BTC: 17voJDvueb7iZtcLRrLtq3dfQYBaSi2GsU
  • ETC: 0x7bC5Ff6Bc22B4C6Af135493E6a8a11A62D209ae5

Example

Using Feedforward

const { Feedforward, Population } = require('feedforward');

const pattern = [
    [[0, 0], [0]],
    [[1, 0], [0]],
    [[0, 1], [0]],
    [[1, 1], [1]],
];

// --- train - feedforward ---

const net = new Feedforward({
    model: [2, 1],
    flexibility: 0.5
});

const measure = net.train({
    pattern,
    maxIterations: 70,
    minError: 0.1,
});

console.log(`iterations: ${measure.iterations} error: ${measure.error}`);

pattern.forEach(p => {
    const res = net.map(p[0]);
    console.log(`${p[1][0]} = ${res[0]} error: ${Math.abs(p[1][0] - res[0])}`);
});

Using Population

// --- train - population ---

const pop = new Population({
    model: [2, 1],
    spread: 10,
    flexibility: 0.5
});

const measure = pop.train({
    pattern,
    maxIterations: 70,
    minError: 0.1,
});

console.log(`iterations: ${measure.iterations} error: ${measure.error}`);

pattern.forEach(p => {
    const res = measure.net.map(p[0]);
    console.log(`${p[1][0]} = ${res[0]} error: ${Math.abs(p[1][0] - res[0])}`);
});

Save and load a network

// every thing that is needed is the config and the connections.
const data = JSON.stringify({
    config: net.config,
    connections: net.connections,
});

const loaded = JSON.parse(data);
const newNet = Feedforward.fromConnections(loaded.config, loaded.connections);

API

class Feedforward

A simple feedforward neuronal network.

fromConnections(config, connections)[static] -> net

Creates a new network for the config and initializes the connection values.

  • config - A feedforward config object.
  • connections - 2d array of connection values.
  • net - The newly created feedforward network.

new Feedforward(config)

  • config
    • model - Array of layer depths.
    • flexibility - How fast the net adepts.
    • activationThreshold - Idicates when an output cell identifies as on, aka 1.0 .

map(inputs) -> outputs

  • inputs - Array of input values, normalized between 1.0 and 0.0 .
  • outputs - An array of 0.0 or 1.0, indicating if the output neuron is off or on.

correct(outputs)

  • outputs - Array of expected output values, normalized between 1.0 and 0.0 .

train(options) -> measure

  • options - Training options.
    • pattern - The pattern to learn, aka approximate.
    • maxInterations - Maximum interations for the learning process.
    • minError - The minimum error at wich learning ends.
  • measure -
    • error - The avarage error for the pattern.
    • iterations - How many iterations where nessecary for learning the pattern.

class Population

new Population(config)

  • model - Array of layer depths.
  • spread - How many networks will be generated.
  • flexibility - How fast the net adepts.
  • activationThreshold - Indicates when an output cell identifies as on, aka 1.0 .

map(inputs) -> outputs

  • inputs - Array of input values, normalized between 1.0 and 0.0 .

correct(outputs)

  • outputs - Array of expected output values, normalized between 1.0 and 0.0 .

train(options) -> measure

  • options - Training options.
    • pattern - The pattern to learn, aka approximate.
    • maxInterations - Maximum interations for the learning process.
    • minError - The minimum error at wich learning ends.
  • measure -
    • error - The avarage error for the pattern.
    • iterations - How many iterations where nessecary for learning the pattern.
    • net - The feedforward network with the lowest error.

nextGeneration()

Takes the best network from the last training and prodcues new population based on this network.