Hallo jojo,
1) Wie werden die einzelnen Skripte ( z. B. Load.as, Trainig.as, Thinking.as...) erstellt.
Die Dateien mit der Endung ".as" sind ausführbare Scripte/MemBrain Programme z.B. "Load_Lessons.as" und "Traintime.as"
Was Du meinst sind die Lessons (Die CSV-Dateien mit Deinen Daten).
Ich mach das so:
Ich habe eine "Excel oder OpenOffice" Datei, diese enthält z.B. 4 Tabellen (Norm, Train, Vali und Think).
Diese Tabellen mußt Du, wenn sie fertig sind, dann als CSV-Datei abspeichern oder exportieren.
Das sind dann reine Text-Dateien, bei denen jeder Wert durch ein Trennzeichen vom nächsten Wert getrennt ist z.B. so:
Wasser Dos. In %;TM;Fett abs;F.i. Tr.;pH;EW;Lactose;Konsistenz;Gesamtkäseanteil in %;Anteil Magerkäse jung in %;Alter junger Magerkäse;Visosität;Cremaniveau[l];Produktpumpe nach Crema [l/h];Dampfmenge [kg/h];Durchfl. Erhitzer [l/h];Temp. HH 1 [°C];Temp. HH 2 [°C];Temp. Umschaltventil [°C];Vakuum [bar];Temp. Steril-behälter [°C];Drehzahl Crema [%]
1;51,1;28,4;55,6;5,69;10,32;8,09;5;25,75;73,05;7,5;48,6;63,1;1684;219,5;1558,3;84,4;143,9;108,5;-0,37;92,2;30
1,8;50,8;28,9;56,8;5,71;9,56;7,48;5;25,75;73,05;7,5;152;63,1;1562,5;214,7;1581,8;85,3;143,8;108,1;-0,42;92;30
Das ist bei Deinen Daten schon richtig:
Trennzeichen = Semikolon ";"
Dezimaltrenner = Komma ","
Norm.csv ist nur zum normalisieren des Netzes, in dieser Datei sollten ALLE möglicherweise vorkommenden IN und Output Werte enthalten sein.
Damit wird in die IN/OUTput Neuronen nur der minimal und maximal mögliche Wert gespeichert (Du kannst dazu evtl. auch die Train.csv verwenden).
Jetzt kopierst Du alle Daten von der Tabelle Norm in die Tabelle Train.
Danach entfernst Du ca. 5-10 % der Daten am Ende der Train-Tabelle (ausschneiden, NICHT kopieren) und fügst diese in die Tabelle Vali ein.
Mit der Tabelle Vali (Validierungs-Daten) soll das Netz nämlich mit NICHT-gelernten Daten geprüft werden.
In die Tabelle Think trägst Du (wenn Dein Netz gut genug trainiert ist) NUR Deine Inputs ein, KEINEN Output, den soll Dir ja das Netz sagen, mit denen Du eine Voraussage machen möchtest.
2)Ich habe in meinem Netz eine HIDDEN-Ebene eingefügt. Wirkt sich diese Schicht irgendwie auf das Netzt aus oder ist die nur gut, damit man eine bessere Übersicht bekommt?
MIT ÜBERSICHT HAT DAS NICHTS ZU TUN.
In der Netzstruktur bist Du an nichts gebunden, Du kannst auch 2,3,4 Hiddenschichten einfügen, NUR OB DAS SINNVOLL IST ???
Du kannst es auch NUR mit IN/OUTputs versuchen.
Soweit ich das verstanden habe braucht das Netz aber eine gewisse Kapazität/Speicherplatz, es muß die Regeln Deiner Daten ja irgendwo festhalten.
Ist das Netz zu klein bleibt der NetError sehr hoch, das Netz kann nicht lernen, da es zu wenig Platz für die Informationen hat.
Ist das Netz zu groß, lernt es Deine Trainingsdaten einfach auswendig, auch nicht gut.
Du solltest also mit einem sehr kleinen Netz anfangen (ca. 2-3 Hidden-Neuronen), bleibt der NetError sehr hoch (Das merkst Du sehr schnell) fügst Du EIN weiteres Neuron in die Hiddenschicht ein.
3) Kann man aus dem Netz auch ablesen, welcher Parameter den größten Einfluss auf den Output hat? Sagen mir das die Farben der Verbindungslinien?
Die Farben sagen da, soweit ich weiss garnichts aus (Dachte ich am Anfang auch).
Die Linien/Links und die Neuronen sind GEWICHTE, die bei jeden Teachdurchlauf angepasst werden.
(War ein Link/Neuron gut, erhält es ein höheres Gewicht, war es schlecht, ein niedrigeres Gewicht, naja zumindest so änlich).
Es giebt im Downloadbereich von MemBrain, unter "VBA DLL-Beispiel" das Excel-Makro "MBInput-Qualify.zip", das soll genau das machen.
Ich kriegs leider nicht zum laufen.
4) Was sagen mir die Zahlen unter den Units?
Das soll Thomas beantworten, er kennt sich da besser aus.
5)Wie lange muss ich mein Netz eigentlich trainieren lassen und wann ist es trainiert? Das hängt wahrscheinlich vom "Net Error" ab.
Genau das kannst Du mit dem Script Traintime.as herausfinden.
Du lädst Dein Netz.
Du lädst Deine Lessons/Daten.
Du startest Traintime.
Dann wird Dir etwa sowas im Tracewindows angezeigt:
Der minimale Net Error von: 0.35557 wurde bei einer Trainingszeit von: 1 Sekunden erreicht.
Der minimale Net Error von: 0.348831 wurde bei einer Trainingszeit von: 1 Sekunden erreicht.
Der minimale Net Error von: 0.348344 wurde bei einer Trainingszeit von: 1 Sekunden erreicht.
Der minimale Net Error von: 0.337417 wurde bei einer Trainingszeit von: 35 Sekunden erreicht.
Der minimale Net Error von: 0.309332 wurde bei einer Trainingszeit von: 35 Sekunden erreicht.
Der minimale Net Error von: 0.309085 wurde bei einer Trainingszeit von: 48 Sekunden erreicht.
Der minimale Net Error von: 0.307378 wurde bei einer Trainingszeit von: 48 Sekunden erreicht.
Das kannst Du jetzt 1 Minute, 1 Stunde, 1 Tag oder 1 Jahr laufen lassen, erfolgt längere Zeit (1-15 Minuten) keine neue Zeile, hast Du etwa die Zeit, wie lange Du das Netz trainieren mußt.
Natürlich solltest Du einige male testen.
Du kannst jetzt auch den erreichten min. NetError als Abbruchkriterium für den Teacher verwenden.
Im Menü Teach > Teacher Manager > Edit > Target NetError (for Auto Teacher).
Jetzt bricht der Teacher den Lernvorgang ab, sobald dieser NetError erreicht wurde.
Du solltest auch darauf achten, daß beim Output in der Vali-Tabelle unterschiedliche Werte sind, bei Deiner Norm.csv waren die letzten Outputwerte alle bei 36.
Das ergiebt im Vali-Chart natürlich NUR einen geraden Strich.
2;49,5;28;56,4;5,8;9,18;8,13;5;24,59;81,33;0;0;76,1;69,4;131,5;832,8;143;85,3;99,8;-0,43;89,8;36
3;49,2;28,4;57,8;5,83;8,47;7,91;5;24,59;81,33;0;0;89,1;1579,9;227,4;1554,7;32,2;144,1;108,5;-0,4;91,2;36
2,5;49,1;27,8;56,6;5,83;9,41;7,4;6;24,59;81,33;0;70;149,6;1475,7;157,1;823,4;79;142,8;101,3;-0,39;89,1;36
3;49,4;28;56,6;5,82;9,17;7,98;6;24,59;81,33;0;85,2;96,2;1597,2;192,6;1577,1;143;84,1;106,8;-0,42;89,9;36
3,5;48,8;27,3;56;5,81;9,46;7,45;5;24,59;81,33;0;102,6;73,1;1579,9;220,6;1581,8;32,4;143,1;109,2;-0,39;89,9;36
3,5;48,4;27,6;57;5,81;8,62;7,55;5;24,59;81,33;0;94,4;99,2;1666,7;169,4;801;74,3;143;102,3;-0,41;89,8;36
2,7;49,2;27,8;56,5;5,75;8,99;7,92;5;24,59;81,33;0;87,5;85,2;1597,2;150,8;966,7;142,5;85;101,7;-0,38;89,3;36
2,7;49,5;28;56,7;5,76;9,08;8,31;5;24,59;81,33;0;72,3;19,8;1545,1;0;2386,5;34,4;15,7;51;-0,41;82,1;36
Ich hab alle Daten mal mit der Spalte "M" (Cremaniveau[l]) aufsteigen sortiert.
Ich schick Dir mal alles zurüch, hoffentlich hilfts.
In Tabellen.xls sind alle Daten.
Und noch ein guter Link:
http://www.dkriesel.com/science/neural_networks
PS: Es sieht schon VIEL BESSER aus als beim letzten Mal...
Gruß Seppy
- jojo.zip
- (20.21 KiB) Downloaded 708 times