Przejście w przód zapisuje dane, wsteczne je wykorzystuje
Zrozumieć, dlaczego aktywacje są przechowywane podczas przejścia w przód
Przejście w przód zapisuje dane, wsteczne je wykorzystuje to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Deep Learning Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Dwa przejścia, jeden cel
Trening na każdej partii obejmuje dwa przejścia: przejście w przód służące do wyznaczenia predykcji i straty oraz przejście wstecz do obliczenia gradientów. Działają one jako para.
Przejście w przód oblicza wartości
Podczas przejścia w przód każda warstwa przekształca dane wejściowe w wynik i przekazuje go dalej. Na końcu otrzymują Państwo predykcję oraz jedną wartość straty.
Przejście wstecz potrzebuje wartości z przodu
Aby obliczyć gradient warstwy, reguła łańcuchowa potrzebuje właśnie tych aktywacji, które warstwa utworzyła podczas przejścia w przód. Te wartości są niezbędne.
Dlatego je buforujemy
Podczas przejścia w przód sieć po cichu buforuje w pamięci dane wejściowe i wyniki każdej warstwy, aby przejście wstecz mogło z nich skorzystać. 💾
Konkretny przykład
Pochodna warstwy często ponownie wykorzystuje jej wynik. W przypadku sigmoidy gradient zależy od zapisanej wartości wyniku, więc buforowanie pozwala uniknąć ponownych obliczeń.
sigmoid_grad = saved_output * (1 - saved_output)Przejście wstecz ponownie używa bufora
Przejście wstecz odwiedza warstwy w odwrotnej kolejności, a w każdej z nich pobiera pasujące zbuforowane wartości i mnoży je przez gradient. Nic nie jest obliczane ponownie.
Buforowanie kosztuje pamięć
Przechowywanie każdej aktywacji sprawia, że trening głębokiej sieci zużywa znacznie więcej pamięci niż samo wykonywanie predykcji. Większe sieci potrzebują większych buforów.
Wnioskowanie pomija bufor
Gdy potrzebne są tylko predykcje, nie ma przejścia wstecz, więc PyTorch całkowicie pomija bufor. Dlatego wnioskowanie zużywa mniej pamięci.
with torch.no_grad():
preds = model(x)PyTorch robi to za Ciebie
Każda operacja na tensorze z requires_grad zapisuje potrzebne informacje w grafie obliczeń, automatycznie budując bufor podczas wykonywania operacji.
Jedno backward zwalnia pamięć
Domyślnie wywołanie backward() zużywa zbuforowany graf i zwalnia go. Dlatego drugie wywołanie backward() dla tego samego grafu kończy się błędem.
loss.backward()Dlaczego to rozwiązanie się sprawdza
Buforowanie wartości z przejścia w przód sprawia, że każdy gradient wymaga jednego szybkiego odczytu i mnożenia, zamiast ponownego obliczania, dzięki czemu propagacja wsteczna jest szybka i dokładna.
Szybkie sprawdzenie
Sprawdźmy ideę bufora.
Podsumowanie
Przejście w przód buforuje aktywacje, a przejście wstecz ponownie je wykorzystuje do budowy gradientów. Wymiana pamięci na szybkość sprawia, że propagacja wsteczna jest praktyczna. 💾
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Przejście w przód zapisuje dane, wsteczne je wykorzystuje” jest bezpłatna?
Tak — pełny tekst „Przejście w przód zapisuje dane, wsteczne je wykorzystuje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Deep Learning Academy, przejdź na CoddyKit PRO. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Przejście w przód zapisuje dane, wsteczne je wykorzystuje”?
Zrozumieć, dlaczego aktywacje są przechowywane podczas przejścia w przód Ćwiczysz Deep Learning Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Deep Learning Academy?
Nie wymagamy żadnego doświadczenia. Deep Learning Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Przejście w przód zapisuje dane, wsteczne je wykorzystuje”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Deep Learning Academy?
Tak. Każda lekcja Deep Learning Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Reguła łańcuchowa, warstwa po warstwie
- Przejście w przód zapisuje dane, wsteczne je wykorzystuje
- Ręczna propagacja wsteczna w małej sieci
- Zanikające i eksplodujące gradienty