TensorBoard-opplæring: TensorFlow-grafvisualisering

⚡ Smart oppsummering

TensorBoard er det visuelle grensesnittet for TensorFlow-treningskjøringer, som plotter tapskurver, modellgrafer, vekthistogrammer og innebygginger. Denne gjennomgangen skriver hendelsesfiler med en estimator, og åpner deretter dashbordet på port 6006.

  • 🔘 Fem dashbord: Skalarer, grafer, fordelinger, histogrammer og projektorer leser hver en annen sammendragstype.
  • ☑️ Loggkatalog: model_dir-argumentet bestemmer hvor TensorFlow skriver events.out.tfevents-filene.
  • Start kommando: Kjør tensorboard –logdir=PATH, og åpne deretter http://localhost:6006 i hvilken som helst nettleser.
  • 🧪 Læringsrate: En hakkete tapskurve signaliserer en rate som er for høy til at modellen kan konvergere.
  • 🛠️ TensorFlow 2: Keras TensorBoard-tilbakekallet erstatter estimatorloggingen som vises i det opprinnelige eksemplet.
  • ⚠️ Feilsøking: Et tomt dashbord betyr nesten alltid at banen til loggkatalogen ikke samsvarer med treningskjøringen.

TensorBoard-opplæring: TensorFlow-grafvisualisering

Hva er TensorBoard?

TensorBoard er grensesnittet som brukes til å visualisere grafen og andre verktøy for å forstå, feilsøke og optimalisere modellen. Det er et verktøy som gir målinger og visualiseringer for en maskinlæringsarbeidsflyt. Det hjelper track-målinger som tap og nøyaktighet, visualisere modellgrafen og projisere innebygginger i lavere dimensjonale rom.

TensorBoard leveres med tensorflow og kjører som en liten lokal webserver som leser hendelsesfilene en treningsjobb skriver til disk.

TensorFlow-grafvisualisering ved bruk av TensorBoard-eksempel

Bildet nedenfor kommer fra TensorBoard-grafen du skal generere i denne veiledningen. Det er hovedpanelet:

TensorBoard Scalars-dashbord som viser gjennomsnittlig_tap-kurven til den trente DNN-regressoren

Fra bildet nedenfor kan du se panelet med TensorBoard grafvisualisering. Panelet inneholder forskjellige faner, som er knyttet til informasjonsnivået du legger til når du kjører modellen.

TensorBoard-navigasjonslinjen med fanene Skalarer, Grafer, Fordelinger, Histogrammer og Projektor

  • Skalarer: Vis ulik nyttig informasjon under modelltreningen
  • grafer: Vis modellen
  • Histogram: Vis vekter med et histogram
  • Distribusjon: Vis vektfordelingen
  • Projektor: Vis prinsipalkomponentanalyse og T-SNE-algoritmen. Teknikken som brukes for dimensjonalitetsreduksjon

I løpet av denne TensorBoard-opplæringen vil du trene en enkel dyp læring modellen, og grafen den produserer leses nedenfra og opp.

Hvis du ser på grafen, kan du forstå hvordan modellen fungerer. De nummererte merkene i skjermbildet nedenfor markerer disse fire trinnene:

  1. Sett dataene i kø til modellen: Send en mengde data som tilsvarer batchstørrelsen til modellen, dvs. Antall datainnmatinger etter hver iterasjon
  2. Mate dataene til tensorene
  3. Tren modellen
  4. Vis antall partier under treningen. Lagre modellen på disken.

TensorFlow-graf i TensorBoard med nummererte noder for inngangskøen, dnn-blokken og lagringsoperasjonen

Grunnideen bak TensorBoard er at et nevralt nettverk kan oppføre seg som en svart boks, og du trenger et verktøy for å inspisere hva som er inni den boksen. Tenk på TensorBoard som en lommelykt for å dykke ned i nettverket.

Det hjelper å forstå avhengighetene mellom operasjoner, hvordan vektene beregnes, viser tapsfunksjonen og mye annen nyttig informasjon. Når du samler all denne informasjonen, har du et flott verktøy for å feilsøke og finne ut hvordan du kan forbedre modellen.

For å gi deg en idé om hvor nyttig TensorBoard-grafen kan være, se på de to tapskurvene nedenfor:

To TensorBoard-tapskurver side om side som sammenligner en modell som ikke lærer med en modell som konvergerer

Et nevralt nettverk bestemmer hvordan de forskjellige nevronene skal kobles sammen og hvor mange lag som trengs før modellen kan forutsi et utfall. Når arkitekturen er definert, trenger du ikke bare å trene modellen, men også en metrikk som måler nøyaktigheten til prediksjonen. Denne metrikken kalles en tapsfunksjon, og målet er å minimere den, noe som ganske enkelt betyr at modellen gjør færre feil.

Hver treningsalgoritme gjentar beregningen mange ganger til tapet når en flatere linje. Minimering av tapet krever også en læringshastighet, som er hastigheten modellen lærer med. Setter du læringshastigheten for høyt, har modellen aldri tid til å lære noe: det er diagrammet til venstre, der linjen beveger seg opp og ned fordi modellen i praksis gjetter. Diagrammet til høyre viser at tapet avtar over iterasjonene til kurven flater ut, noe som betyr at modellen har funnet en løsning.

TensorBoard er et flott verktøy for å visualisere slike målinger og fremheve potensielle problemer. Et nevralt nettverk kan ta timer eller uker før det finner en løsning, og TensorBoard oppdaterer målingene mens jobben fortsatt kjører. Du trenger derfor ikke å vente til slutten for å se om modellen trenes riktig: åpne TensorBoard, sjekk hvordan treningen går, og gjør de nødvendige endringene om nødvendig.

Hvordan bruke TensorBoard?

I denne delen lærer du hvordan du åpner TensorBoard fra terminalen på macOS og fra kommandolinjen på WindowsFokuset her er verktøyet snarere enn modellen, så treningskoden er bevisst holdt kort.

Først må du importere bibliotekene du skal bruke under opplæringen.

## Import the library
import tensorflow as tf
import numpy as np

Du oppretter dataene. Det er en matrise med 10 000 rader og 5 kolonner.

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

Produksjon

(10000, 5)

Koden nedenfor transformerer dataene og oppretter modellen.

Merk at læringsraten er lik 0.1. Hvis du endrer denne raten til en høyere verdi, vil ikke modellen finne en løsning. Dette er hva som skjedde på venstre side av bildet ovenfor.

Eksemplet bruker en TensorFlow-estimator, API-et på høyt nivå som pakker inn de matematiske beregningene. Estimatorer tilhører TensorFlow 1.x API-et, så de to kodebitene nedenfor kjører under en 1.x-installasjon eller gjennom tf.compat.v1 navnerom.

For å opprette loggfilene må du angi banen. Dette gjøres med argumentet model_dir.

I TensorBoard-eksemplet nedenfor lagrer du modellen i arbeidskatalogen, dvs. der du lagrer notatboken eller Python fil. Inne i denne banen vil TensorFlow opprette en mappe kalt train med en undermappe kalt linreg.

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

Produksjon

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {&#x27;_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

Det siste trinnet i dette eksempelet på en TensorFlow-graf er å trene modellen. Under treningen skriver TensorFlow informasjon inn i modellkatalogen.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

Produksjon

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

På TensorFlow 2 gjøres den samme jobben av Keras TensorBoard-tilbakekallet, som skriver grafen og metrikkene per epoke uten noen estimatorkode:

logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

model.fit(train_images, train_labels, epochs=5,
          callbacks=[tensorboard_callback])

Når kjøringen er ferdig, inneholder loggkatalogen en kontrollpunktsfil, en graph.pbtxt fil og en eller flere events.out.tfevents filer – akkurat det TensorBoard leser.

Til macOS Brukere

Finder-visningen nedenfor viser den nye train/linreg-mappen som ble opprettet i arbeidskatalogen.

macOS filliste som viser loggmappene for tog og linjereg med kontrollpunkt, hendelser og graph.pbtxt-filer

Til Windows Brukere

On Windows De samme filene vises under banen du sendte til model_dir, som uthevet i adressefeltet.

Windows Utforskervisning av togets linreg-mappe som inneholder TensorFlow-hendelses- og kontrollpunktfiler

Det samme hendelsesfilformatet produseres av PyTorch, så dashbordet er ikke begrenset til TensorFlow-kjøringer.

Nå som du har skrevet loggen, kan du åpne TensorBoard. TensorBoard betjener port 6006 som standard (Jupyter bruker port 8888). Bruk terminalen på macOS eller Anaconda-ledeteksten på Windows.

Til macOS Brukere

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

Notatboken er lagret i banen /Brukere/Guru99/tuto_TF

Til Windows Brukere

cd C:\Users\Admin\Anaconda3
activate hello-tf

Notatboken er lagret i banen C:\Users\Admin\Anaconda3

For å starte TensorBoard, kjør følgende kommando fra den katalogen.

Til macOS Brukere

tensorboard --logdir=./train/linreg

Til Windows Brukere

tensorboard --logdir=.\train\linreg

TensorBoard serveres deretter på http://localhost:6006

Flagg Hva den kontrollerer
--logdir Katalogen som inneholder hendelsesfilene. Dette er det eneste obligatoriske flagget.
--port Port som skal serveres på. Standardverdien er 6006; endre den når en tidligere økt fortsatt har den porten.
--bind_all Serveres på alle nettverksgrensesnitt. TensorBoard binder seg kun til localhost som standard, så ekstern tilgang trenger dette flagget, og det kan ikke kombineres med --host.
--reload_interval Hvor ofte, i sekunder, loggkatalogen skannes på nytt for nye data.
--logdir_spec Eldre alternativ som godtar flere kommaseparerte stier; --logdir støtter ikke lenger det skjemaet.

Ocuco tensorboard dev Underkommandoen fungerer ikke lenger: den hostede TensorBoard.dev-tjenesten ble stengt 1. januar 2024. Lokal bruk påvirkes ikke.

På noen maskiner skriver konsollen ut vertsnavnet i stedet for localhost, som i Anaconda-ledeteksten nedenfor. Begge adressene åpner det samme dashbordet.

Anaconda-ledeteksten kjører tensorboard-kommandoen og skriver ut serveradressen på port 6006

Kopier og lim inn adressen i din favorittnettleser. Du skal se Scalars-dashbordet nedenfor.

TensorBoard Scalars-dashbordet åpnes i en nettleser etter at loggkatalogen lastes inn riktig

Hvis du ser noe slikt i stedet:

TensorBoard-feilsidelesing Ingen grafdefinisjonsfiler funnet

Det betyr at TensorBoard ikke finner loggfilen. Sørg for at du peker cd til riktig bane, eller dobbeltsjekk at logghendelsen faktisk ble opprettet. Hvis den ikke ble det, kjør treningskoden på nytt.

Hvis du vil lukke TensorBoard, trykker du CTRL+C i terminalvinduet.

Hattips: sjekk Anaconda-ledeteksten din for gjeldende arbeidsmappe.

Anaconda-ledetekst som viser det aktive hello-tf-miljøet og gjeldende arbeidsmappe

I skjermbildet over ligger ledeteksten i C:\Users\Admin, så loggfilen bør opprettes under den mappen.

Spørsmål og svar

En fullført kjøring etterlater en kontrollpunktindeks, én eller flere model.ckpt-filer, en graph.pbtxt-fil og minst én events.out.tfevents-fil. TensorBoard leser bare hendelsesfilene; kontrollpunktene finnes slik at treningen kan fortsette der den stoppet.

Ja. PyTorch sender et sammendragWriter som sender ut samme hendelsesfilformat, slik at den identiske tensorboard –logdir-kommandoen gjengir dashbordet. Ingenting ved serveren endres – bare biblioteket som produserer sammendragene.

Nei. Den vertsbaserte tjenesten ble stengt 1. januar 2024, og underkommandoen tensorboard dev returnerer nå en feil. Del resultater ved å kjøre TensorBoard i en notatbok, for eksempel Google Colab, eller ved å eksportere diagrammene som CSV eller JSON.

Gi hver kjøring sin egen undermappe under en delt overordnet mappe, og pek deretter –logdir på overordnet mappe. Hver undermappe vises som en separat kjøring i panelet til venstre, og kurvene tegnes på de samme aksene med en avkrysningsboks hver.

Operasjonelle grafer er standardvisningen og viser hvordan TensorFlow forstår programmet, tegnet nedenfra og opp. Hvis du velger keras-taggen, bytter du til den konseptuelle grafen, som kun viser modelllagene og er enklere å sjekke mot designet ditt.

Automatiserte sjekkresultater produserer dusinvis av kjøringer samtidig, slik at dashbordet blir et sammenligningsverktøy i stedet for en enkeltkjøringsmonitor. HParams-pluginen logger hver konfigurasjon sammen med målingene, slik at du kan sortere forsøk i stedet for å lese kurver én etter én.

GitHub Copilot utkast-tilbakekall og sammendragsskriver-standard raskt. Behandle utdataene som et utkast: det blander ofte TensorFlow 1.x og 2.x API-er, så sjekk hvert navn mot gjeldende dokumentasjon før du kjører koden.

Enten ble ingen hendelsesfil skrevet, eller så samsvarer ikke banen som ble sendt til –logdir med den som treningsjobben brukte. Bekreft at det finnes en events.out.tfevents-fil i den mappen, og så videre. Windows Start TensorBoard fra samme stasjonsbokstav.

Oppsummer dette innlegget med: