Effektiviteten til enhver maskinlæringsmodell kan først og fremst tilskrives validiteten til dataene som brukes til trening og modellens evne til å generalisere godt fra denne informasjonen. Derfor er det avgjørende å trene en modell med det laveste valideringstapet. Ved å trene en modell effektivt, sikrer vi at modellen verken er undertilpasset eller overfitting.
Valideringstapet tilsvarer feilraten på et hold-out-utvalg av treningssettet som ikke brukes i treningsfasen og hjelper oss med å måle modellens evne til å generalisere. Hovedmålet i enhver maskinlæringsmodell er å oppnå det laveste valideringstapet, og dermed indikere at modellen vår lærer og generaliserer godt.
En metode for å redde modeller med best mulig valideringstap
Trening av en modell involverer flere iterasjoner, også kjent som epoker, og valideringstapet varierer for hver epoke. Python tilbyr flere biblioteker som Keras som lagrer disse modellene i hver epoke. Vi kan bruke en funksjon kalt ModelCheckpoint for å lagre modellen når valideringstapet forbedres fra den forrige.
from keras.callbacks import ModelCheckpoint # specify the path to save the model filepath="weights.best.hdf5" # initiate the ModelCheckpoint function checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min') # define the list of callbacks callbacks_list = [checkpoint] # fit the model model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, callbacks=callbacks_list, verbose=0)
Forstå koden: trinn for trinn
La oss gå gjennom kodebiten trinn for trinn for å forstå hver del:
1. Importer ModelCheckpoint-funksjonen fra Keras.
2. Definer filbanen der du vil lagre modellen ved å bruke .hdf5-formatet. Dette formatet er laget for å lagre og organisere store mengder data.
3. Start ModelCheckpoint-funksjonen. Her overvåker vi 'val_loss' med en 'min'-modus som indikerer at vi tar sikte på å minimere denne verdien. Med 'save_best_only=True' vil den siste beste modellen i henhold til overvåket mengde ikke bli overskrevet.
4. Sjekkpunktet legges deretter til tilbakeringingslisten. Andre treningsparametere som EarlyStopping kan også inkluderes i denne listen.
5. Modellen trenes deretter på dataene ved hjelp av model.fit(). Callbacks-argumentet tar inn callbacks_list.
Koden lagrer modellen som 'weights.best.hdf5' i hver epoke der valideringstapet er på sitt minimum.
Key Python-biblioteker for lagring av modeller
Python tilbyr et rikt økosystem av biblioteker for lagring av maskinlæringsmodeller. De som primært brukes er:
- Keras: Denne nevrale nettverks-API-en på høyt nivå som er i stand til å kjøre på toppen av andre API-er på lavere nivå, som TensorFlow, tillater enkel og rask prototyping av dyplæringsmodeller. ModelCheckpoint-funksjonen i Keras gir fleksibiliteten til å overvåke ulike parametere under treningsprosessen, og lagre modellen eller vektene i ulike stadier.
- tensorflow: Pythons maskinlæringsrammeverk med åpen kildekode lar utviklere enkelt lage komplekse ML-modeller. Den gir en SavedModel-modul som er et universelt serialiseringsformat for TensorFlow-modeller.
- Scikit-lær: Dette populære Python-biblioteket for maskinlæring gir verktøy for lagring og lasting av modeller. Joblib-modulen brukes vanligvis til å serialisere Python-objekter med store numpy-matriser – et vanlig scenario i arbeidsflyter for maskinlæring.
Valget av bibliotek avhenger i stor grad av kravene til prosjektet ditt, din kjennskap til biblioteket og kompleksiteten til modellen din. Ikke desto mindre gir Python rikelig med ressurser til å trene, vurdere, lagre og laste modeller med letthet.