Sigmora
Przepływy pracy

Sieć neuronowa od zera w Pythonie, krok po kroku

03
Debugowanie treningu

Zdebuguj skrypt treningowy, który się zawiesza

Twój plik Python powinien trenować małą sieć, ale zatrzymuje się z błędem lub wypisuje dziwne liczby. Sigmora otwiera plik, znajduje istotne linie, uruchamia polecenie treningowe za pomocą Shell i pokazuje rzeczywisty wynik w karcie, więc widzisz, co się stało, zamiast zgadywać. Zacznij od jednego pliku. Agent nie trenuje niczego sam, ponieważ to twój kod to robi, a może to zająć tyle czasu, ile potrzeba. Pętla jest krótka: przeczytaj, uruchom, porównaj, zmień. Wybierasz folder, wybierasz tryb i decydujesz, którą zmianę zaakceptować. Używaj tylko kodu, danych i komputerów, które są twoje lub do których masz prawo, i utrzymuj każde eksperyment na tyle mały, aby można go było powtórzyć.

01

Otwórz folder

Wybierz folder roboczy, który zawiera twój skrypt treningowy, plik konfiguracyjny i logi. Narzędzia plikowe działają w tym folderze, a list_dir pokazuje, co się w nim znajduje. Przechowuj dane, z których masz prawo korzystać, w tym samym miejscu, aby każda ścieżka w twoim skrypcie była krótka. Narzędzia plikowe używają tego folderu.

02

Poproś o odczyt

Poproś Sigmora, aby przeczytała skrypt treningowy i wyjaśniła warstwy, funkcję straty i pętlę. read_file i grep cytują linie, o które chodzi, więc możesz sprawdzić wyjaśnienie względem własnego kodu. Tryb Plan only nic nie zmienia. Zapytaj ponownie, jeśli blok nadal jest niejasny.

03

Uruchom polecenie

Podaj swoje polecenie treningowe i wybierz tryb. Shell uruchamia je w Windows, w WSL lub przez SSH na twoim własnym serwerze, a karta pokazuje rzeczywisty wynik i kod wyjścia. Python musi być zainstalowany tam, gdzie uruchamiane jest polecenie. Trening może zająć dużo czasu na twoim sprzęcie.

04

Sprawdź wynik

Rozwiń kartę i przeczytaj wypisany błąd lub wartości straty. Zerowy kod wyjścia oznacza tylko, że skrypt zakończył się bez błędu, więc oceń liczby samodzielnie, na danych walidacyjnych, których model nie widział, i zapisz to, co zobaczyłeś. Następnie zdecyduj o kolejnej małej zmianie.

Przykład: jeden neuron uczy się bramy AND w czystym Pythonie

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)

Ten plik trenuje pojedynczy neuron w celu nauczenia się bramy AND ze współczynnikiem uczenia się i krótką pętlą aktualizacji wag, a następnie wypisuje wagi i bias. Używa czystego Pythona, bez bibliotek i bez liczb losowych, więc każde uruchomienie daje ten sam wynik. Uruchom go za pomocą Shell, zmień liczbę epok i uruchom ponownie, aby zobaczyć, co zmienia się w wypisanych wagach.

Przewodnik: śledzenie eksperymentu z siecią neuronową konwolucyjną w Pythonie

Przeczytaj kod treningowy

Zanim cokolwiek zostanie zmienione, Sigmora czyta. read_file otwiera twój skrypt treningowy, list_dir pokazuje folder z danymi, a grep znajduje linie definiujące warstwy, funkcję straty i pętlę. Widzisz tekst pliku w karcie, więc możesz porównać rozmiary warstw z kształtem swoich danych. Agent nic nie zmienia na tym etapie. Modele sieci neuronowych dla bramek logicznych, takich jak plik AND powyżej, to klasyczne pierwsze ćwiczenie, a ten sam krok odczytu pasuje do sieci neuronowej od zera w Pythonie, którą napisałeś miesiąc temu i już nie pamiętasz. Poproś o wyjaśnienie dowolnego bloku prostymi słowami lub przełącz się na Plan only, jeśli chcesz napisane wyjaśnienie i brak akcji. Czytaj każde wyjaśnienie obok kodu i sprawdzaj, czy pasuje do tego, co napisałeś.

Uruchom polecenie treningowe

Wybierz Auto-run dla uruchomienia, któremu ufasz, lub Ask first, jeśli chcesz zatwierdzić akcje zmieniające coś. Shell uruchamia twoje polecenie treningowe, na przykład python perceptron_and.py, w wybranym środowisku, a karta pokazuje rzeczywisty wynik i kod wyjścia. Rozwiń kartę, aby przeczytać pełny log skryptu sieci neuronowej konwolucyjnej w Pythonie linia po linii. Trening może zająć tyle czasu, ile potrzeba, a Sigmora nie przyspiesza go. Gdy strata nie konwerguje w sieci neuronowej, log jest miejscem, gdzie to widzisz jako pierwszy. Spójrz na liczby, nie tylko na kod wyjścia, ponieważ zerowy kod wyjścia oznacza tylko, że skrypt się zakończył. Następnie zdecyduj, czy kod wymaga zmiany, i poproś o diff tylko jeśli tak.

Napraw błąd kształtu lub wolną konwergencję straty

edit_file zmienia skrypt i pokazuje diff. W trybie Ask first nic nie jest zapisywane, aż zaakceptujesz diff, podczas gdy Auto-run stosuje zmianę natychmiast. Błąd kształtu zwykle oznacza, że dane i pierwsza warstwa nie pasują do siebie, więc naprawa często sprowadza się do jednej liczby. Strata, która ledwo się zmienia, może wskazywać na współczynnik uczenia się, na etykiety, które nie pasują do danych, lub na model, który nie może jeszcze przeużyć się na małym zbiorze. Spróbuj tego małego zbioru najpierw. Przeużycie i niedouczenie to różne problemy, więc spójrz na stratę treningową i walidacyjną przed zmianą czegoś dużego. Budowanie sieci neuronowej do szachów to większy projekt, jednak zaczyna się tak samo. Po edycji uruchom polecenie ponownie za pomocą Shell i porównaj nowe liczby ze starymi.

Zapisz wyniki do pliku CSV

Aby porównać uruchomienia, potrzebujesz liczb w pliku. write_file tworzy plik CSV w twoim folderze roboczym, lub append_file dodaje jeden wiersz na epokę, a read_file ładuje go ponownie, więc agent może umieścić 2 uruchomienia obok siebie. Sigmora nie analizuje dla ciebie danych; zapisuje liczby i je pokazuje, a ty decydujesz, co oznaczają. Trzymaj dane walidacyjne z dala od danych treningowych i zostaw zbiór testowy nietknięty do końca. Tryb Plan only może zapisać następny eksperyment jako plan bez uruchamiania czegokolwiek. Kiedy będziesz gotowy, przełącz tryb i pozwól agentowi to wykonać. Przed zachowaniem wyniku otwórz plik CSV i sprawdź, czy wiersze pasują do tego, co wypisała karta, i czy każda kolumna jest podpisana.

Sigmora dla Windows

Wypróbuj przepływ pracy na własnym projekcie

Pobierz Sigmora ↗