Zapisz model co 10 epok tensorflow.keras v2

10

Używam aparatów zdefiniowanych jako podmoduł w tensorflow v2. Trenuję mój model fit_generator()metodą. Chcę zapisywać mój model co 10 epok. Jak mogę to osiągnąć?

W Keras (nie jako podmoduł tf) mogę dać ModelCheckpoint(model_savepath,period=10). Ale w tf v2, oni zmieniło to ModelCheckpoint(model_savepath, save_freq)gdzie save_freqmoże być 'epoch'w tym przypadku model jest zapisywany każdej epoce. Jeśli save_freqjest liczbą całkowitą, model jest zapisywany po przetworzeniu tak wielu próbek. Ale chcę, żeby było po 10 epokach. Jak mogę to osiągnąć?

Nagabhushan SN
źródło

Odpowiedzi:

5

Za pomocą tf.keras.callbacks.ModelCheckpointuse save_freq='epoch'i przekaż dodatkowy argument period=10.

Chociaż nie jest to udokumentowane w oficjalnych dokumentach , jest to sposób, aby to zrobić (zauważ, że jest udokumentowane, że możesz przejść period, po prostu nie wyjaśnia, co robi).

bluesummers
źródło
Dostaję poniższe ostrzeżenie: WARNING:tensorflow:'period' argument is deprecated. Please use 'save_freq' to specify the frequency in number of samples seen.Myślę, że ta funkcja wkrótce się pojawi. W takim razie jak mogę to osiągnąć?
Nagabhushan SN
2
Uważam, że jedyną alternatywą jest obliczenie liczby przykładów na epokę i przekazanie tej liczby całkowitej do save_freqliczby epok, które chcesz, jako odstępu między zapisami
bluesummers
@bluesummers „przykłady na epokę” To powinien być mój rozmiar partii, prawda?
Tom
Przykładami na epokę jest liczba próbek, które chcesz przepuścić przez sieć między punktami kontrolnymi - oznacza to, że jeśli masz 100 próbek (próbki! = Partia, partia to partia próbek) i wstawisz 400,
zapisasz
1
Miałem to samo pytanie, jakie zadał @NagabhushanSN. Obliczyłem liczbę próbek na epokę, aby obliczyć liczbę próbek, po których chcę zapisać model, ale wydaje się, że nie działa. Wielkość partii = 64, w przypadku testowym używam 10 kroków na epokę. Jeśli chcę zapisać model co 3 epoki, liczba próbek wynosi 64 * 10 * 3 = 1920. Używam tego dla sav_freq, ale wynik pokazuje, że model jest zapisany w epoce 1, epoce 2, epoce 9, epoce 11, epoce 14 i nadal działa. Nie mogę tego zrozumieć. periodopcja wydaje się działać dobrze, ale z komunikatem, że będzie przestarzała.
beeprogrammer