Sigmora
Workflows

Neural Network in Python, Schritt für Schritt

03
Training debuggen

Ein Trainingsskript mit Fehlern debuggen

Ihre Python-Datei soll ein kleines Netzwerk trainieren, stoppt aber mit einem Fehler oder gibt seltsame Zahlen aus. Sigmora öffnet die Datei, findet die relevanten Zeilen, führt Ihren Trainingsbefehl mit Shell aus und zeigt die echte Ausgabe in einer Karte an. So sehen Sie, was wirklich passiert ist, statt zu raten. Starten Sie mit einer Datei. Der Agent trainiert nichts selbst, weil Ihr Code das tut – und das kann so lange dauern, wie es dauert. Der Zyklus ist kurz: lesen, ausführen, vergleichen, ändern. Sie wählen den Ordner, Sie wählen den Modus und Sie entscheiden, welche Änderung Sie akzeptieren. Nutzen Sie nur Code, Daten und Computer, die Ihnen gehören oder die Sie verwenden dürfen, und halten Sie jedes Experiment klein genug, um es zu wiederholen.

01

Ordner öffnen

Wählen Sie den Arbeitsordner, der Ihr Trainingsskript, Ihre Konfigurationsdatei und Ihre Logs enthält. Die Datei-Tools arbeiten in diesem Ordner, und list_dir zeigt, was sich darin befindet. Speichern Sie die Daten, die Sie verwenden dürfen, an diesem Ort, damit alle Pfade in Ihrem Skript kurz bleiben. Die Datei-Tools greifen auf diesen Ordner zu.

02

Lesebefehl senden

Beauftragen Sie Sigmora, das Trainingsskript zu lesen und die Schichten, die Loss-Funktion und die Schleife zu erklären. read_file und grep zitieren die betreffenden Zeilen, damit Sie die Erklärung mit Ihrem eigenen Code abgleichen können. Im Modus Plan only werden keine Änderungen vorgenommen. Fragen Sie nach, wenn ein Block noch unklar ist.

03

Befehl ausführen

Geben Sie Ihren Trainingsbefehl ein und wählen Sie einen Modus. Shell führt ihn unter Windows, in WSL oder über SSH auf Ihrem eigenen Server aus. Die Karte zeigt die echte Ausgabe und den Exit-Code. Python muss dort installiert sein, wo der Befehl ausgeführt wird. Das Training kann auf Ihrer Hardware lange dauern.

04

Ergebnis prüfen

Klappen Sie die Karte auf und lesen Sie den ausgegebenen Fehler oder die Loss-Werte. Ein Exit-Code von Null bedeutet nur, dass das Skript ohne Fehler beendet wurde. Beurteilen Sie die Zahlen also selbst – etwa an Validierungsdaten, die das Modell noch nicht gesehen hat – und notieren Sie Ihre Beobachtungen. Entscheiden Sie dann über die nächste kleine Änderung.

Beispiel: Ein Neuron lernt die UND-Verknüpfung in reinem Python

perceptron_and.py
# AND gate: one neuron (perceptron) learns the table
rows = [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),1)]
w = [0.0, 0.0]
b = 0.0
rate = 0.1
for epoch in range(20):
    for x, target in rows:
        total = w[0] * x[0] + w[1] * x[1] + b
        out = 1 if total > 0 else 0
        err = target - out
        w[0] += rate * err * x[0]
        w[1] += rate * err * x[1]
        b += rate * err
print("weights:", w, "bias:", b)

Diese Datei trainiert ein einzelnes Neuron, um die UND-Verknüpfung mit einer Lernrate und einer kurzen Schleife von Gewichtsupdates zu lernen. Anschließend werden die Gewichte und der Bias ausgegeben. Sie verwendet reines Python, keine Bibliotheken und keine Zufallszahlen, daher ergibt jeder Lauf das gleiche Ergebnis. Führen Sie es mit Shell aus, ändern Sie die Anzahl der Epochen und führen Sie es erneut aus, um zu sehen, wie sich die ausgegebenen Gewichte ändern.

Schritt-für-Schritt-Anleitung: Ein Experiment mit einem Neural Network in Python verfolgen

Den Trainingscode lesen

Bevor etwas geändert wird, liest Sigmora. read_file öffnet Ihr Trainingsskript, list_dir zeigt den Datenordner und grep findet die Zeilen, die die Schichten, den Loss und die Schleife definieren. Sie sehen den Dateitext in der Karte, damit Sie die Schichtgrößen mit der Form Ihrer Daten vergleichen können. Der Agent ändert in dieser Phase nichts. Neuronale Netzwerke für logische Gatter, wie die UND-Datei oben, sind die klassische erste Übung. Derselbe Leseschritt eignet sich auch für ein Neural Network in Python, das Sie letzten Monat geschrieben haben und sich nicht mehr genau erinnern. Fragen Sie nach jedem Block in einfachen Worten oder wechseln Sie zu Plan only, wenn Sie eine schriftliche Erklärung und keine Aktionen möchten. Lesen Sie jede Erklärung neben dem Code und prüfen Sie, ob sie mit dem übereinstimmt, was Sie geschrieben haben.

Den Trainingsbefehl ausführen

Wählen Sie Auto-run für einen Lauf, dem Sie vertrauen, oder Ask first, wenn Sie Aktionen genehmigen möchten, die etwas ändern. Shell startet Ihren Trainingsbefehl, zum Beispiel python perceptron_and.py, in der von Ihnen ausgewählten Umgebung. Die Karte zeigt die echte Ausgabe und den Exit-Code. Klappen Sie die Karte auf, um das vollständige Log Ihres Neural Network-Skripts in Python Zeile für Zeile zu lesen. Das Training kann so lange dauern, wie es dauert, und Sigmora beschleunigt es nicht. Wenn der Loss in einem Neural Network nicht konvergiert, sehen Sie dies zuerst im Log. Schauen Sie sich die Zahlen an, nicht nur den Exit-Code, denn ein Exit-Code von Null bedeutet nur, dass das Skript beendet wurde. Entscheiden Sie dann, ob der Code geändert werden muss, und bitten Sie nur dann um den Diff, wenn dies der Fall ist.

Einen Shape-Fehler oder einen langsamen Loss beheben

edit_file ändert das Skript und zeigt einen Diff an. Im Modus Ask first wird nichts geschrieben, bis Sie den Diff akzeptieren, während Auto-run die Änderung sofort anwendet. Ein Shape-Fehler bedeutet normalerweise, dass Daten und die erste Schicht nicht übereinstimmen; die Korrektur besteht daher oft nur aus einer Zahl. Ein Loss, der sich kaum bewegt, kann auf die Lernrate, auf Labels, die nicht mit den Daten übereinstimmen, oder auf ein Modell hinweisen, das noch nicht in der Lage ist, einen kleinen Batch zu overfitten. Testen Sie diesen kleinen Batch zuerst. Overfitting und Underfitting sind unterschiedliche Probleme, also prüfen Sie den Trainings- und den Validierungs-Loss, bevor Sie etwas Großes ändern. Der Aufbau eines Neural Networks für Schach ist ein größeres Projekt, beginnt aber auf dieselbe Weise. Nach der Bearbeitung führen Sie den Befehl erneut mit Shell aus und vergleichen die neuen Zahlen mit den alten.

Die Ergebnisse in eine CSV-Datei protokollieren

Um Runs zu vergleichen, benötigen Sie Zahlen in einer Datei. write_file erstellt eine CSV-Datei in Ihrem Arbeitsordner, oder append_file fügt eine Zeile pro Epoche hinzu. read_file lädt sie erneut, damit der Agent zwei Runs nebeneinander stellen kann. Sigmora analysiert die Daten nicht für Sie; es speichert die Zahlen und zeigt sie an, und Sie entscheiden, was sie bedeuten. Halten Sie die Validierungsdaten von den Trainingsdaten getrennt und lassen Sie den Testset bis zum Ende unberührt. Der Modus Plan only kann das nächste Experiment als Plan schreiben, ohne etwas auszuführen. Wenn Sie bereit sind, wechseln Sie den Modus und lassen Sie den Agenten es ausführen. Bevor Sie ein Ergebnis speichern, öffnen Sie die CSV-Datei und prüfen Sie, ob die Zeilen mit dem übereinstimmen, was die Karte ausgegeben hat, und dass jede Spalte beschriftet ist.

Sigmora für Windows

Probieren Sie den Workflow an Ihrem eigenen Projekt aus

Sigmora herunterladen ↗