Fantastisches Community-Modul

Synaptisch Build-Status Nehmen Sie am Chat unter https://synapticjs.slack.com teil

Wichtig: Synaptic 2.x befindet sich derzeit in der Diskussionsphase! Nehmen Sie gerne teil

Synaptic ist eine Javascript-Bibliothek für neuronale Netzwerke für node.js und den Browser . Der verallgemeinerte Algorithmus ist architekturfrei, sodass Sie grundsätzlich jede Art von neuronalen Netzwerkarchitekturen erster oder sogar zweiter Ordnung erstellen und trainieren können.

Diese Bibliothek enthält einige integrierte Architekturen wie mehrschichtige Perzeptrone , mehrschichtige Langzeit-Kurzzeitgedächtnisnetzwerke (LSTM), Liquid State Machines oder Hopfield- Netzwerke sowie einen Trainer, der in der Lage ist, ein bestimmtes Netzwerk zu trainieren, einschließlich integrierter Trainingsaufgaben / -tests B. das Lösen eines XOR, das Ausführen einer Distracted Sequence Recall-Aufgabe oder eines Embedded Reber-Grammatiktests , damit Sie die Leistung verschiedener Architekturen einfach testen und vergleichen können.

Der von dieser Bibliothek implementierte Algorithmus wurde Derek D. Monners Artikel entnommen:

Ein verallgemeinerter LSTM-ähnlicher Trainingsalgorithmus für wiederkehrende neuronale Netze zweiter Ordnung

Es gibt Verweise auf die Gleichungen in diesem Artikel, die durch den Quellcode kommentiert werden.

Einführung

Wenn Sie keine Vorkenntnisse über neuronale Netze haben, sollten Sie zunächst dieses Handbuch lesen .

Wenn Sie ein praktisches Beispiel zum Einspeisen von Daten in ein neuronales Netzwerk wünschen, lesen Sie diesen Artikel .

Vielleicht möchten Sie auch einen Blick auf diesen Artikel werfen.

Demos

Der Quellcode dieser Demos befindet sich in diesem Zweig .

Erste Schritte

Um die Beispiele auszuprobieren, überprüfen Sie den Zweig gh-pages .

git checkout gh-pages

Andere Sprachen

Diese README-Datei ist auch in anderen Sprachen verfügbar.

Übersicht

Installation

Im Knoten

Sie können synaptic mit npm installieren:

1
npm install synaptic --save
Im Browser

Sie können synaptic mit bower installieren:

1
bower install synaptic

Oder Sie können einfach den CDN-Link verwenden, der freundlicherweise von CDNjs bereitgestellt wird

1
<script src="https://cdnjs.cloudflare.com/ajax/libs/synaptic/1.1.4/synaptic.js"></script>

Usage

1 2 3 4 5 6
var synaptic = require('synaptic'); // this line is not needed in the browser var Neuron = synaptic.Neuron, Layer = synaptic.Layer, Network = synaptic.Network, Trainer = synaptic.Trainer, Architect = synaptic.Architect;

Jetzt können Sie Netzwerke erstellen, trainieren oder integrierte Netzwerke des Architekten verwenden .

Examples

Perceptron

So können Sie ein einfaches Perzeptron erstellen:

Perzeptron .

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
function Perceptron(input, hidden, output) { // create the layers var inputLayer = new Layer(input); var hiddenLayer = new Layer(hidden); var outputLayer = new Layer(output); // connect the layers inputLayer.project(hiddenLayer); hiddenLayer.project(outputLayer); // set the layers this.set({ input: inputLayer, hidden: [hiddenLayer], output: outputLayer }); } // extend the prototype chain Perceptron.prototype = new Network(); Perceptron.prototype.constructor = Perceptron;

Jetzt können Sie Ihr neues Netzwerk testen, indem Sie einen Trainer erstellen und dem Perzeptron das Erlernen eines XOR beibringen

1 2 3 4 5 6 7 8 9
var myPerceptron = new Perceptron(2,3,1); var myTrainer = new Trainer(myPerceptron); myTrainer.XOR(); // { error: 0.004998819355993572, iterations: 21871, time: 356 } myPerceptron.activate([0,0]); // 0.0268581547421616 myPerceptron.activate([1,0]); // 0.9829673642853368 myPerceptron.activate([0,1]); // 0.9831714267395621 myPerceptron.activate([1,1]); // 0.02128894618097928
Langes Kurzzeitgedächtnis

Auf diese Weise können Sie ein einfaches Langzeit-Kurzzeitspeichernetzwerk mit Eingangs-, Vergessens-, Ausgangs- und Gucklochverbindungen erstellen:

langes Kurzzeitgedächtnis

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
function LSTM(input, blocks, output) { // create the layers var inputLayer = new Layer(input); var inputGate = new Layer(blocks); var forgetGate = new Layer(blocks); var memoryCell = new Layer(blocks); var outputGate = new Layer(blocks); var outputLayer = new Layer(output); // connections from input layer var input = inputLayer.project(memoryCell); inputLayer.project(inputGate); inputLayer.project(forgetGate); inputLayer.project(outputGate); // connections from memory cell var output = memoryCell.project(outputLayer); // self-connection var self = memoryCell.project(memoryCell); // peepholes memoryCell.project(inputGate); memoryCell.project(forgetGate); memoryCell.project(outputGate); // gates inputGate.gate(input, Layer.gateType.INPUT); forgetGate.gate(self, Layer.gateType.ONE_TO_ONE); outputGate.gate(output, Layer.gateType.OUTPUT); // input to output direct connection inputLayer.project(outputLayer); // set the layers of the neural network this.set({ input: inputLayer, hidden: [inputGate, forgetGate, memoryCell, outputGate], output: outputLayer }); } // extend the prototype chain LSTM.prototype = new Network(); LSTM.prototype.constructor = LSTM;

Dies sind Beispiele für Erklärungszwecke. Der Architekt enthält bereits Multilayer-Perceptrons und Multilayer-LSTM-Netzwerkarchitekturen.

Tragen Sie bei

Synaptic ist ein Open Source-Projekt, das in Buenos Aires, Argentinien, gestartet wurde. Jeder auf der Welt ist herzlich eingeladen, zur Entwicklung des Projekts beizutragen.

Wenn Sie einen Beitrag zum Senden von PRs leisten möchten, stellen Sie sicher, dass Sie npm run test und npm run build ausführen, bevor Sie ihn senden. Auf diese Weise führen Sie alle Testspezifikationen aus und erstellen die Webverteilungsdateien.

Unterstützung

Wenn Ihnen dieses Projekt gefällt und Sie Ihre Unterstützung zeigen möchten, können Sie mir ein Bier mit magischem Internetgeld kaufen :

1 2 3 4
BTC: 16ePagGBbHfm2d6esjMXcUBTNgqpnLWNeK ETH: 0xa423bfe9db2dc125dd3b56f215e09658491cc556 LTC: LeeemeZj6YL6pkTTtEGHFD6idDxHBF2HXa XMR: 46WNbmwXpYxiBpkbHjAgjC65cyzAxtaaBQjcGpAZquhBKw2r8NtPQniEgMJcwFMCZzSBrEJtmPsTR54MoGBDbjTi2W1XmgM

<3