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:

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.
- 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.
- Lägg data i kö till modellen: Skicka en mängd data lika med batchstorleken till modellen, dvs antal dataflöden efter varje iteration
- Mata in data till Tensorerna
- Träna modellen
- Visa antalet partier under utbildningen. Spara modellen på disken.
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:
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
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.
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.
Om du ser något sånt här:
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,
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