JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/synaptic/1.1.4/synaptic.js"></script>
<div class="input"><span class="title">Input:</span>
</div>
<div class="output"><span class="title">Output:</span>
</div>
CSS
div {
white-space: pre;
display: inline-block;
vertical-align: top;
font-family: monospace;
margin: .5em 1em;
}
.title {
font-weight: bold;
font-family: sans-serif;
}
JavaScript
console.clear();
var toBinaryArray = function(str){
var arr = [];
for (var i = 0; i < str.length; i++) {
var substr = str.charCodeAt(i).toString(2).padStart(7, "0");
arr = arr.concat(substr.split(""));
}
return arr;
};
var binaryArrayToAsciiString = function(arr){
var str = "";
var string = arr.join("");
for (var i = 0; i < arr.length; i+=7) {
var letter = string.substring(i,i+7);
str += String.fromCharCode(parseInt(letter,2));
}
return str;
};
var s = window.synaptic;
var Architect = s.Architect;
var Trainer = s.Trainer;
var myNetwork = new Architect.Perceptron(2, 3, 49)
var trainer = new Trainer(myNetwork)
var trainingSet = [
{
input: [0,0],
// "-------"
output: toBinaryArray("Call me"),
},
{
input: [0,1],
// "-------"
output: toBinaryArray("Ishmael"),
},
{
input: [1,0],
// "-------"
output: toBinaryArray("Some ye"),
},
{
input: [1,1],
// "-------"
output: toBinaryArray("ars ago"),
},
];
function roundArray (a) {
var newArr = [];
a.forEach(function(c,i){
newArr.push(Math.round(c));
});
return newArr;
}
trainer.train(trainingSet,{
iterations: 300000,
log: 1000,
});
console.log("Input: `00` --> " + "Output: `" + binaryArrayToAsciiString(roundArray(myNetwork.activate([0,0])))) + "`";
console.log("Input: `01` --> " + "Output: `" + binaryArrayToAsciiString(roundArray(myNetwork.activate([0,1])))) + "`";
console.log("Input: `10` --> " + "Output: `" + binaryArrayToAsciiString(roundArray(myNetwork.activate([1,0])))) + "`";
console.log("Input: `11` --> " + "Output: `" + binaryArrayToAsciiString(roundArray(myNetwork.activate([1,1])))) + "`";
var inp = document.querySelector(".input");
var out = document.querySelector(".output");
inp.append("00\n");
out.append(binaryArrayToAsciiString(roundArray(myNetwork.activate([0,0]))) +...