Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:neuronale_netze_kurs [2024-06-30 22:31] – [Aufgabe 1] scatalit:neuronale_netze_kurs [2024-07-04 06:54] (aktuell) – [Files] hof
Zeile 38: Zeile 38:
    * {{ :talit:data_mnist.zip |}}    * {{ :talit:data_mnist.zip |}}
  
 +==== Repos ====
  
 +   * [[https://github.com/tkilla77/ksr_talenta_nn|github.com/tkilla77/ksr_talenta_nn]]
 ===== - Aufgaben ===== ===== - Aufgaben =====
  
Zeile 84: Zeile 86:
  
 ==== Aufgabe 2 ==== ==== Aufgabe 2 ====
 +
 +<color red>**Bemerkung für 2024**: Leider hatten wir keine Zeit, die **objektorientierte Programmierung (OOP)** zu behandeln. Recherchiere deshalb selbst kurz dazu im Internet oder studiere ein passendes Video, z.B.:</color>
 +
 +   * [[https://www.youtube.com/watch?v=i1uQgU7NOCw]]
 +   * [[https://www.youtube.com/watch?v=q2SGW2VgwAM]]
 +
 +
 +Auftrag:
    
    * **Ziel: Grundgerüst für ein neuronales Netzwerk objektorientiert programmieren**    * **Ziel: Grundgerüst für ein neuronales Netzwerk objektorientiert programmieren**
Zeile 98: Zeile 108:
    * Die Klasse hat eine Methode `feedforward`. Dieser wird als Argument ein Input-Array übergeben. Diesen ‘feeded’ sie dann ‘forward’ und berechnet den zugehörigen Output.    * Die Klasse hat eine Methode `feedforward`. Dieser wird als Argument ein Input-Array übergeben. Diesen ‘feeded’ sie dann ‘forward’ und berechnet den zugehörigen Output.
    * Die Klasse hat eine Methode `test`. Dieser kann man als Argument einen Datensatz übergeben, der dann durch das NN gefüttert wird. Es wird die Erfolgsquote zurückgegeben: Für wie viele (in Prozent) der Datenpunkte produziert das NN einen korrekten Output?.    * Die Klasse hat eine Methode `test`. Dieser kann man als Argument einen Datensatz übergeben, der dann durch das NN gefüttert wird. Es wird die Erfolgsquote zurückgegeben: Für wie viele (in Prozent) der Datenpunkte produziert das NN einen korrekten Output?.
-   * Lade sowohl die Daten des Toy-Problems wie auch die MNIST Daten ein. Erstelle je ein Neuronales Netz (Anzahl Neuronen pro Layer richtig wählen) und teste mit der `test` Methode, wie gut dein NN funktioniert. +   * Lade sowohl die Daten des Toy-Problems wie auch die MNIST Daten ein. Erstelle je ein Neuronales Netz (Anzahl Neuronen pro Layer richtig wählen) und teste mit der `test` Methode, wie gut dein NN funktioniert.
    * Tipp: Da die Gewichtsmatrizen zufällig erzeugt werden, sollte also bei unserem Toy-Problem eine Erfolgsquote von etwa 50% resultieren.    * Tipp: Da die Gewichtsmatrizen zufällig erzeugt werden, sollte also bei unserem Toy-Problem eine Erfolgsquote von etwa 50% resultieren.
    * Besprich deine Lösung mit dem Lehrer.    * Besprich deine Lösung mit dem Lehrer.
  
 +\\
 +<code python>
 +# Stuktur:
 +class Network:
 +    def __init__(self, input_neurons, hidden_neurons, output_neurons):
 +        # ...
 +
 +    def feedforward(self, x):
 +         # ...
 +
 +    def test(self, data_list):
 +         # ...
 +
 +# Erstelle ein Netzwerk für das Toy-Problem:
 +toy_net = Network(4, 3, 2)
 +
 +# Erstelle ein Netzwerk für den Mnist-Datensatz:
 +mnist_net = Network(784, 30, 10)
 +</code>
  
 ==== Aufgabe 3 ==== ==== Aufgabe 3 ====
  
    * **Ziel: NN für Toy-Problem trainieren**    * **Ziel: NN für Toy-Problem trainieren**
-   * Mache eine Kopie des Files `02_feedforward_oop.py` und speichere diese unter dem Namen `03_toyproblem_training.py` (resp. `<...>.ipynb`)+   * Mache eine Kopie des Files `02_feedforward_oop.py` und speichere diese unter dem Namen `03_toy_problem_training.py` (resp. `<...>.ipynb`)
    * Kommentiere alles, was mit dem MNIST-Datensatz zu tun hat, aus. Für den Moment wollen wir uns nur um das Toy-Problem kümmern.    * Kommentiere alles, was mit dem MNIST-Datensatz zu tun hat, aus. Für den Moment wollen wir uns nur um das Toy-Problem kümmern.
    * Erweitere deine Network-Klasse um das Attribut `learning_rate`. Ein Wert für diese soll als Argument für die `__init__`-Methode übergeben werden, wenn ein `Network`-Objekt erstellt wird.    * Erweitere deine Network-Klasse um das Attribut `learning_rate`. Ein Wert für diese soll als Argument für die `__init__`-Methode übergeben werden, wenn ein `Network`-Objekt erstellt wird.
  • talit/neuronale_netze_kurs.1719786664.txt.gz
  • Zuletzt geändert: 2024-06-30 22:31
  • von sca