well

  •  

    Udało mi się wreszcie lepiej zrozumieć jak efektywnie uczyć sieci typu GAN do generowania obrazów, więc postanowiłem podzielić się spostrzeżeniami i może oszczędzić komuś sporo czasu. Jak wiadomo ta architektura jest prawdopodobnie najtrudniejsza do debugowania a proces uczenia długi - no ale właśnie niekoniecznie. Jak się okazuje jednoczasowa propagacja wsteczna dla generatora i obu lossów dyskryminatora jest bardzo nieskuteczna. Lepiej rozbić to uczenie na 3 niezależne części - no ale wtedy czas uczenia wydłuża się prawie 3 krotnie, wciąż finalnie progres i tak jest szybszy. Ale z tego do czego doszedłem wynika, że można mieć prawie taką samą szybkość przetwarzania epok i prawie tak samo szybki progres na epokę. Trzeba zastosować tylko mały trik.

    Uczenie dyskryminatora oddzielnie na danych rzeczywistych i generowanych nie zwiększa czasu aż tak bardzo, najbardziej ma na to wpływ generowanie obrazów 2 razy. Aby temu zapobiec można zapisać obrazy wygenerowane podczas uczenia generatora. Wtedy jednak uczymy dyskryminator, że te dane ma rozpoznawać jako fałszywe, a generator już nauczył się które z tych danych są dobre - co znacznie spowalnia progres. W ten sposób pokazujemy dyskryminatorowi "najlepsze karty". Ale jest sposób aby trochę go oszukać - duży dropout. Musimy wykonać ponowną kalkulację wyników dla tych samych obrazów ale jest to szybsze niż ponowna ich generacja i dopiero ta sama kalkulacja. A duży dropout sprawia, że te trenowane wagi nie widziały jeszcze tych obrazów.

    Dla porównania klasyczne uczenie wszystkiego naraz po 180 epokach (lewo) i oddzielne po 130 (czas ~180 epok klasycznych) (prawo).
    #deeplearning #programowanie #python #datascience #machinelearning
    pokaż całość

    źródło: gan.png

...to tylko najnowsze aktywności użytkownika ejsap_kupno

Zobacz wszystkie dodane znaleziska, komentarze i wpisy korzystając z menu powyżej.

Popularne tagi ejsap_kupno

Osiągnięcia (5)