TensorBoard Tutorial: TensorFlow Graph Visualization [Exempel]

Vad är TensorBoard?

TensorBoard är gränssnittet som används för att visualisera grafen och andra verktyg för att förstå, felsöka och optimera modellen. Det är ett verktyg som tillhandahåller mätningar och visualiseringar för arbetsflödet för maskininlärning. Det hjälper till att spåra mätvärden som förlust och noggrannhet, visualisering av modellgrafer, projektinbäddning vid lägre dimensionella utrymmen, etc.

TensorFlow-grafvisualisering med Tensorboard-exempel

Bilden nedan kommer från TensorBoard-grafen som du kommer att generera i denna TensorBoard-handledning. Det är huvudpanelen:

TensorFlow grafvisualisering
TensorFlow grafvisualisering

Från bilden nedan kan du se panelen för TensorBoard grafvisualisering. Panelen innehåller olika flikar, som är kopplade till den informationsnivå du lägger till när du kör modellen.

TensorBoard-grafer

TensorBoard-grafer
  • Skalärer: Visa olika användbar information under modellutbildningen
  • Grafer: Visa modellen
  • Histogram: Visa vikter med ett histogram
  • Distribution: Visa fördelningen av vikten
  • Projektor: Visa Principal komponentanalys och T-SNE-algoritm. Tekniken som används för dimensionsreduktion

Under denna TensorBoard Tutorial kommer du att träna en enkel modell för djupinlärning. Du kommer att lära dig hur det fungerar i en framtida handledning.

Om du tittar på grafen kan du förstå hur modellen fungerar.

  1. Lägg data i kö till modellen: Skicka en mängd data lika med batchstorleken till modellen, dvs antal dataflöden efter varje iteration
  2. Mata in data till Tensorerna
  3. Träna modellen
  4. Visa antalet partier under utbildningen. Spara modellen på disken.

TensorFlow-grafvisualisering med Tensorboard-exempel

Grundtanken bakom tensorboard är att neurala nätverk kan vara något som kallas en svart låda och vi behöver ett verktyg för att inspektera vad som finns inuti denna låda. Du kan föreställa dig tensorboard som en ficklampa för att börja dyka in i det neurala nätverket.

Det hjälper till att förstå beroenden mellan operationer, hur vikterna beräknas, visar förlustfunktionen och mycket annan användbar information. När du samlar all denna information har du ett bra verktyg för att felsöka och hitta hur du kan förbättra modellen.

För att ge dig en uppfattning om hur användbar TensorBoard-grafen kan vara, titta på bilden nedan:

TensorBoard-grafer
TensorBoard-graf

Ett neuralt nätverk bestämmer hur de olika "neuronerna" ska kopplas ihop och hur många lager innan modellen kan förutsäga ett utfall. När du väl har definierat arkitekturen behöver du inte bara träna modellen utan också ett mått för att beräkna noggrannheten i förutsägelsen. Detta mått refereras till som en förlustfunktion. Målet är att minimera förlustfunktionen. Med andra ord betyder det att modellen gör färre fel. Alla maskininlärningsalgoritmer kommer att upprepa beräkningarna många gånger tills förlusten når en plattare linje. För att minimera denna förlustfunktion måste du definiera en inlärningshastighet. Det är hastigheten du vill att modellen ska lära sig. Om du sätter en inlärningshastighet för högt hinner modellen inte lära sig något. Så är fallet på den vänstra bilden. Linjen rör sig upp och ner, vilket innebär att modellen förutsäger resultatet med ren gissning. Bilden till höger visar att förlusten minskar över iteration tills kurvan blev platt, vilket betyder att modellen hittade en lösning.

TensorBoard är ett utmärkt verktyg för att visualisera sådana mätvärden och lyfta fram potentiella problem. Det neurala nätverket kan ta timmar till veckor innan de hittar en lösning. TensorBoard uppdaterar mätvärdena mycket ofta. I det här fallet behöver du inte vänta till slutet för att se om modellen tränar rätt. Du kan öppna TensorBoard för att kontrollera hur utbildningen går och göra lämpliga ändringar vid behov.

Hur använder man TensorBoard?

I den här handledningen lär du dig hur du öppnar TensorBoard från terminalen för MacOS och kommandoraden TensorBoard för Windows.

Koden kommer att förklaras i en framtida handledning, fokus här ligger på TensorBoard.

Först måste du importera de bibliotek du kommer att använda under utbildningen

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

Du skapar data. Det är en matris med 10000 5 rader och XNUMX kolumner

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

Produktion

(10000, 5)

Koderna nedan transformerar data och skapar modellen.

Observera att inlärningshastigheten är lika med 0.1. Om du ändrar denna kurs till ett högre värde kommer modellen inte att hitta en lösning. Detta är vad som hände till vänster på bilden ovan.

Under större delen av TensorFlow handledning, kommer du att använda TensorFlow estimator. Detta är TensorFlow API som innehåller alla matematiska beräkningar.

För att skapa loggfilerna måste du ange sökvägen. Detta görs med argumentet model_dir.

I TensorBoard-exemplet nedan lagrar du modellen i arbetskatalogen, dvs där du lagrar anteckningsboken eller pythonfilen. Inuti den här sökvägen kommer TensorFlow att skapa en mapp som heter train med ett underordnat mappnamn 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 sista steget i detta TensorFlow visualiseringsgrafexempel består i att träna modellen. Under utbildningen skriver TensorFlow information 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)

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>

För MacOS-användare

TensorBoard-handledning för MacOS-användare

För Windows användare

TensorBoard handledning för Windows Användare

Du kan se denna information iPyTorch TensorBoard.

Nu när du har skrivit logghändelserna kan du öppna Tensorboard. Tensorboard Keras körs på port 6006 (Jupyter körs på port 8888). Du kan använda Terminal för MacOs-användare eller Anaconda-prompten för Windows användaren.

För MacOS-användare

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

Anteckningsboken lagras i sökvägen /Users/Guru99/tuto_TF

För Windows användare

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

Anteckningsboken lagras i sökvägen C:\Users\Admin\Anaconda3

För att starta Tensorboard kan du använda den här koden

För MacOS-användare

tensorboard --logdir=./train/linreg

För Windows användare

tensorboard --logdir=.\train\linreg

Tensorboard finns i denna URL: http://localhost:6006

Den kan också vara placerad på följande plats.

Använd TensorBoard

Kopiera och klistra in webbadressen i din favoritwebbläsare. Du borde se detta:

Observera att vi kommer att lära oss hur man läser grafen i handledningen tillägnad djupt lärande.

Använd TensorBoard

Om du ser något sånt här:

Använd TensorBoard

Det betyder att Tensorboard inte kan hitta loggfilen. Se till att du pekar cd:n på rätt väg eller dubbelkolla om logghändelsen har skapats. Om inte, kör koden igen.

Om du vill stänga TensorBoard, tryck CTRL+C

Hatttips: Kontrollera din anaconda-prompt för den aktuella arbetskatalogen,

Använd TensorBoard

Loggfilen ska skapas på C:\Users\Admin

Sammanfattning

TensorBoard är ett utmärkt verktyg för att visualisera din modell. Dessutom visas många mätvärden under träningen, såsom förlust, noggrannhet eller vikter.

För att aktivera Tensorboard måste du ställa in sökvägen till din fil:

cd /Users/Guru99/tuto_TF

Aktivera Tensorflows miljö

activate hello-tf

Starta Tensorboard

tensorboard --logdir=.+ PATH