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:

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.
- 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.
- 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
- Voer de gegevens naar de Tensors
- Train het model
- Geef het aantal batches weer tijdens de training. Sla het model op de schijf op.
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:
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
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.
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.
Als je zoiets als dit ziet:
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,
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