Skip to content

Instantly share code, notes, and snippets.

@grzegorz2047
Created March 16, 2018 19:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grzegorz2047/508f8c62dcb52e1621093931c26a3358 to your computer and use it in GitHub Desktop.
Save grzegorz2047/508f8c62dcb52e1621093931c26a3358 to your computer and use it in GitHub Desktop.
My implementation of Perceptron
<html>
<head>
</head>
<body>
<script>
function usePerceptron(){
perceptron(0.01);
perceptron(0.10);
perceptron(1.00);
}
function neuron(weights,args){
let sum = 0.0;
for(let i = 0; i < args.length; i++){
let single = weights[i] * args[i];
sum += single;
}
return decide(sum);
}
function createZeroedVector(length){
let vec=[];
for(let i = 0; i < length; i++){
vec.push(1);
}
return vec;
}
function decide(u){
if(u >= 0) return 1;
else return 0;
}
function perceptron(cIntense){ //u1-u5 liniowo niezależne
pics=[];
u1=[
0.0,0.0,0.0,0.0,0.0,
0.0,1.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,0.0,
0.0,0.0,1.0,0.0,0.0,1.0
];
u2=[
0.0,0.0,0.0,0.0,0.0,
1.0,1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,0.0,1.0
];
u3=[
0.0,0.0,1.0,1.0,0.0,
0.0,0.0,0.0,1.0,0.0,
0.0,0.0,0.0,1.0,0.0,
0.0,0.0,0.0,0.0,0.0,
0.0,0.0,0.0,0.0,0.0,1.0
];
u4=[
0.0,0.0,0.0,0.0,0.0,
0.0,1.0,1.0,1.0,0.0,
0.0,1.0,0.0,1.0,0.0,
0.0,1.0,1.0,1.0,0.0,
0.0,0.0,0.0,0.0,0.0,1.0
];
u5=[
0.0,0.0,0.0,0.0,0.0,
0.0,0.0,0.0,0.0,0.0,
1.0,1.0,1.0,0.0,0.0,
1.0,0.0,1.0,0.0,0.0,
1.0,1.0,1.0,0.0,0.0,1.0
];
pics.push(u1);
pics.push(u2);
pics.push(u3);
pics.push(u4);
pics.push(u5);
let time = 1;
let good = 0;
let weights = createZeroedVector(26);
while(good < 5){
let teacherResult = learnDecider(time);
let currentPic = pics[time % 5];
let neuronResult = neuron(weights,currentPic);
let imageSize = 26;
for(let pixelPos = 0; pixelPos < imageSize; pixelPos++){
weights[pixelPos] = weights[pixelPos] + cIntense * (teacherResult - neuronResult) * currentPic[pixelPos];
}
if(learnDecider(time) == neuronResult){
good+=1
}else{
good=0;
}
time=time+1;
}
console.log("time = ",time);
console.log("weights = "+weights);
console.log("Wynik to ",neuron(weights,pics[4]));
}
function learnDecider(time){//sygnal nauczyciela
if(time % 5 <= 2){
return 1.0;
}
else {
return 0.0;
}
}
function addToVector(vector,number){
for(let i = 0; i < vector.length; i++){
vector[i] = vector[i] + number;
}
return vector;
}
function multiplyToVector(vector,number){
for(let i = 0; i < vector.length; i++){
vector[i] = vector[i] * number;
}
return vector;
}
usePerceptron();
</script>
</body>
</head>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment