Keras on Pythonilla kirjoitettu avoimen lähdekoodin neuroverkkokirjasto. Se pystyy toimimaan TensorFlow'n, Microsoft Cognitive Toolkitin, R:n, Theanon tai PlaidML:n päällä. Yksi Kerasin merkittävistä eduista on se, että kehittäjät voivat viedä malleja tietyissä epookeissa, mikä voi olla suuri etu mallien virityksessä ja suorituskyvyn arvioinnissa.
Ongelma
Kun koulutamme koneoppimismallia, seuraamme yleensä häviö- tai metrifunktion suorituskykyä joidenkin validointitietojen osalta. Eri aikakaudet voivat johtaa erilaiseen mallin suorituskykyyn. Joskus parhaat tulokset saavutetaan aikana, joka ei vastaa harjoitusprosessin loppua. Tällaisissa tilanteissa olisi hyödyllistä, jos voisimme tallentaa/viedä keras-mallin tiettyinä aikoina.
Ratkaisu
Ratkaisu tähän ongelmaan löytyy Keras Callbackista. Takaisinkutsu on objekti (tiettyjä menetelmiä toteuttava luokkainstanssi), joka välitetään mallille sovituskutsussa ja jota malli kutsuu eri kohdissa harjoituksen aikana. Sillä on pääsy kaikkiin saatavilla oleviin tietoihin mallin tilasta ja sen suorituskyvystä.
Mukautetun takaisinkutsutoiminnon avulla voimme määrittää toimintoja harjoituksen eri vaiheissa, kuten aikakauden alussa tai lopussa, ennen yksittäistä erää tai sen jälkeen jne. Yksi tällainen toiminto voisi olla mallin tallentaminen tietyissä aikakausissa.
Vaiheittainen koodin selitys
Ensin määritämme mukautetun takaisinkutsun mallin tallentamiseksi tiettyinä aikakausina.
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))
Seuraavaksi lisäämme tämän takaisinkutsun mallin sovitusprosessiin.
model = ... # create model model.compile(optimizer='...', loss='...') # compile model saver = CustomSaver() model.fit(..., callbacks=[saver]) # put your X_train, Y_train ...
Yllä olevassa koodissa luomme CustomSaver-luokan esiintymän ja välitämme sen sitten mallin sovitusmenetelmälle osana takaisinkutsujen luetteloa.
Muokkaamalla "jos"-ehtoa "on_epoch_end"-metodissamme voimme tallentaa takaisinkutsun jokaisen "k"-jakson jälkeen tai aina, kun tietty ehto täyttyy.
Keras-kirjastot ja niiden toiminnot
Kerasin tyylikäs, käyttäjäystävällinen muotoilu yksinkertaistaa syvän oppimismallin luomista ja muokkaamista. Sen mukana tulee useita työkaluja, kuten Sekvenssi- ja Malliluokat mallien rakentamiseen, erilaiset tasot hermoverkkoille (Convolutional, Pooling, Dense jne.) ja takaisinkutsut koulutuksen seurantaan.
Yksi takaisinsoittojen hyödyllisimmistä puolista on harjoittelun varhainen lopettaminen tai parhaan mallin tallentaminen validointisuorituskyvyn mukaan. Se on niin usein kysytty ominaisuus, että Keras sisältää jo heille sisäänrakennetut takaisinkutsut, jotka tunnetaan nimellä ModelCheckpoint ja EarlyStopping.
Se siitä! Käytä nyt tätä tietoa skenaarioissasi ja tallenna Keras-malli siihen aikaan, jolloin se tarjoaa parhaan suorituskyvyn. Hyvää mallikoulutusta!