TensorBoard Tutorial: TensorFlow grafvisualisering [Eksempel]

Hvad er TensorBoard?

TensorBoard er grænsefladen, 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 giver målinger og visualiseringer til workflow for maskinlæring. Det hjælper med at spore målinger som tab og nøjagtighed, visualisering af modelgrafer, projektindlejring ved lavere dimensionelle rum osv.

TensorFlow-grafvisualisering ved hjælp af Tensorboard-eksempel

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

TensorFlow grafvisualisering
TensorFlow grafvisualisering

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-grafer

TensorBoard-grafer
  • Skalarer: Vis forskellige nyttige oplysninger under modeltræningen
  • Grafer: Vis modellen
  • Histogram: Vis vægte med et histogram
  • Distribution: Vis fordelingen af ​​vægten
  • projektor: Vis Principal komponentanalyse og T-SNE-algoritme. Teknikken, der bruges til dimensionalitetsreduktion

I løbet af denne TensorBoard Tutorial vil du træne en simpel dyb læringsmodel. Du vil lære, hvordan det fungerer i en fremtidig tutorial.

Hvis du ser på grafen, kan du forstå, hvordan modellen fungerer.

  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-grafvisualisering ved hjælp af Tensorboard-eksempel

Den grundlæggende idé bag tensorboard er, at neurale netværk kan være noget kendt som en sort boks, og vi har brug for et værktøj til at inspicere, hvad der er inde i denne boks. Du kan forestille dig tensorboard som en lommelygte til at begynde at dykke ind i det neurale netværk.

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å billedet nedenfor:

TensorBoard-grafer
TensorBoard graf

Et neuralt netværk bestemmer, hvordan de forskellige "neuroner" skal forbindes, og hvor mange lag, før modellen kan forudsige et udfald. Når du har defineret arkitekturen, skal du ikke kun træne modellen, men også en metrik til at beregne nøjagtigheden af ​​forudsigelsen. Denne metrik omtales som en tabsfunktion. Målet er at minimere tabsfunktionen. Med andre ord betyder det, at modellen laver færre fejl. Alle maskinlæringsalgoritmer vil gentage beregningerne mange gange, indtil tabet når en fladere linje. For at minimere denne tabsfunktion skal du definere en indlæringshastighed. Det er den hastighed, du ønsker, at modellen skal lære. Hvis du sætter en indlæringshastighed for højt, når modellen ikke tid til at lære noget. Dette er tilfældet på billedet til venstre. Linjen bevæger sig op og ned, hvilket betyder, at modellen forudsiger med rent gæt resultatet. Billedet til højre viser, at tabet falder over iteration, indtil kurven blev flad, hvilket betyder, at modellen fandt en løsning.

TensorBoard er et fantastisk værktøj til at visualisere sådanne metrics og fremhæve potentielle problemer. Det neurale netværk kan tage timer til uger, før de finder en løsning. TensorBoard opdaterer metrics meget ofte. I dette tilfælde behøver du ikke vente til slutningen for at se, om modellen træner korrekt. Du kan åbne TensorBoard for at tjekke, hvordan træningen forløber, og foretage de nødvendige ændringer, hvis det er nødvendigt.

Hvordan bruger man TensorBoard?

I denne vejledning lærer du, hvordan du åbner TensorBoard fra terminalen til MacOS og kommandolinjen TensorBoard for Windows.

Koden vil blive forklaret i en fremtidig tutorial, fokus her er på TensorBoard.

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 en matrix 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)

Koderne nedenfor transformerer dataene og skaber modellen.

Bemærk, at indlæringshastigheden er lig med 0.1. Hvis du ændrer denne sats til en højere værdi, vil modellen ikke finde en løsning. Dette er, hvad der skete i venstre side af ovenstående billede.

I løbet af det meste af TensorFlow tutorials, vil du bruge TensorFlow-estimator. Dette er TensorFlow API, der indeholder alle de matematiske beregninger.

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

I TensorBoard-eksemplet nedenfor gemmer du modellen inde i arbejdsbiblioteket, dvs. hvor du gemmer notebook- eller pythonfilen. Inde i denne sti vil TensorFlow oprette en mappe kaldet train med et underordnet mappenavn 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: {'_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 TensorFlow visualiseringsgrafeksempel består i at træne modellen. Under uddannelsen skriver TensorFlow information i modelkataloget.

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

Til MacOS-brugere

TensorBoard Tutorial til MacOS-bruger

Til Windows bruger

TensorBoard Tutorial til Windows Bruger

Du kan se disse oplysninger iPyTorch TensorBoard.

Nu hvor du har skrevet loghændelser, kan du åbne Tensorboard. Tensorboard Keras kører på port 6006 (Jupyter kører på port 8888). Du kan bruge Terminal til MacOs-brugere eller Anaconda-prompt til Windows bruger.

Til MacOS-brugere

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

Notesbogen er gemt i stien /Users/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 kan du bruge denne kode

Til MacOS-brugere

tensorboard --logdir=./train/linreg

Til Windows brugere

tensorboard --logdir=.\train\linreg

Tensorboard er placeret i denne URL: http://localhost:6006

Det kan også være placeret på følgende sted.

Brug TensorBoard

Kopier og indsæt URL'en i din yndlingsbrowser. Du bør se dette:

Bemærk, at vi lærer, hvordan man læser grafen i vejledningen dedikeret til dyb læring.

Brug TensorBoard

Hvis du ser noget som dette:

Brug TensorBoard

Det betyder, at Tensorboard ikke kan finde logfilen. Sørg for at pege cd'en til den rigtige sti, eller dobbelttjek om loghændelsen er blevet oprettet. Hvis ikke, kør koden igen.

Hvis du vil lukke TensorBoard Tryk CTRL+C

Hattip: Tjek din anaconda-prompt for den aktuelle arbejdsmappe,

Brug TensorBoard

Logfilen skal oprettes på C:\Users\Admin

Resumé

TensorBoard er et fantastisk værktøj til at visualisere din model. Desuden vises mange målinger under træningen, såsom tab, nøjagtighed eller vægte.

For at aktivere Tensorboard skal du indstille stien til din fil:

cd /Users/Guru99/tuto_TF

Aktiver Tensorflows miljø

activate hello-tf

Start Tensorboard

tensorboard --logdir=.+ PATH