So, hieße das, das ich nicht CNeuron habe sondern CNeuronSprechen, CNeuronSehen usw. ???
Nein, die Neuronen sind baugleich. Sie wirken sich eben nur auf andere Teile des Körpers aus. Die einen steuern eben die Zunge beim Sprechen, die anderen verarbeiten Sinneseindrücke aus dem Ohr.
Es gibt ja auch Leute, die Töne "sehen" können. Bei denen bekommen die Neuronen, die für das Sehen zuständig sind auch Inputs von den Nervenzellen im Ohr, was zu tollen Effekten führt. Die Betroffenen beschreiben die Wahrnehmungen oftmals als bunte Nebelschleier etc.
(Ja, das geht bei denen auch ohne Drogen)
Und wie funktioniert das mit der Gewichtung ? Können Neuronen auch mehr als einen Ausgang haben, macht das Sinn ?
Nein, das macht keinen Sinn. Ein Neuron berechnet das Skalarprodukt aus Eingabevektor und Gewichtsvektor, dabei kommt eben nur ein Ergebnis raus.
Ich habe hier das Programm Neuron.exe gefunden, kann jemand auch den Source zur Verfügung stellen ?
Bitte ...
Das habe ich aber damals in ein paar Minuten hingepfuscht, der Code ist alles andere als ein Beispiel für gute Programmierung 
Code:
int main(int argc, char* argv[])
{ float gewichte[8];
float gesamt;
int zahl;
char antwort;
int i,j;
int falsch=0;
float konstante=1.8;
for (i=0;i<8;i++) gewichte[i]=random(2);
cout << "Hallo, ich bin dein neuronales Netz." << endl << "Bringst du mir was bei? Ich will etwas ueber Zahlen lernen." << endl;
cout << endl <<"Damit du siehst, was ich schon kann, werde ich jetzt alle" <<endl << "Zahlen von 1 bis 255 in gerade/ungerade Zahlen einordnen " <<endl << "und selber ueberpruefen, ob meine Antworten stimmen.";
cout << endl<< endl<<endl;
for (zahl=1;zahl<256;zahl++)
{ gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
if ((gesamt>0) && (zahl % 2)) falsch++;
}
cout << "Ohje, von den 255 Zahlen habe ich " << falsch << " falsch eingeordnet." <<endl << "Ich glaube du musst mir helfen."<<endl <<endl;
cout << "Du sagst mir eine Zahl zwischen 1 und 255 und ich sage dir,"<< endl <<"ob es eine gerade oder ungerade Zahl ist, ok?" <<endl <<"Danach sagst du mir, ob ich richtig oder falsch geantwortet habe."<< endl;
cout << endl << endl << "Wenn du keine Lust mehr hast, gib einfach 0 ein.";
cout <<endl << endl << "Also los gehts" << endl;
while(1)
{ cout << "Bitte gib eine Zahl ein...";
cin >> zahl;
if (zahl==0) break;
gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
konstante-=0.05;
if (konstante<0.1) konstante=0.1;
if (gesamt >0) cout << "Ich glaube, "<< zahl<< " ist eine gerade Zahl." <<endl;
else cout << "Ich glaube, "<< zahl<< " ist eine ungerade Zahl." <<endl;
cout << "Ist das richtig? (j/n)";
cin >> antwort;
if ((antwort=='n') && (gesamt>0.0))
{ for (i=0;i<8;i++) gewichte[i]-=konstante*(float)((zahl >> i)&1);
}
if ((antwort=='n') && (gesamt<=0))
{ for (i=0;i<8;i++) gewichte[i]+=konstante*(float)((zahl >> i)&1);
}
cout << endl << "Falsch klassifizierte Zahlen:" << endl;
falsch=0;
for (zahl=1;zahl<256;zahl++)
{ gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
if ((gesamt>0) && (zahl % 2)!=0) {falsch++; cout << zahl << " ";}
if ((gesamt<=0) && (zahl % 2)==0) {falsch++; cout << zahl << " ";}
}
cout << endl <<endl <<"Super, durch deine Hilfe kann ich jetzt schon "<< 255-falsch << " Zahlen richtig einordnen. Das sind nur " << falsch << " falsche."<<endl;
}
return 0;
}
Lesezeichen