TensorBoard-vejledning: Visualisering af TensorFlow-grafer
โก Smart opsummering
TensorBoard er den visuelle brugerflade til TensorFlow-trรฆningskรธrsler, der plotter tabskurver, modelgrafer, vรฆgthistogrammer og indlejringer. Denne gennemgang skriver hรฆndelsesfiler med en estimator og รฅbner derefter dashboardet pรฅ port 6006.
Hvad er TensorBoard?
TensorBoard er den brugerflade, 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 leverer mรฅlinger og visualiseringer til en maskinlรฆringsarbejdsgang. Det hjรฆlper track-metrikker sรฅsom tab og nรธjagtighed, visualisere modelgrafen og projicere indlejringer i lavere dimensionelle rum.
TensorBoard leveres med TensorFlow og kรธrer som en lille lokal webserver, der lรฆser de hรฆndelsesfiler, som et trรฆningsjob skriver til disken.
Eksempel pรฅ TensorFlow-grafvisualisering ved hjรฆlp af TensorBoard
Billedet nedenfor stammer fra TensorBoard-grafen, som du vil generere i denne vejledning. Det er hovedpanelet:
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.
- Skalarer: Vis forskellige nyttige oplysninger under modeltrรฆningen
- Grafer: Vis modellen
- Histogram: Vis vรฆgte med et histogram
- Distribution: Vis vรฆgtfordelingen
- Projektor: Vis principal component analyse og T-SNE algoritme. Teknikken anvendt til dimensionalitetsreduktion
I lรธbet af denne TensorBoard-tutorial vil du trรฆne en simpel dyb lรฆring modellen, og den graf, den producerer, lรฆses nedefra og op.
Hvis du ser pรฅ grafen, kan du forstรฅ, hvordan modellen fungerer. De nummererede badges pรฅ skรฆrmbilledet nedenfor markerer disse fire faser:
- Sรฆt dataene i kรธ til modellen: Skub en mรฆngde data svarende til batchstรธrrelsen til modellen, dvs. Antal datafeed efter hver iteration
- Fรธr dataene til tensorerne
- Trรฆn modellen
- Vis antallet af batches under trรฆningen. Gem modellen pรฅ disken.
Grundideen bag TensorBoard er, at et neuralt netvรฆrk kan opfรธre sig som en sort boks, og du har brug for et vรฆrktรธj til at inspicere, hvad der er indeni boksen. Tรฆnk pรฅ TensorBoard som en lommelygte til at dykke ned i netvรฆrket.
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รฅ de to tabskurver nedenfor:
Et neuralt netvรฆrk bestemmer, hvordan de forskellige neuroner skal forbindes, og hvor mange lag der er nรธdvendige, fรธr modellen kan forudsige et resultat. Nรฅr arkitekturen er defineret, skal du ikke kun trรฆne modellen, men ogsรฅ en metrik, der mรฅler nรธjagtigheden af โโforudsigelsen. Denne metrik kaldes en tabsfunktion, og mรฅlet er at minimere den, hvilket ganske enkelt betyder, at modellen laver fรฆrre fejl.
Hver trรฆningsalgoritme gentager beregningen mange gange, indtil tabet nรฅr en fladere linje. Minimering af tabet krรฆver ogsรฅ en lรฆringshastighed, som er den hastighed, hvormed modellen lรฆrer. Sรฆttes lรฆringshastigheden for hรธjt, har modellen aldrig tid til at lรฆre noget: det er diagrammet til venstre, hvor linjen bevรฆger sig op og ned, fordi modellen reelt gรฆtter. Diagrammet til hรธjre viser, at tabet falder over iterationerne, indtil kurven flader ud, hvilket betyder, at modellen har fundet en lรธsning.
TensorBoard er et fantastisk vรฆrktรธj til at visualisere sรฅdanne metrikker og fremhรฆve potentielle problemer. Et neuralt netvรฆrk kan tage timer eller uger, fรธr det finder en lรธsning, og TensorBoard opdaterer metrikkene, mens jobbet stadig kรธrer. Du behรธver derfor ikke at vente til slutningen for at se, om modellen trรฆner korrekt: รฅbn TensorBoard, tjek, hvordan trรฆningen gรฅr, og foretag den nรธdvendige รฆndring, hvis det er nรธdvendigt.
Hvordan bruger man TensorBoard?
I dette afsnit lรฆrer du, hvordan du รฅbner TensorBoard fra terminalen pรฅ macOS og fra kommandolinjen pรฅ WindowsFokus her er vรฆrktรธjet snarere end modellen, sรฅ trรฆningskoden er bevidst holdt kort.
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 et array 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)
Koden nedenfor transformerer dataene og opretter modellen.
Bemรฆrk at indlรฆringsraten er lig med 0.1. Hvis du รฆndrer denne rate til en hรธjere vรฆrdi, vil modellen ikke finde en lรธsning. Dette er, hvad der skete i venstre side af billedet ovenfor.
Eksemplet bruger en TensorFlow-estimator, den hรธjniveau-API, der omslutter de matematiske beregninger. Estimatorer tilhรธrer TensorFlow 1.x API'en, sรฅ de to kodestykker nedenfor kรธrer under en 1.x-installation eller gennem tf.compat.v1 navneomrรฅde.
For at oprette logfilerne skal du angive stien. Dette gรธres med argumentet model_dir.
I TensorBoard-eksemplet nedenfor gemmer du modellen i arbejdsmappen, dvs. hvor du gemmer notesbogen eller Python fil. Inde i denne sti vil TensorFlow oprette en mappe kaldet train med en undermappe kaldet 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 eksempel pรฅ en TensorFlow-visualisering af en graf bestรฅr i at trรฆne modellen. Under trรฆningen skriver TensorFlow information ind i modelmappen.
# 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>
Pรฅ TensorFlow 2 udfรธres det samme job af Keras TensorBoard-tilbagekaldet, som skriver grafen og metrikkene pr. epoke uden nogen estimatorkode:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
Nรฅr kรธrslen er fรฆrdig, indeholder logmappen en checkpoint-fil, en graph.pbtxt fil og en eller flere events.out.tfevents filer โ prรฆcis hvad TensorBoard lรฆser.
Til macOS brugere
Finder-visningen nedenfor viser den nye train/linreg-mappe, der er oprettet i arbejdsmappen.
Til Windows brugere
On Windows De samme filer vises under den sti, du sendte til model_dir, som fremhรฆvet i adresselinjen.
Det samme hรฆndelsesfilformat produceres af PyTorch, sรฅ dashboardet er ikke begrรฆnset til TensorFlow-kรธrsler.
Nu hvor du har skrevet loghรฆndelserne, kan du รฅbne TensorBoard. TensorBoard serverer som standard pรฅ port 6006 (Jupyter bruger port 8888). Brug terminalen pรฅ macOS eller Anaconda-prompten pรฅ Windows.
Til macOS brugere
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Notesbogen er gemt i stien /Brugere/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 skal du kรธre fรธlgende kommando fra den pรฅgรฆldende mappe.
Til macOS brugere
tensorboard --logdir=./train/linreg
Til Windows brugere
tensorboard --logdir=.\train\linreg
TensorBoard serveres derefter pรฅ http://localhost:6006
| Flag | Hvad den kontrollerer |
|---|---|
--logdir |
Mappe, der indeholder begivenhedsfilerne. Dette er det eneste obligatoriske flag. |
--port |
Port at servere pรฅ. Standardindstillingen er 6006; skift den, hvis en tidligere session stadig indeholder den port. |
--bind_all |
Serveres pรฅ alle netvรฆrksgrรฆnseflader. TensorBoard binder kun til localhost som standard, sรฅ fjernadgang krรฆver dette flag, og det kan ikke kombineres med --host. |
--reload_interval |
Hvor ofte, i sekunder, logmappen scannes igen for nye data. |
--logdir_spec |
รldre alternativ funktion, der accepterer flere kommaseparerede stier; --logdir understรธtter ikke lรฆngere den formular. |
tensorboard dev Underkommandoen virker ikke lรฆngere: den hostede TensorBoard.dev-tjeneste lukkede ned den 1. januar 2024. Lokal brug pรฅvirkes ikke.
Pรฅ nogle maskiner udskriver konsollen vรฆrtsnavnet i stedet for localhost, som i Anaconda-prompten nedenfor. Begge adresser รฅbner det samme dashboard.
Kopier og indsรฆt adressen i din foretrukne browser. Du bรธr se Scalars-dashboardet vist nedenfor.
Hvis du i stedet ser noget lignende:
Det betyder, at TensorBoard ikke kan finde logfilen. Sรธrg for at pege cd til den rigtige sti, eller dobbelttjek at loghรฆndelsen rent faktisk blev oprettet. Hvis den ikke blev det, sรฅ kรธr trรฆningskoden igen.
Hvis du vil lukke TensorBoard, skal du trykke pรฅ CTRL+C i terminalvinduet.
Hattip: tjek din Anaconda-prompt for den aktuelle arbejdsmappe.
I skรฆrmbilledet ovenfor sidder prompten i C:\Users\Admin, sรฅ logfilen bรธr oprettes under den mappe.










