Riješeno: izvoz keras modela u određenoj epohi

Zadnje ažuriranje: 09/25/2023

Keras knjižnica je neuronske mreže otvorenog koda napisana u Pythonu. Može raditi uz TensorFlow, Microsoft Cognitive Toolkit, R, Theano ili PlaidML. Jedna od značajnih prednosti Kerasa je dopuštanje razvojnim programerima izvoza modela u određenim epohama, što može biti velika prednost u podešavanju modela i procjeni performansi.

Problem

Kada obučavamo model strojnog učenja, obično pratimo gubitak ili izvedbu metričke funkcije za neke podatke provjere valjanosti. Različite epohe mogu rezultirati različitim performansama modela. Ponekad se najbolji rezultati postižu u epohi koja ne odgovara kraju trenažnog procesa. U takvim situacijama bilo bi dobro kada bismo mogli spremiti/izvesti keras model u određenim epohama.

Riješenje

Rješenje ovog problema leži u Keras povratnim pozivima. Povratni poziv je objekt (instanca klase koja implementira specifične metode) koji se prosljeđuje modelu u pozivu za uklapanje i koji model poziva u različitim točkama tijekom obuke. Ima pristup svim dostupnim podacima o stanju modela i njegovoj izvedbi.

Prilagođena funkcija povratnog poziva omogućuje nam da specificiramo akcije u različitim fazama obuke, kao što su početak ili kraj epohe, prije ili nakon jedne serije, itd. Jedna od takvih radnji može biti spremanje modela u određenim epohama.

Korak po korak Objašnjenje koda

Prvo, definiramo prilagođeni povratni poziv za spremanje modela u određenim epohama.

class CustomSaver(keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):
        if epoch == 9:  # or save after some epoch, each k-th epoch etc.
            self.model.save("model_{}.hd5".format(epoch))

Zatim dodajemo ovaj povratni poziv procesu prilagođavanja modela.

model = ...  # create model
model.compile(optimizer='...', loss='...')  # compile model

saver = CustomSaver()
model.fit(..., callbacks=[saver]) # put your X_train, Y_train ...

U gornjem kodu stvaramo instancu klase CustomSaver, a zatim je prosljeđujemo metodi prilagodbe modela kao dio popisa povratnih poziva.

Modificiranjem uvjeta “if” unutar naše metode 'on_epoch_end', možemo učiniti da se povratni poziv spremi nakon svakih 'k' epoha ili kad god se ispuni određeni uvjet.

Kerasove knjižnice i njihove funkcije

Kerasov elegantan dizajn jednostavan za korištenje pojednostavljuje stvaranje i modificiranje modela dubinskog učenja. Dolazi s nekoliko alata, kao što su Sequential i Model klase za izgradnju modela, različiti slojevi za neuronske mreže (Convolutional, Pooling, Dense, itd.) i povratni pozivi za praćenje obuke.

Jedan od najkorisnijih aspekata povratnih poziva je rano zaustavljanje obuke ili spremanje najboljeg modela prema izvedbi provjere valjanosti. To je toliko često tražena značajka da Keras već sadrži ugrađene povratne pozive za njih, poznate kao ModelCheckpoint i EarlyStopping.

To je to! Sada primijenite ovo znanje na svoj scenarij i spremite model Keras u epohu u kojoj nudi najbolje performanse. Sretan trening modela!

Povezani postovi: