素晴らしいコミュニティモジュール

シナプスビルドステータスhttps://synapticjs.slack.comでチャットに参加してください

重要: Synaptic 2.xは現在議論の段階にあります!お気軽に参加してください

Synapticはnode.jsブラウザ用のjavascriptニューラルネットワークライブラリであり、その一般化されたアルゴリズムはアーキテクチャフリーであるため、基本的にあらゆるタイプの1次または2次ニューラルネットワークアーキテクチャを構築およびトレーニングできます。

このライブラリには、多層パーセプトロン多層長期短期メモリネットワーク(LSTM)、液体状態マシンまたはホップフィールドネットワークなどのいくつかの組み込みアーキテクチャ、および組み込みのトレーニングタスク/テストを含む任意のネットワークをトレーニングできるトレーナーが含まれています。 XORの解決、Distracted SequenceRecallタスクまたはEmbeddedReber Grammarテストの完了など、さまざまなアーキテクチャのパフォーマンスを簡単にテストおよび比較できます。

このライブラリによって実装されるアルゴリズムは、Derek D.Monnerの論文から引用されています。

二次再発神経ネットワークのための一般化されたLSTMのようなトレーニングアルゴリズム

ソースコードを通してコメントされたその論文の方程式への参照があります。

前書き

ニューラルネットワークについての予備知識がない場合は、このガイドを読むことから始める必要があります。

ニューラルネットワークにデータをフィードする方法の実際的な例が必要な場合は、この記事を参照てください

この記事もご覧ください

デモ

これらのデモのソースコードは、このブランチにあります。

入門

例を試すには、 gh-pagesブランチをチェックアウトしてください。

git checkout gh-pages

他の言語

このREADMEは、他の言語でも利用できます。

概要概要

Installation

ノード内

あなたはnpmでシナプスをインストールすることができます:

1
npm install synaptic --save
ブラウザで

あなたはbowerでシナプスをインストールすることができます:

1
bower install synaptic

または、 CDNjsから提供されたCDNリンクを使用することもできます。

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;

これで、ネットワークの作成、トレーニング、またはアーキテクトの組み込みネットワークの使用を開始できます。

Examples

パーセプトロン

これは、単純なパーセプトロンを作成する方法です。

パーセプトロン

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;

これで、トレーナーを作成し、パーセプトロンにXORを学習するように教えることで、新しいネットワークをテストできます。

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
長期短期記憶

これは、入力ゲート、忘却ゲート、出力ゲート、およびのぞき穴接続を備えた単純な長期メモリネットワークを作成する方法です。

長期短期記憶

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;

これらは説明のための例であり、アーキテクトにはすでにマルチレイヤーパーセプトロンとマルチレイヤーLSTMネットワークアーキテクチャが含まれています。

助ける

Synapticは、アルゼンチンのブエノスアイレスで開始されたオープンソースプロジェクトです。世界中の誰もがプロジェクトの開発に貢献することを歓迎します。

貢献したい場合は、PRを送信してください。送信する前に、必ずnpm runtestnpmrun buildを実行してください。これにより、すべてのテスト仕様を実行し、Web配布ファイルをビルドできます。

サポート

このプロジェクトが好きで、あなたのサポートを示したい場合は、魔法のインターネットマネーで私にビールを買うことができます

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

<3