JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/synaptic/1.0.11/synaptic.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://wagenaartje.github.io/neataptic/cdn/1.2.23/neataptic.js"></script>
<h1>
Comparison training w/ Synaptic vs. Neataptic
</h1>
<i>Lower iterations = better</i>
<p class="neataptic"></p>
<p class="synaptic"></p>
JavaScript
var dataSets = {
'XOR' : [
{ input: [0,0], output: [0] },
{ input: [0,1], output: [1] },
{ input: [1,0], output: [1] },
{ input: [1,1], output: [0] }
],
'XNOR' : [
{ input: [0,0], output: [1] },
{ input: [0,1], output: [0] },
{ input: [1,0], output: [0] },
{ input: [1,1], output: [1] }
],
'AND' : [
{ input: [0,0], output: [0] },
{ input: [0,1], output: [0] },
{ input: [1,0], output: [0] },
{ input: [1,1], output: [1] }
],
'OR' : [
{ input: [0,0], output: [0] },
{ input: [0,1], output: [1] },
{ input: [1,0], output: [1] },
{ input: [1,1], output: [1] }
]
};
/** TEST NEATAPTIC **/
neataptic.Config.warnings = false;
var iterations = 0;
var time = 0;
for(var dataSet in dataSets){
dataSet = dataSets[dataSet];
var network = new neataptic.Architect.Perceptron(2, 4, 1);
var results = network.train(dataSet, {
momentum: 0.9,
iterations: 1000,
error: 0.03,
rate: 0.3
});
iterations += results.iterations;
time += results.time;
}
$('.neataptic').append("Neataptic iterations: " + iterations);
$('.neataptic').append(", time: " + time + 'ms');
/** TEST SYNAPTIC **/
var iterations = 0;
var time = 0;
for(var dataSet in dataSets){
dataSet = dataSets[dataSet];
var network = new synaptic.Architect.Perceptron(2, 4, 1);
var trainer = new synaptic.Trainer(network);
var results = trainer.train(dataSet, {
iterations: 1000,
error: 0.03,
rate: 0.3
});
iterations += results.iterations;
time += results.time;
}
$('.synaptic').append("Synaptic iterations: " + iterations);
$('.synaptic').append(", time: " + time + 'ms');