Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:neuronale_netze_kurs [2025-06-30 09:11] – [3. Aufgaben] sca | talit:neuronale_netze_kurs [2025-07-02 11:00] (aktuell) – [1. Plan] hof | ||
---|---|---|---|
Zeile 21: | Zeile 21: | ||
|MI Morgen| Recap: Neuronale Netze Programmieren | | |MI Morgen| Recap: Neuronale Netze Programmieren | | ||
|:::| weiter an Aufgaben | | |:::| weiter an Aufgaben | | ||
- | |MI Nachmittag| | + | |MI Nachmittag| |
|DO Morgen| weiter an Aufgaben | | |DO Morgen| weiter an Aufgaben | | ||
|DO Nachmittag| Buffer | | |DO Nachmittag| Buffer | | ||
Zeile 39: | Zeile 39: | ||
==== Repos ==== | ==== Repos ==== | ||
- | < | + | < |
++++Hide| | ++++Hide| | ||
* [[https:// | * [[https:// | ||
Zeile 68: | Zeile 68: | ||
**Tipps:** | **Tipps:** | ||
- | * CSV-File einlesen: | + | * **CSV-File einlesen:** |
<code python> | <code python> | ||
Zeile 87: | Zeile 87: | ||
* Achtung: Liest man File ein, werden Zahlen typischerweise als Text interpretiert. Daher muss man diese noch in ints umwandeln. Mit *List Comprehensions* geht dies sehr einfach. | * Achtung: Liest man File ein, werden Zahlen typischerweise als Text interpretiert. Daher muss man diese noch in ints umwandeln. Mit *List Comprehensions* geht dies sehr einfach. | ||
+ | |||
+ | * **Numpy-Arrays in File speichern und laden** (z.B. Liste mit Gewichtsmatrizen): | ||
+ | |||
+ | <code python> | ||
+ | import numpy as np | ||
+ | |||
+ | # SAVE LIST OF NP ARRAYS | ||
+ | array_list = [np.array([1, | ||
+ | object_array = np.array(array_list, | ||
+ | np.save(' | ||
+ | |||
+ | # LOAD INTO LIST OF NP ARRAYS | ||
+ | loaded_array_list = np.load(' | ||
+ | loaded_array_list = list(loaded_array_list) | ||
+ | </ | ||
==== Aufgabe 2 ==== | ==== Aufgabe 2 ==== | ||
Zeile 152: | Zeile 167: | ||
* Besprich deine Lösung mit dem Lehrer. | * Besprich deine Lösung mit dem Lehrer. | ||
+ | <code python> | ||
+ | # Stuktur: | ||
+ | class Network: | ||
+ | def __init__(self, | ||
+ | # Variablen für Anz. Neuronen definieren | ||
+ | # Gewichtsmatrizen erzeugen (zufällige Werte) | ||
+ | |||
+ | def feedforward(self, | ||
+ | # hidden Layer h aus Eingangswerten x und Gewichtsmatrix wA berechnen. | ||
+ | # output Layer y aus Ausgangswerten y und Gewichtsmatrix wB berechnen. | ||
+ | # beides (h und y) zurückgeben. | ||
+ | |||
+ | def test(self, data_list): | ||
+ | # data_list Zeile für Zeile durchgehen: | ||
+ | # Target-Wert auslesen und Target-Vektor erstellen, | ||
+ | # Einangswerte auslesen und Eingangs-Vektor erstellen. --> read_data | ||
+ | # Hidden- und Output-Werte aus Eingangswerten berechnen --> feedforward | ||
+ | # Ausgangswert mit Eingangswert vergleichen, | ||
+ | # Erfolgsquote zurückgeben. | ||
+ | def train(self, data_list): | ||
+ | # data_list Zeile für Zeile durchgehen: | ||
+ | # Target-Wert auslesen und Target-Vektor erstellen, | ||
+ | # Einangswerte auslesen und Eingangs-Vektor erstellen. --> read_data | ||
+ | # Hidden- und Output-Werte aus Eingangswerten berechnen --> feedforward | ||
+ | # Fehler auf Output-Layer berechnenen (Target - Output) | ||
+ | # Fehler auf Hidden-Layer berechnen | ||
+ | # Gewichtsmatrizen wA und WB aktualisieren (siehe Folie " | ||
+ | |||
+ | # Erstelle ein Netzwerk für das Toy-Problem: | ||
+ | toy_net = Network(4, 3, 2) | ||
+ | # Datenliste aus CSV auslesen und: | ||
+ | # Testen (Erfolg für Toy-Problem ca. 50 %) | ||
+ | # Trainieren | ||
+ | # Testen (Erfolg hoffentlich ca. 90 %) | ||
+ | </ | ||
==== Aufgabe 4 ==== | ==== Aufgabe 4 ==== | ||