Atrisināts: eksportēt keras modeli noteiktā laikmetā

Pēdējā atjaunošana: 09/25/2023

Keras ir atvērtā pirmkoda neironu tīkla bibliotēka, kas rakstīta Python valodā. Tā spēj darboties virs TensorFlow, Microsoft Cognitive Toolkit, R, Theano vai PlaidML. Viena no Keras būtiskajām priekšrocībām ir tā, ka izstrādātāji var eksportēt modeļus noteiktās epochās, kas var būt liels ieguvums modeļu optimizēšanā un veiktspējas novērtēšanā.

Problēma

Apmācot mašīnmācīšanās modeli, mēs parasti pārraugām zaudējumu vai metrikas funkcijas veiktspēju dažiem validācijas datiem. Dažādi laikmeti var radīt atšķirīgu modeļa veiktspēju. Dažreiz vislabākie rezultāti tiek sasniegti laikmetā, kas neatbilst apmācības procesa beigām. Šādās situācijās noderētu, ja mēs varētu saglabāt/eksportēt keras modeli konkrētos laikmetos.

Šķīdums

Šīs problēmas risinājums ir Keras Callbacks. Atzvanīšana ir objekts (klases gadījums, kas ievieš noteiktas metodes), kas tiek nodots modelim izsaukumā, lai ietilptu, un kuru modelis izsauc dažādos apmācības punktos. Tam ir pieejami visi pieejamie dati par modeļa stāvokli un tā veiktspēju.

Pielāgota atzvanīšanas funkcija ļauj mums norādīt darbības dažādos apmācības posmos, piemēram, laikmeta sākumā vai beigās, pirms vai pēc vienas partijas utt. Viena no šādām darbībām varētu būt modeļa saglabāšana konkrētos laikmetos.

Kodeksa soli pa solim skaidrojums

Pirmkārt, mēs definējam pielāgotu atzvanīšanu, lai saglabātu modeli noteiktos laikmetos.

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))

Pēc tam mēs pievienojam šo atzvanīšanu modeļa pielāgošanas procesam.

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

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

Iepriekš minētajā kodā mēs izveidojam CustomSaver klases gadījumu un pēc tam nododam to modeļa fit metodei kā daļu no atzvanīšanas saraksta.

Pārveidojot nosacījumu “ja” mūsu metodē “on_epoch_end”, mēs varam veikt atzvanīšanas saglabāšanu pēc katra “k” perioda vai ikreiz, kad ir izpildīts konkrēts nosacījums.

Keras bibliotēkas un to funkcijas

Keras gludais, lietotājam draudzīgais dizains vienkāršo dziļas mācīšanās modeļa izveidi un modificēšanu. Tam ir vairāki rīki, piemēram, Sequential un Model klases modeļu veidošanai, dažādi slāņi neironu tīkliem (Convolutional, Pooling, Dense utt.) un atzvani apmācības uzraudzībai.

Viens no visnoderīgākajiem atzvanīšanas aspektiem ir priekšlaicīga apmācības pārtraukšana vai labākā modeļa saglabāšana atbilstoši validācijas veiktspējai. Tā ir tik bieži uzdota funkcija, ka Keras jau satur tiem iebūvētus atzvanīšanas zvanus, kas pazīstami kā ModelCheckpoint un EarlyStopping.

Tieši tā! Tagad izmantojiet šīs zināšanas savam scenārijam un saglabājiet Keras modeli tajā laikmetā, kurā tas piedāvā vislabāko veiktspēju. Veiksmīgu modeļu apmācību!

Related posts: