TensorBoard-vejledning: Visualisering af TensorFlow-grafer

โšก Smart opsummering

TensorBoard er den visuelle brugerflade til TensorFlow-trรฆningskรธrsler, der plotter tabskurver, modelgrafer, vรฆgthistogrammer og indlejringer. Denne gennemgang skriver hรฆndelsesfiler med en estimator og รฅbner derefter dashboardet pรฅ port 6006.

  • ๐Ÿ”˜ Fem dashboards: Skalarer, grafer, fordelinger, histogrammer og projektorer lรฆser hver en forskellig opsummeringstype.
  • โ˜‘๏ธ Logmappe: model_dir-argumentet bestemmer, hvor TensorFlow skriver events.out.tfevents-filerne.
  • โœ… Start kommando: Kรธr tensorboard โ€“logdir=PATH, og รฅbn derefter http://localhost:6006 i enhver browser.
  • ๐Ÿงช Lรฆringshastighed: En takket tabskurve signalerer en rate, der er for hรธj til, at modellen kan konvergere.
  • ๐Ÿ› ๏ธ TensorFlow 2: Keras TensorBoard-tilbagekaldet erstatter den estimatorlogning, der er vist i det oprindelige eksempel.
  • โš ๏ธ Fejlfinding: Et tomt dashboard betyder nรฆsten altid, at stien til logmappen ikke matcher trรฆningskรธrslen.

TensorBoard-vejledning: Visualisering af TensorFlow-grafer

Hvad er TensorBoard?

TensorBoard er den brugerflade, der bruges til at visualisere grafen og andre vรฆrktรธjer til at forstรฅ, fejlfinde og optimere modellen. Det er et vรฆrktรธj, der leverer mรฅlinger og visualiseringer til en maskinlรฆringsarbejdsgang. Det hjรฆlper track-metrikker sรฅsom tab og nรธjagtighed, visualisere modelgrafen og projicere indlejringer i lavere dimensionelle rum.

TensorBoard leveres med TensorFlow og kรธrer som en lille lokal webserver, der lรฆser de hรฆndelsesfiler, som et trรฆningsjob skriver til disken.

Eksempel pรฅ TensorFlow-grafvisualisering ved hjรฆlp af TensorBoard

Billedet nedenfor stammer fra TensorBoard-grafen, som du vil generere i denne vejledning. Det er hovedpanelet:

TensorBoard Scalars-dashboard, der viser average_loss-kurven for den trรฆnede DNN-regressor

Fra billedet nedenfor kan du se panelet med TensorBoard grafvisualisering. Panelet indeholder forskellige faner, som er knyttet til det informationsniveau, du tilfรธjer, nรฅr du kรธrer modellen.

TensorBoard-navigationslinjen med fanerne Skalarer, Grafer, Fordelinger, Histogrammer og Projektor

  • Skalarer: Vis forskellige nyttige oplysninger under modeltrรฆningen
  • Grafer: Vis modellen
  • Histogram: Vis vรฆgte med et histogram
  • Distribution: Vis vรฆgtfordelingen
  • Projektor: Vis principal component analyse og T-SNE algoritme. Teknikken anvendt til dimensionalitetsreduktion

I lรธbet af denne TensorBoard-tutorial vil du trรฆne en simpel dyb lรฆring modellen, og den graf, den producerer, lรฆses nedefra og op.

Hvis du ser pรฅ grafen, kan du forstรฅ, hvordan modellen fungerer. De nummererede badges pรฅ skรฆrmbilledet nedenfor markerer disse fire faser:

  1. Sรฆt dataene i kรธ til modellen: Skub en mรฆngde data svarende til batchstรธrrelsen til modellen, dvs. Antal datafeed efter hver iteration
  2. Fรธr dataene til tensorerne
  3. Trรฆn modellen
  4. Vis antallet af batches under trรฆningen. Gem modellen pรฅ disken.

TensorFlow-graf i TensorBoard med nummererede noder til inputkรธen, dnn-blokken og lagringsoperationen

Grundideen bag TensorBoard er, at et neuralt netvรฆrk kan opfรธre sig som en sort boks, og du har brug for et vรฆrktรธj til at inspicere, hvad der er indeni boksen. Tรฆnk pรฅ TensorBoard som en lommelygte til at dykke ned i netvรฆrket.

Det hjรฆlper med at forstรฅ afhรฆngighederne mellem operationer, hvordan vรฆgten beregnes, viser tabsfunktionen og meget anden nyttig information. Nรฅr du samler alle disse stykker information, har du et fantastisk vรฆrktรธj til at fejlfinde og finde ud af, hvordan du kan forbedre modellen.

For at give dig en idรฉ om, hvor nyttig TensorBoard-grafen kan vรฆre, kan du se pรฅ de to tabskurver nedenfor:

To TensorBoard-tabskurver side om side, der sammenligner en model, der ikke lรฆrer, med en model, der konvergerer

Et neuralt netvรฆrk bestemmer, hvordan de forskellige neuroner skal forbindes, og hvor mange lag der er nรธdvendige, fรธr modellen kan forudsige et resultat. Nรฅr arkitekturen er defineret, skal du ikke kun trรฆne modellen, men ogsรฅ en metrik, der mรฅler nรธjagtigheden af โ€‹โ€‹forudsigelsen. Denne metrik kaldes en tabsfunktion, og mรฅlet er at minimere den, hvilket ganske enkelt betyder, at modellen laver fรฆrre fejl.

Hver trรฆningsalgoritme gentager beregningen mange gange, indtil tabet nรฅr en fladere linje. Minimering af tabet krรฆver ogsรฅ en lรฆringshastighed, som er den hastighed, hvormed modellen lรฆrer. Sรฆttes lรฆringshastigheden for hรธjt, har modellen aldrig tid til at lรฆre noget: det er diagrammet til venstre, hvor linjen bevรฆger sig op og ned, fordi modellen reelt gรฆtter. Diagrammet til hรธjre viser, at tabet falder over iterationerne, indtil kurven flader ud, hvilket betyder, at modellen har fundet en lรธsning.

TensorBoard er et fantastisk vรฆrktรธj til at visualisere sรฅdanne metrikker og fremhรฆve potentielle problemer. Et neuralt netvรฆrk kan tage timer eller uger, fรธr det finder en lรธsning, og TensorBoard opdaterer metrikkene, mens jobbet stadig kรธrer. Du behรธver derfor ikke at vente til slutningen for at se, om modellen trรฆner korrekt: รฅbn TensorBoard, tjek, hvordan trรฆningen gรฅr, og foretag den nรธdvendige รฆndring, hvis det er nรธdvendigt.

Hvordan bruger man TensorBoard?

I dette afsnit lรฆrer du, hvordan du รฅbner TensorBoard fra terminalen pรฅ macOS og fra kommandolinjen pรฅ WindowsFokus her er vรฆrktรธjet snarere end modellen, sรฅ trรฆningskoden er bevidst holdt kort.

Fรธrst skal du importere de biblioteker, du vil bruge under trรฆningen.

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

Du opretter dataene. Det er et array med 10000 rรฆkker og 5 kolonner.

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

Produktion

(10000, 5)

Koden nedenfor transformerer dataene og opretter modellen.

Bemรฆrk at indlรฆringsraten er lig med 0.1. Hvis du รฆndrer denne rate til en hรธjere vรฆrdi, vil modellen ikke finde en lรธsning. Dette er, hvad der skete i venstre side af billedet ovenfor.

Eksemplet bruger en TensorFlow-estimator, den hรธjniveau-API, der omslutter de matematiske beregninger. Estimatorer tilhรธrer TensorFlow 1.x API'en, sรฅ de to kodestykker nedenfor kรธrer under en 1.x-installation eller gennem tf.compat.v1 navneomrรฅde.

For at oprette logfilerne skal du angive stien. Dette gรธres med argumentet model_dir.

I TensorBoard-eksemplet nedenfor gemmer du modellen i arbejdsmappen, dvs. hvor du gemmer notesbogen eller Python fil. Inde i denne sti vil TensorFlow oprette en mappe kaldet train med en undermappe kaldet 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    
      )
)

Produktion

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 sidste trin i dette eksempel pรฅ en TensorFlow-visualisering af en graf bestรฅr i at trรฆne modellen. Under trรฆningen skriver TensorFlow information ind i modelmappen.

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

Produktion

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 udfรธres det samme job af Keras TensorBoard-tilbagekaldet, som skriver grafen og metrikkene pr. epoke uden nogen 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 kรธrslen er fรฆrdig, indeholder logmappen en checkpoint-fil, en graph.pbtxt fil og en eller flere events.out.tfevents filer โ€” prรฆcis hvad TensorBoard lรฆser.

Til macOS brugere

Finder-visningen nedenfor viser den nye train/linreg-mappe, der er oprettet i arbejdsmappen.

macOS Filliste, der viser train- og linreg-logmapperne med checkpoint-, events- og graph.pbtxt-filer

Til Windows brugere

On Windows De samme filer vises under den sti, du sendte til model_dir, som fremhรฆvet i adresselinjen.

Windows Stifindervisning af togets linreg-mappe, der indeholder TensorFlow-hรฆndelses- og kontrolpunktsfiler

Det samme hรฆndelsesfilformat produceres af PyTorch, sรฅ dashboardet er ikke begrรฆnset til TensorFlow-kรธrsler.

Nu hvor du har skrevet loghรฆndelserne, kan du รฅbne TensorBoard. TensorBoard serverer som standard pรฅ port 6006 (Jupyter bruger port 8888). Brug terminalen pรฅ macOS eller Anaconda-prompten pรฅ Windows.

Til macOS brugere

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

Notesbogen er gemt i stien /Brugere/Guru99/tuto_TF

Til Windows brugere

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

Notesbogen er gemt i stien C:\Users\Admin\Anaconda3

For at starte TensorBoard skal du kรธre fรธlgende kommando fra den pรฅgรฆldende mappe.

Til macOS brugere

tensorboard --logdir=./train/linreg

Til Windows brugere

tensorboard --logdir=.\train\linreg

TensorBoard serveres derefter pรฅ http://localhost:6006

Flag Hvad den kontrollerer
--logdir Mappe, der indeholder begivenhedsfilerne. Dette er det eneste obligatoriske flag.
--port Port at servere pรฅ. Standardindstillingen er 6006; skift den, hvis en tidligere session stadig indeholder den port.
--bind_all Serveres pรฅ alle netvรฆrksgrรฆnseflader. TensorBoard binder kun til localhost som standard, sรฅ fjernadgang krรฆver dette flag, og det kan ikke kombineres med --host.
--reload_interval Hvor ofte, i sekunder, logmappen scannes igen for nye data.
--logdir_spec ร†ldre alternativ funktion, der accepterer flere kommaseparerede stier; --logdir understรธtter ikke lรฆngere den formular.

tensorboard dev Underkommandoen virker ikke lรฆngere: den hostede TensorBoard.dev-tjeneste lukkede ned den 1. januar 2024. Lokal brug pรฅvirkes ikke.

Pรฅ nogle maskiner udskriver konsollen vรฆrtsnavnet i stedet for localhost, som i Anaconda-prompten nedenfor. Begge adresser รฅbner det samme dashboard.

Anaconda-prompten kรธrer tensorboard-kommandoen og udskriver serveradressen pรฅ port 6006

Kopier og indsรฆt adressen i din foretrukne browser. Du bรธr se Scalars-dashboardet vist nedenfor.

TensorBoard Scalars-dashboardet รฅbnes i en browser, nรฅr logmappen er indlรฆst korrekt

Hvis du i stedet ser noget lignende:

TensorBoard-fejlsidelรฆsning Ingen grafdefinitionsfiler fundet

Det betyder, at TensorBoard ikke kan finde logfilen. Sรธrg for at pege cd til den rigtige sti, eller dobbelttjek at loghรฆndelsen rent faktisk blev oprettet. Hvis den ikke blev det, sรฅ kรธr trรฆningskoden igen.

Hvis du vil lukke TensorBoard, skal du trykke pรฅ CTRL+C i terminalvinduet.

Hattip: tjek din Anaconda-prompt for den aktuelle arbejdsmappe.

Anaconda-prompten viser det aktive hello-tf-miljรธ og den aktuelle arbejdsmappe

I skรฆrmbilledet ovenfor sidder prompten i C:\Users\Admin, sรฅ logfilen bรธr oprettes under den mappe.

Ofte Stillede Spรธrgsmรฅl

En fรฆrdig kรธrsel efterlader et checkpoint-indeks, en eller flere model.ckpt-filer, en graph.pbtxt-fil og mindst รฉn events.out.tfevents-fil. TensorBoard lรฆser kun event-filerne; checkpoints findes, sรฅ trรฆningen kan genoptages fra det sted, hvor den stoppede.

Ja. PyTorch sender et resumรฉWriter der udsender det samme event-filformat, sรฅ den identiske tensorboard โ€“logdir-kommando gengiver dashboardet. Intet ved serveren รฆndres โ€” kun biblioteket, der producerer resumรฉerne.

Nej. Den hostede tjeneste lukkede den 1. januar 2024, og underkommandoen tensorboard dev returnerer nu en fejl. Del resultater ved at kรธre TensorBoard i en notesbog, f.eks. Google Colab, eller ved at eksportere diagrammerne som CSV eller JSON.

Giv hver kรธrsel sin egen undermappe under en delt forรฆldermappe, og peg derefter โ€“logdir pรฅ forรฆlderen. Hver undermappe vises som en separat kรธrsel i panelet til venstre, og kurverne tegnes pรฅ de samme akser med et afkrydsningsfelt hver.

Grafen pรฅ operationsniveau er standardvisningen og viser, hvordan TensorFlow forstรฅr programmet, tegnet nedefra og op. Hvis du vรฆlger keras-tagget, skiftes der til den konceptuelle graf, som kun viser modellagene og er nemmere at kontrollere i forhold til dit design.

Automatiserede scanninger producerer snesevis af kรธrsler pรฅ รฉn gang, sรฅ dashboardet bliver et sammenligningsvรฆrktรธj snarere end en overvรฅgning af รฉn kรธrsel. HParams-pluginnet logger hver konfiguration sammen med dens metrikker, sรฅ du kan sortere forsรธg i stedet for at lรฆse kurver รฉn efter รฉn.

GitHub Copilot udkast til callback og summary-writer standardtekst hurtigt. Behandl outputtet som et udkast: det blander ofte TensorFlow 1.x og 2.x API'er, sรฅ tjek hvert navn mod den aktuelle dokumentation, fรธr du kรธrer koden.

Enten blev der ikke skrevet nogen eventfil, eller ogsรฅ matcher den sti, der blev sendt til โ€“logdir, ikke den, som trรฆningsjobbet brugte. Bekrรฆft, at der findes en events.out.tfevents-fil i den mappe, og Windows Start TensorBoard fra det samme drevbogstav.

Opsummer dette indlรฆg med: