TensorBoard-zelfstudie: TensorFlow-grafiekvisualisatie [Voorbeeld]

Wat is TensorBoard?

TensorBoard is de interface die wordt gebruikt om de grafiek en andere hulpmiddelen te visualiseren om het model te begrijpen, te debuggen en te optimaliseren. Het is een tool die metingen en visualisaties biedt voor de machine learning-workflow. Het helpt bij het bijhouden van statistieken zoals verlies en nauwkeurigheid, modelgrafiekvisualisatie, projectinsluiting in lagerdimensionale ruimtes, enz.

TensorFlow-grafiekvisualisatie met behulp van Tensorboard-voorbeeld

De onderstaande afbeelding komt uit de TensorBoard-grafiek die u in deze TensorBoard-tutorial gaat genereren. Het is het hoofdpaneel:

TensorFlow-grafiekvisualisatie
TensorFlow-grafiekvisualisatie

Op de onderstaande afbeelding ziet u het paneel van de TensorBoard-grafiekvisualisatie. Het paneel bevat verschillende tabbladen, die zijn gekoppeld aan het informatieniveau dat u toevoegt wanneer u het model uitvoert.

TensorBoard-grafieken

TensorBoard-grafieken
  • scalaires: Toon verschillende nuttige informatie tijdens de modeltraining
  • Grafieken: Toon het model
  • histogram: Gewichten weergeven met een histogram
  • Distributie: Weergave van de gewichtsverdeling
  • Projector: Toon hoofdcomponentenanalyse en T-SNE-algoritme. De techniek die wordt gebruikt voor dimensionaliteitsreductie

Tijdens deze TensorBoard Tutorial train je een eenvoudig deep learning-model. Hoe het werkt, leer je in een toekomstige tutorial.

Als u naar de grafiek kijkt, begrijpt u hoe het model werkt.

  1. Plaats de gegevens in het model: push een hoeveelheid gegevens die gelijk is aan de batchgrootte naar het model, dat wil zeggen het aantal gegevensfeeds na elke iteratie
  2. Voer de gegevens naar de Tensors
  3. Train het model
  4. Geef het aantal batches weer tijdens de training. Sla het model op de schijf op.

TensorFlow-grafiekvisualisatie met behulp van Tensorboard-voorbeeld

Het basisidee achter tensorboard is dat een neuraal netwerk iets kan zijn dat bekend staat als een black box en we hebben een tool nodig om te inspecteren wat er in deze box zit. Je kunt je tensorboard voorstellen als een zaklamp om in het neurale netwerk te duiken.

Het helpt om de afhankelijkheden tussen bewerkingen te begrijpen, hoe de gewichten worden berekend, geeft de verliesfunctie weer en veel andere nuttige informatie. Wanneer u al deze stukjes informatie samenbrengt, hebt u een geweldige tool om te debuggen en te ontdekken hoe u het model kunt verbeteren.

Om u een idee te geven van hoe nuttig de TensorBoard-grafiek kan zijn, bekijkt u de onderstaande afbeelding:

TensorBoard-grafieken
TensorBoard-grafiek

Een neuraal netwerk beslist hoe de verschillende "neuronen" met elkaar verbonden moeten worden en hoeveel lagen er nodig zijn voordat het model een uitkomst kan voorspellen. Zodra u de architectuur hebt gedefinieerd, moet u niet alleen het model trainen, maar ook een metriek om de nauwkeurigheid van de voorspelling te berekenen. Deze metriek wordt een verlies functie. Het doel is om de verliesfunctie te minimaliseren. Met andere woorden, het betekent dat het model minder fouten maakt. Alle machine learning-algoritmen herhalen de berekeningen vele malen totdat het verlies een vlakkere lijn bereikt. Om deze verliesfunctie te minimaliseren, moet u een leersnelheid. Het is de snelheid die u wilt dat het model leert. Als je een te hoog leertempo instelt, heeft het model geen tijd om iets te leren. Op de linkerfoto is dit het geval. De lijn beweegt op en neer, wat betekent dat het model de uitkomst met pure gok voorspelt. De afbeelding rechts laat zien dat het verlies in de loop van de iteratie afneemt totdat de curve vlakker wordt, wat betekent dat het model een oplossing heeft gevonden.

TensorBoard is een geweldig hulpmiddel om dergelijke statistieken te visualiseren en mogelijke problemen te markeren. Het neurale netwerk kan uren tot weken nodig hebben om een ​​oplossing te vinden. TensorBoard werkt de statistieken heel vaak bij. In dit geval hoeft u niet tot het einde te wachten om te zien of het model correct traint. U kunt TensorBoard openen om te controleren hoe de training verloopt en indien nodig de juiste wijziging doorvoeren.

Hoe gebruik je TensorBoard?

In deze tutorial leert u hoe u TensorBoard opent vanuit de terminal voor MacOS en de opdrachtregel TensorBoard voor Windows.

De code zal worden uitgelegd in een toekomstige tutorial, de focus ligt hier op TensorBoard.

Eerst moet u de bibliotheken importeren die u tijdens de training gaat gebruiken

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

Jij creëert de gegevens. Het is een array van 10000 rijen en 5 kolommen

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

uitgang

(10000, 5)

De onderstaande codes transformeren de gegevens en creëren het model.

Merk op dat de leersnelheid gelijk is aan 0.1. Als u dit tarief naar een hogere waarde wijzigt, zal het model geen oplossing vinden. Dit is wat er aan de linkerkant van de bovenstaande foto gebeurde.

Tijdens de meeste van de TensorFlow-zelfstudies, gebruikt u de TensorFlow-schatter. Dit is de TensorFlow API die alle wiskundige berekeningen bevat.

Om de logbestanden te maken, moet u het pad opgeven. Dit wordt gedaan met het argument model_dir.

In het onderstaande TensorBoard-voorbeeld slaat u het model op in de werkmap, dat wil zeggen, waar u het notebook- of Python-bestand opslaat. Binnen dit pad maakt TensorFlow een map met de naam train met de naam linreg van de onderliggende map.

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

uitgang

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}

De laatste stap van dit voorbeeld van een TensorFlow-visualisatiegrafiek bestaat uit het trainen van het model. Tijdens de training schrijft TensorFlow informatie in de modeldirectory.

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

uitgang

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>

Voor MacOS-gebruikers

TensorBoard-zelfstudie voor MacOS-gebruikers

Voor Windows gebruiker

TensorBoard-tutorial voor Windows Gebruiker

U kunt deze informatie bekijken in dePyTorch TensorBoard.

Nu u de loggebeurtenissen hebt geschreven, kunt u Tensorboard openen. Tensorboard Keras draait op poort 6006 (Jupyter draait op poort 8888). U kunt de Terminal voor MacOs-gebruikers of de Anaconda-prompt gebruiken voor Windows gebruiker.

Voor MacOS-gebruikers

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

Het notebook wordt opgeslagen in het pad /Users/Guru99/tuto_TF

Voor Windows gebruikers

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

Het notebook wordt opgeslagen in het pad C:\Users\Admin\Anaconda3

Om Tensorboard te starten, kunt u deze code gebruiken

Voor MacOS-gebruikers

tensorboard --logdir=./train/linreg

Voor Windows gebruikers

tensorboard --logdir=.\train\linreg

Tensorboard bevindt zich op deze URL: http://localhost:6006

Het zou ook op de volgende locatie kunnen zijn.

Gebruik TensorBoard

Kopieer en plak de URL in uw favoriete browser. Je zou dit moeten zien:

Merk op dat we zullen leren hoe we de grafiek moeten lezen in de tutorial gewijd aan de diepgaand leren.

Gebruik TensorBoard

Als je zoiets als dit ziet:

Gebruik TensorBoard

Het betekent dat Tensorboard het logbestand niet kan vinden. Zorg ervoor dat u de cd naar het juiste pad wijst of controleer nogmaals of de loggebeurtenis is gemaakt. Als dat niet het geval is, voer de code dan opnieuw uit.

Als u TensorBoard wilt sluiten, drukt u op CTRL+C

Hoedentip: Controleer je anaconda-prompt voor de huidige werkmap,

Gebruik TensorBoard

Het logbestand moet worden aangemaakt op C:\Users\Admin

Samenvatting

TensorBoard is een geweldige tool om uw model te visualiseren. Bovendien worden er tijdens de training veel statistieken weergegeven, zoals het verlies, de nauwkeurigheid of de gewichten.

Om Tensorboard te activeren, moet u het pad van uw bestand instellen:

cd /Users/Guru99/tuto_TF

Activeer de omgeving van Tensorflow

activate hello-tf

Lanceer Tensorboard

tensorboard --logdir=.+ PATH