TensorBoard-opplæring: TensorFlow-grafvisualisering
⚡ Smart oppsummering
TensorBoard er det visuelle grensesnittet for TensorFlow-treningskjøringer, som plotter tapskurver, modellgrafer, vekthistogrammer og innebygginger. Denne gjennomgangen skriver hendelsesfiler med en estimator, og åpner deretter dashbordet på port 6006.
Hva er TensorBoard?
TensorBoard er grensesnittet som brukes til å visualisere grafen og andre verktøy for å forstå, feilsøke og optimalisere modellen. Det er et verktøy som gir målinger og visualiseringer for en maskinlæringsarbeidsflyt. Det hjelper track-målinger som tap og nøyaktighet, visualisere modellgrafen og projisere innebygginger i lavere dimensjonale rom.
TensorBoard leveres med tensorflow og kjører som en liten lokal webserver som leser hendelsesfilene en treningsjobb skriver til disk.
TensorFlow-grafvisualisering ved bruk av TensorBoard-eksempel
Bildet nedenfor kommer fra TensorBoard-grafen du skal generere i denne veiledningen. Det er hovedpanelet:
Fra bildet nedenfor kan du se panelet med TensorBoard grafvisualisering. Panelet inneholder forskjellige faner, som er knyttet til informasjonsnivået du legger til når du kjører modellen.
- Skalarer: Vis ulik nyttig informasjon under modelltreningen
- grafer: Vis modellen
- Histogram: Vis vekter med et histogram
- Distribusjon: Vis vektfordelingen
- Projektor: Vis prinsipalkomponentanalyse og T-SNE-algoritmen. Teknikken som brukes for dimensjonalitetsreduksjon
I løpet av denne TensorBoard-opplæringen vil du trene en enkel dyp læring modellen, og grafen den produserer leses nedenfra og opp.
Hvis du ser på grafen, kan du forstå hvordan modellen fungerer. De nummererte merkene i skjermbildet nedenfor markerer disse fire trinnene:
- Sett dataene i kø til modellen: Send en mengde data som tilsvarer batchstørrelsen til modellen, dvs. Antall datainnmatinger etter hver iterasjon
- Mate dataene til tensorene
- Tren modellen
- Vis antall partier under treningen. Lagre modellen på disken.
Grunnideen bak TensorBoard er at et nevralt nettverk kan oppføre seg som en svart boks, og du trenger et verktøy for å inspisere hva som er inni den boksen. Tenk på TensorBoard som en lommelykt for å dykke ned i nettverket.
Det hjelper å forstå avhengighetene mellom operasjoner, hvordan vektene beregnes, viser tapsfunksjonen og mye annen nyttig informasjon. Når du samler all denne informasjonen, har du et flott verktøy for å feilsøke og finne ut hvordan du kan forbedre modellen.
For å gi deg en idé om hvor nyttig TensorBoard-grafen kan være, se på de to tapskurvene nedenfor:
Et nevralt nettverk bestemmer hvordan de forskjellige nevronene skal kobles sammen og hvor mange lag som trengs før modellen kan forutsi et utfall. Når arkitekturen er definert, trenger du ikke bare å trene modellen, men også en metrikk som måler nøyaktigheten til prediksjonen. Denne metrikken kalles en tapsfunksjon, og målet er å minimere den, noe som ganske enkelt betyr at modellen gjør færre feil.
Hver treningsalgoritme gjentar beregningen mange ganger til tapet når en flatere linje. Minimering av tapet krever også en læringshastighet, som er hastigheten modellen lærer med. Setter du læringshastigheten for høyt, har modellen aldri tid til å lære noe: det er diagrammet til venstre, der linjen beveger seg opp og ned fordi modellen i praksis gjetter. Diagrammet til høyre viser at tapet avtar over iterasjonene til kurven flater ut, noe som betyr at modellen har funnet en løsning.
TensorBoard er et flott verktøy for å visualisere slike målinger og fremheve potensielle problemer. Et nevralt nettverk kan ta timer eller uker før det finner en løsning, og TensorBoard oppdaterer målingene mens jobben fortsatt kjører. Du trenger derfor ikke å vente til slutten for å se om modellen trenes riktig: åpne TensorBoard, sjekk hvordan treningen går, og gjør de nødvendige endringene om nødvendig.
Hvordan bruke TensorBoard?
I denne delen lærer du hvordan du åpner TensorBoard fra terminalen på macOS og fra kommandolinjen på WindowsFokuset her er verktøyet snarere enn modellen, så treningskoden er bevisst holdt kort.
Først må du importere bibliotekene du skal bruke under opplæringen.
## Import the library import tensorflow as tf import numpy as np
Du oppretter dataene. Det er en matrise med 10 000 rader og 5 kolonner.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
Produksjon
(10000, 5)
Koden nedenfor transformerer dataene og oppretter modellen.
Merk at læringsraten er lik 0.1. Hvis du endrer denne raten til en høyere verdi, vil ikke modellen finne en løsning. Dette er hva som skjedde på venstre side av bildet ovenfor.
Eksemplet bruker en TensorFlow-estimator, API-et på høyt nivå som pakker inn de matematiske beregningene. Estimatorer tilhører TensorFlow 1.x API-et, så de to kodebitene nedenfor kjører under en 1.x-installasjon eller gjennom tf.compat.v1 navnerom.
For å opprette loggfilene må du angi banen. Dette gjøres med argumentet model_dir.
I TensorBoard-eksemplet nedenfor lagrer du modellen i arbeidskatalogen, dvs. der du lagrer notatboken eller Python fil. Inne i denne banen vil TensorFlow opprette en mappe kalt train med en undermappe kalt 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
)
)
Produksjon
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 siste trinnet i dette eksempelet på en TensorFlow-graf er å trene modellen. Under treningen skriver TensorFlow informasjon inn 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)
Produksjon
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 gjøres den samme jobben av Keras TensorBoard-tilbakekallet, som skriver grafen og metrikkene per epoke uten noen 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 kjøringen er ferdig, inneholder loggkatalogen en kontrollpunktsfil, en graph.pbtxt fil og en eller flere events.out.tfevents filer – akkurat det TensorBoard leser.
Til macOS Brukere
Finder-visningen nedenfor viser den nye train/linreg-mappen som ble opprettet i arbeidskatalogen.
Til Windows Brukere
On Windows De samme filene vises under banen du sendte til model_dir, som uthevet i adressefeltet.
Det samme hendelsesfilformatet produseres av PyTorch, så dashbordet er ikke begrenset til TensorFlow-kjøringer.
Nå som du har skrevet loggen, kan du åpne TensorBoard. TensorBoard betjener port 6006 som standard (Jupyter bruker port 8888). Bruk terminalen på macOS eller Anaconda-ledeteksten på Windows.
Til macOS Brukere
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Notatboken er lagret i banen /Brukere/Guru99/tuto_TF
Til Windows Brukere
cd C:\Users\Admin\Anaconda3 activate hello-tf
Notatboken er lagret i banen C:\Users\Admin\Anaconda3
For å starte TensorBoard, kjør følgende kommando fra den katalogen.
Til macOS Brukere
tensorboard --logdir=./train/linreg
Til Windows Brukere
tensorboard --logdir=.\train\linreg
TensorBoard serveres deretter på http://localhost:6006
| Flagg | Hva den kontrollerer |
|---|---|
--logdir |
Katalogen som inneholder hendelsesfilene. Dette er det eneste obligatoriske flagget. |
--port |
Port som skal serveres på. Standardverdien er 6006; endre den når en tidligere økt fortsatt har den porten. |
--bind_all |
Serveres på alle nettverksgrensesnitt. TensorBoard binder seg kun til localhost som standard, så ekstern tilgang trenger dette flagget, og det kan ikke kombineres med --host. |
--reload_interval |
Hvor ofte, i sekunder, loggkatalogen skannes på nytt for nye data. |
--logdir_spec |
Eldre alternativ som godtar flere kommaseparerte stier; --logdir støtter ikke lenger det skjemaet. |
Ocuco tensorboard dev Underkommandoen fungerer ikke lenger: den hostede TensorBoard.dev-tjenesten ble stengt 1. januar 2024. Lokal bruk påvirkes ikke.
På noen maskiner skriver konsollen ut vertsnavnet i stedet for localhost, som i Anaconda-ledeteksten nedenfor. Begge adressene åpner det samme dashbordet.
Kopier og lim inn adressen i din favorittnettleser. Du skal se Scalars-dashbordet nedenfor.
Hvis du ser noe slikt i stedet:
Det betyr at TensorBoard ikke finner loggfilen. Sørg for at du peker cd til riktig bane, eller dobbeltsjekk at logghendelsen faktisk ble opprettet. Hvis den ikke ble det, kjør treningskoden på nytt.
Hvis du vil lukke TensorBoard, trykker du CTRL+C i terminalvinduet.
Hattips: sjekk Anaconda-ledeteksten din for gjeldende arbeidsmappe.
I skjermbildet over ligger ledeteksten i C:\Users\Admin, så loggfilen bør opprettes under den mappen.










