Sådan bruges metrics til dyb læring med Keras i Python

Sådan bruges metrics til dyb læring med Keras i Python

Keras-biblioteket giver en måde at beregne og rapportere om en række standardmålinger, når du træner modeller for dyb læring.

Ud over at tilbyde standardmålinger til klassificerings- og regressionsproblemer giver Keras dig også mulighed for at definere og rapportere om dine egne brugerdefinerede målinger, når du træner modeller for dyb læring. Dette er især nyttigt, hvis du vil holde styr på en præstationsmåling, der bedre fanger din models færdigheder under træning.

I denne vejledning opdager du, hvordan du bruger de indbyggede metrics, og hvordan du definerer og bruger dine egne metrics, når du træner dyb læringsmodeller i Keras.

Efter at have gennemført denne tutorial, vil du vide:

  • Hvordan Keras-metrics fungerer, og hvordan du kan bruge dem, når du træner dine modeller.
  • Sådan bruges regressions- og klassificeringsmålinger i Keras med udarbejdede eksempler.
  • Sådan defineres og bruges din egen brugerdefinerede metric i Keras med et fungeret eksempel.

Start dit projekt med min nye bog Deep Learning With Python, inklusive trin-for-trin tutorials og Python kildekode filer til alle eksempler.

Lad os komme igang.

  • Opdater Jan / 2020: Opdateret API til Keras 2.3 og TensorFlow 2.0.
Metrics and How to Use Custom Metrics for Deep Learning with Keras in Python

Metrics and How to Use Custom Metrics for Deep Learning with Keras in Python
Foto af Indi Samarajiva, nogle rettigheder forbeholdes.

Vejledningsoversigt

Denne tutorial er opdelt i 4 dele; de er:

  1. Keras Metrics
  2. Keras Regression Metrics
  3. Keras klassificeringsmålinger
  4. Brugerdefinerede målinger i Keras

Keras Metrics

Keras giver dig mulighed for at liste de metrics, der skal overvåges under træning af din model.

Du kan gøre dette ved at angive “målinger”Argument og giver en liste over funktionsnavne (eller funktionsnavne aliaser) til udarbejde() funktion på din model.

For eksempel:

De specifikke metrics, som du angiver, kan være navnene på Keras-funktioner (som f.eks middel_squared_fejl) eller strengaliaser for disse funktioner (som 'mse').

Metriske værdier registreres i slutningen af ​​hver periode på træningsdatasættet. Hvis der også leveres et valideringsdatasæt, beregnes den registrerede metric også for valideringsdatasættet.

Alle metrics rapporteres i detaljeret output og i historikobjektet returneret fra at ringe til passe() fungere. I begge tilfælde bruges metricfunktionens navn som nøglen til metricværdierne. I tilfælde af metrics til valideringsdatasættet er "val_”Præfikset føjes til nøglen.

Både tabsfunktioner og eksplicit definerede Keras-målinger kan bruges som træningsmålinger.

Keras Regression Metrics

Nedenfor er en liste over de metrics, som du kan bruge i Keras om regressionsproblemer.

  • Gennemsnitlig kvadratfejl: middel_squared_error, MSE eller mse
  • Gennemsnitlig absolut fejl: mean_absolute_error, MAE, mae
  • Middel absolut fejl: mean_absolute_percentage_error, MAPE, mappe
  • Cosine Nærhed: cosinus-nærhed, cosinus

Eksemplet nedenfor viser disse 4 indbyggede regressionsmålinger på et simpelt konstrueret regressionsproblem.

Bemærk: Dine resultater kan variere i betragtning af algoritmens eller evalueringsprocedurens stokastiske karakter eller forskelle i numerisk præcision. Overvej at køre eksemplet et par gange, og sammenlign det gennemsnitlige resultat.

Kørsel af eksemplet udskriver metriske værdier i slutningen af ​​hver periode.

Der oprettes derefter et linjediagram over de 4 målinger over træningsperioderne.

Linjeplot af indbyggede Keras-målinger til regression

Linjeplot af indbyggede Keras-målinger til regression

Bemærk, at metrics blev specificeret ved hjælp af strengaliasværdier [‘mse‘, ‘mae‘, ‘mape‘, ‘cosine‘] og blev henvist til som nøgleværdier på historikobjektet ved hjælp af deres udvidede funktionsnavn.

Vi kunne også specificere metrics ved hjælp af deres udvidede navn som følger:

Vi kan også angive funktionsnavne direkte, hvis de importeres til scriptet.

Du kan også bruge tabsfunktionerne som metrics.

For eksempel kan du bruge den gennemsnitlige firkantede logaritmiske fejl (middel_squared_logaritmisk_fejl, MSLE eller msle) tab fungerer som en måling som følger:

Keras klassificeringsmålinger

Nedenfor er en liste over de metrics, som du kan bruge i Keras om klassificeringsproblemer.

  • Binær nøjagtighed: binær nøjagtighed, acc
  • Kategorisk nøjagtighed: categorical_accuracy, acc
  • Sparse kategorisk nøjagtighed: sparsom_kategorisk nøjagtighed
  • Top k Kategorisk nøjagtighed: top_k_categorical_accuracy (kræver, at du angiver ak-parameter)
  • Sparse Top k Kategorisk nøjagtighed: sparse_top_k_categorical_accuracy (kræver, at du angiver en parameter)

Nøjagtighed er speciel.

Uanset om dit problem er et binært eller klassificeringsproblem i flere klasser, kan du angive 'nøjagtighed'måling for at rapportere om nøjagtighed.

Nedenfor er et eksempel på et binært klassificeringsproblem med den indbyggede nøjagtighedsmåling, der er vist.

Bemærk: Dine resultater kan variere i betragtning af algoritmens eller evalueringsprocedurens stokastiske karakter eller forskelle i numerisk præcision. Overvej at køre eksemplet et par gange, og sammenlign det gennemsnitlige resultat.

Kørsel af eksemplet rapporterer nøjagtigheden i slutningen af ​​hver træningsperiode.

Der oprettes et linjeplot med nøjagtighed over en periode.

Linjeplot af indbyggede Keras-metrics til klassificering

Linjeplot af indbyggede Keras-metrics til klassificering

Brugerdefinerede målinger i Keras

Du kan også definere dine egne metrics og angive funktionsnavnet i listen over funktioner til "målinger”Argument når man ringer til udarbejde() fungere.

En måling, som jeg ofte kan lide at holde styr på, er Root Mean Square Error eller RMSE.

Du kan få en idé om, hvordan du skriver en brugerdefineret metric ved at undersøge koden for en eksisterende metric.

For eksempel er nedenstående koden for funktionen for gennemsnitstab_fejlstab og metric i Keras.

K er backend brugt af Keras.

Fra dette eksempel og andre eksempler på tabsfunktioner ...

Du kan også være interesseret i