Skip to main content
Deno 2 is finally here 🎉️
Learn more


Netsaur


netsaur stars netsaur releases netsaur License


neural network deno module using neo

Maintainers

Usage

import {
  DenseLayer,
  NeuralNetwork,
  tensor1D,
  tensor2D,
} from "https://deno.land/x/netsaur/mod.ts";

const net = new NeuralNetwork({
  silent: true,
  layers: [
    new DenseLayer({ size: 3, activation: "sigmoid" }),
    new DenseLayer({ size: 1, activation: "sigmoid" }),
  ],
  cost: "crossentropy",
});

await net.train(
  [
    {
      inputs: await tensor2D([
        [0, 0],
        [1, 0],
        [0, 1],
        [1, 1],
      ]),
      outputs: await tensor1D([0, 1, 1, 0]),
    },
  ],
  5000,
);

console.log(await net.predict(new Float32Array([0, 0])));
console.log(await net.predict(new Float32Array([1, 0])));
console.log(await net.predict(new Float32Array([0, 1])));
console.log(await net.predict(new Float32Array([1, 1])));

Use the Native Backend

import { DenseLayer, NeuralNetwork } from "https://deno.land/x/netsaur/mod.ts";
import {
  Matrix,
  Native,
} from "https://deno.land/x/netsaur/backends/native/mod.ts";

const network = await new NeuralNetwork({
  input: 2,
  layers: [
    new DenseLayer({ size: 3, activation: "sigmoid" }),
    new DenseLayer({ size: 1, activation: "sigmoid" }),
  ],
  cost: "crossentropy",
}).setupBackend(Native);

network.train(
  [
    {
      inputs: Matrix.of([
        [0, 0],
        [0, 1],
        [1, 0],
        [1, 1],
      ]),
      outputs: Matrix.column([0, 1, 1, 0]),
    },
  ],
  5000,
  0.1,
);

console.log(
  await network.predict(
    Matrix.of([
      [0, 0],
      [0, 1],
      [1, 0],
      [1, 1],
    ]),
  ),
);

Saving Models

import {
  DenseLayer,
  NeuralNetwork,
  tensor1D,
  tensor2D,
} from "https://deno.land/x/netsaur/mod.ts";
import { Model } from "https://deno.land/x/netsaur/model/mod.ts";

const net = new NeuralNetwork({
  silent: true,
  layers: [
    new DenseLayer({ size: 3, activation: "sigmoid" }),
    new DenseLayer({ size: 1, activation: "sigmoid" }),
  ],
  cost: "crossentropy",
});

await net.train(
  [
    {
      inputs: await tensor2D([
        [0, 0],
        [1, 0],
        [0, 1],
        [1, 1],
      ]),
      outputs: await tensor1D([0, 1, 1, 0]),
    },
  ],
  5000,
);

await Model.save("./network.json", net);

Loading & Running Models

import { Model } from "https://deno.land/x/netsaur/model/mod.ts";

const net = await Model.load("./network.json");

console.log(await net.predict(new Float32Array([0, 0])));
console.log(await net.predict(new Float32Array([1, 0])));
console.log(await net.predict(new Float32Array([0, 1])));
console.log(await net.predict(new Float32Array([1, 1])));