Vodič za TensorBoard: Vizualizacija grafa TensorFlowa

⚡ Pametni sažetak

TensorBoard je vizualni prednji dio za TensorFlow treninge, crtanje krivulja gubitaka, grafova modela, histograma težina i ugrađivanja. Ovaj vodič zapisuje datoteke događaja s estimatorom, a zatim otvara nadzornu ploču na portu 6006.

  • 🔘 Pet nadzornih ploča: Skalari, grafovi, distribucije, histogrami i projektori očitavaju svaki drugu vrstu sažetka.
  • ☑️ Direktorij zapisnika: Argument model_dir određuje gdje TensorFlow zapisuje datoteke events.out.tfevents.
  • ✅ Naredba za pokretanje: Pokrenite tensorboard –logdir=PATH, a zatim otvorite http://localhost:6006 u bilo kojem pregledniku.
  • 🧪 Brzina učenja: Nazubljena krivulja gubitka signalizira stopu koja je previsoka da bi model konvergirao.
  • 🛠️ TensorFlow 2: Povratni poziv Keras TensorBoarda zamjenjuje zapisivanje estimatora prikazano u izvornom primjeru.
  • ⚠️ Rješavanje problema: Prazna nadzorna ploča gotovo uvijek znači da putanja direktorija zapisnika ne odgovara pokretanju obuke.

Vodič za TensorBoard: Vizualizacija grafa TensorFlowa

Što je TensorBoard?

TensorBoard je sučelje koje se koristi za vizualizaciju grafa i drugih alata za razumijevanje, otklanjanje pogrešaka i optimizaciju modela. To je alat koji pruža mjerenja i vizualizacije za tijek rada strojnog učenja. Pomaže track metrika kao što su gubitak i točnost, vizualizacija grafa modela i projiciranje ugrađivanja u prostore niže dimenzije.

TensorBoard se isporučuje s TensorFlow i radi kao mali lokalni web poslužitelj koji čita datoteke događaja koje zadatak obuke zapisuje na disk.

Vizualizacija grafa TensorFlow pomoću primjera TensorBoarda

Donja slika dolazi iz TensorBoard grafa koji ćete generirati u ovom tutorialu. To je glavna ploča:

Nadzorna ploča TensorBoard Scalars koja prikazuje krivulju prosječnog gubitka treniranog DNN regresora

Na donjoj slici možete vidjeti panel vizualizacije TensorBoard grafikona. Ploča sadrži različite kartice koje su povezane s razinom informacija koje dodajete kada pokrećete model.

Navigacijska traka TensorBoarda s karticama Skalari, Grafovi, Distribucije, Histogrami i Projektor

  • Skalari: Prikažite različite korisne informacije tijekom obuke modela
  • Grafikoni: Prikaži model
  • Histogram: Prikaz težina pomoću histograma
  • Distribucija: Prikaži raspodjelu težine
  • Projektor: Prikaži analizu glavnih komponenti i T-SNE algoritam. Tehnika korištena za smanjenje dimenzionalnosti

Tijekom ovog TensorBoard tutorijala, trenirat ćete jednostavan duboko učenje model, a graf koji on generira čita se odozdo prema gore.

Ako pogledate graf, možete razumjeti kako model funkcionira. Numerirane značke na snimci zaslona ispod označavaju ove četiri faze:

  1. Stavite podatke u red čekanja u model: gurnite količinu podataka jednaku veličini paketa u model, tj. broj feedova podataka nakon svake iteracije
  2. Ubacite podatke u Tenzore
  3. Uvježbajte model
  4. Prikažite broj serija tijekom treninga. Spremite model na disk.

Graf TensorFlowa u TensorBoardu s numeriranim čvorovima za ulazni red, dnn blok i operaciju spremanja

Osnovna ideja TensorBoarda je da se neuronska mreža može ponašati poput crne kutije, a potreban vam je alat za pregled onoga što se nalazi unutar te kutije. Zamislite TensorBoard kao svjetiljku za istraživanje mreže.

Pomaže u razumijevanju ovisnosti između operacija, kako se izračunavaju težine, prikazuje funkciju gubitka i mnoge druge korisne informacije. Kada objedinite sve ove informacije, imate sjajan alat za otklanjanje pogrešaka i pronalaženje načina poboljšanja modela.

Da biste dobili ideju o tome koliko koristan može biti graf TensorBoarda, pogledajte dvije krivulje gubitaka u nastavku:

Dvije TensorBoard krivulje gubitaka jedna pored druge koje uspoređuju model koji ne uči s modelom koji konvergira

Neuronska mreža odlučuje kako povezati različite neurone i koliko je slojeva potrebno prije nego što model može predvidjeti ishod. Nakon što je arhitektura definirana, ne samo da je potrebno trenirati model, već i metriku koja mjeri točnost predviđanja. Ta se metrika naziva funkcija gubitka, a cilj je minimizirati je, što jednostavno znači da model čini manje pogrešaka.

Svaki algoritam za treniranje ponavlja izračun mnogo puta dok gubitak ne dosegne ravniju liniju. Minimiziranje gubitka također zahtijeva stopu učenja, što je brzina kojom model uči. Postavite previsoku stopu učenja i model nikada neće imati vremena ništa naučiti: to je lijevi grafikon, gdje se linija pomiče gore-dolje jer model učinkovito nagađa. Grafikon s desne strane prikazuje smanjenje gubitka tijekom iteracija dok se krivulja ne izravna, što znači da je model pronašao rješenje.

TensorBoard je izvrstan alat za vizualizaciju takvih metrika i isticanje potencijalnih problema. Neuronskoj mreži mogu trebati sati ili tjedni prije nego što pronađe rješenje, a TensorBoard osvježava metrike dok se posao još izvršava. Stoga ne morate čekati do kraja da biste vidjeli je li model ispravno obučen: otvorite TensorBoard, provjerite kako napreduje obuka i po potrebi napravite odgovarajuće promjene.

Kako koristiti TensorBoard?

U ovom odjeljku naučit ćete kako otvoriti TensorBoard iz terminala na macOS i iz komandne linije nadalje WindowsFokus je ovdje na alatu, a ne na modelu, pa je kod za učenje namjerno kratak.

Prvo, morate uvesti biblioteke koje ćete koristiti tijekom obuke.

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

Vi kreirate podatke. To je niz od 10000 redaka i 5 stupaca.

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

Izlaz

(10000, 5)

Donji kod transformira podatke i stvara model.

Imajte na umu da je stopa učenja jednaka 0.1. Ako promijenite ovu stopu na višu vrijednost, model neće pronaći rješenje. To se dogodilo na lijevoj strani gornje slike.

Primjer koristi TensorFlow estimator, API visoke razine koji obuhvaća matematičke izračune. Estimatori pripadaju TensorFlow 1.x API-ju, pa se dva isječka u nastavku izvode pod instalacijom 1.x ili putem tf.compat.v1 prostor imena.

Za izradu datoteka zapisnika potrebno je odrediti putanju. To se postiže argumentom model_dir.

U donjem primjeru TensorBoarda, model pohranjujete unutar radnog direktorija, tj. tamo gdje pohranjujete bilježnicu ili Python datoteka. Unutar ove putanje, TensorFlow će stvoriti mapu pod nazivom train s podređenom mapom pod nazivom 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    
      )
)

Izlaz

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {&#x27;_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}

Posljednji korak ovog primjera vizualizacije grafa TensorFlow sastoji se od treniranja modela. Tijekom treniranja, TensorFlow zapisuje informacije u direktorij modela.

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

Izlaz

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>

Na TensorFlowu 2 isti posao obavlja povratni poziv Keras TensorBoarda, koji zapisuje graf i metrike po epohi bez ikakvog estimatorskog koda:

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

Nakon što se izvođenje završi, direktorij zapisnika sadrži datoteku kontrolne točke, graph.pbtxt datoteka i jedna ili više events.out.tfevents datoteke — točno ono što TensorBoard čita.

Za macOS Korisnici

Donji prikaz Findera prikazuje novu mapu train/linreg stvorenu unutar radnog direktorija.

macOS popis datoteka koji prikazuje mape zapisnika vlaka i linrega s datotekama kontrolnih točaka, događaja i graph.pbtxt

Za Windows Korisnici

On Windows Iste datoteke pojavljuju se pod putanjom koju ste proslijedili model_dir, kao što je istaknuto u adresnoj traci.

Windows Prikaz Explorera mape linreg vlaka koja sadrži datoteke događaja i kontrolnih točaka TensorFlowa

Isti format datoteke događaja proizvodi PyTorch, tako da nadzorna ploča nije ograničena na TensorFlow izvršavanja.

Sada kada ste zapisali događaje u dnevniku, možete otvoriti TensorBoard. TensorBoard prema zadanim postavkama poslužuje na portu 6006 (Jupyter koristi port 8888). Koristite terminal na macOS ili Anaconda upit na Windows.

Za macOS Korisnici

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

Bilježnica je pohranjena u putanji /Korisnici/Guru99/tuto_TF

Za Windows Korisnici

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

Bilježnica je pohranjena na putu C:\Users\Admin\Anaconda3

Za pokretanje TensorBoarda, pokrenite sljedeću naredbu iz tog direktorija.

Za macOS Korisnici

tensorboard --logdir=./train/linreg

Za Windows Korisnici

tensorboard --logdir=.\train\linreg

TensorBoard se zatim poslužuje na http://localhost:6006

Zastava Što kontrolira
--logdir Direktorij koji sadrži datoteke događaja. Ovo je jedina obavezna zastavica.
--port Port za posluživanje. Zadana vrijednost je 6006; promijenite je ako ranija sesija još uvijek ima taj port.
--bind_all Poslužuje se na svakom mrežnom sučelju. TensorBoard se prema zadanim postavkama veže samo na localhost, tako da udaljeni pristup treba ovu zastavicu i ne može se kombinirati s --host.
--reload_interval Koliko često se, u sekundama, direktorij zapisnika ponovno skenira u potrazi za novim podacima.
--logdir_spec Naslijeđeni rezervni način prihvaća nekoliko putova odvojenih zarezima; --logdir više ne podržava taj obrazac.

The tensorboard dev Podnaredba više ne radi: hostirana usluga TensorBoard.dev ugašena je 1. siječnja 2024. Lokalna upotreba nije pogođena.

Na nekim računalima konzola ispisuje naziv hosta umjesto localhost-a, kao u Anaconda promptu ispod. Obje adrese otvaraju istu nadzornu ploču.

Anaconda prompt pokreće naredbu tensorboard i ispisuje adresu poslužitelja na portu 6006

Kopirajte i zalijepite adresu u svoj omiljeni preglednik. Trebali biste vidjeti Scalars nadzornu ploču prikazanu dolje.

Nadzorna ploča TensorBoard Scalars otvorena u pregledniku nakon što se direktorij zapisnika ispravno učita

Ako umjesto toga vidite nešto ovako:

Stranica s pogreškom TensorBoarda - čitanje. Nisu pronađene datoteke s definicijom grafa.

To znači da TensorBoard ne može pronaći datoteku zapisnika. Obavezno pokažite cd na ispravan put ili dvaput provjerite je li događaj zapisnika doista kreiran. Ako nije, ponovno pokrenite kod za obuku.

Ako želite zatvoriti TensorBoard, pritisnite CTRL+C u prozoru terminala.

Savjet: provjerite svoj Anaconda prompt za trenutni radni direktorij.

Anaconda prompt prikazuje aktivno hello-tf okruženje i trenutni radni direktorij

Na gornjoj snimci zaslona upit se nalazi u C:\Users\Admin, pa bi datoteka zapisnika trebala biti kreirana u toj mapi.

Pitanja i odgovori

Završeno izvršavanje ostavlja indeks kontrolnih točaka, jednu ili više datoteka model.ckpt, datoteku graph.pbtxt i barem jednu datoteku events.out.tfevents. TensorBoard čita samo datoteke događaja; kontrolne točke postoje tako da se učenje može nastaviti od mjesta gdje je zaustavljeno.

Da. PyTorch šalje sažetakWriter koji emitira isti format datoteke događaja, pa identična naredba tensorboard –logdir renderira nadzornu ploču. Ništa se na poslužitelju ne mijenja - samo biblioteka koja generira sažetke.

Ne. Hostirana usluga zatvorena je 1. siječnja 2024. i podnaredba tensorboard dev sada vraća grešku. Podijelite rezultate pokretanjem TensorBoarda unutar bilježnice kao što je Google Colab ili izvozom grafikona kao CSV ili JSON.

Svakom prolazu dajte vlastitu podmapu pod zajedničkim roditeljem, a zatim usmjerite –logdir na roditelja. Svaka podmapa se pojavljuje kao zaseban prolaz u lijevoj ploči, a krivulje su nacrtane na istim osima sa svakom potvrdom.

Grafikon na op-razini je zadani prikaz i prikazuje kako TensorFlow razumije program, nacrtan odozdo prema gore. Odabirom oznake keras prebacuje se na konceptualni graf koji prikazuje samo slojeve modela i lakše ga je provjeriti u odnosu na vaš dizajn.

Automatizirana mjerenja proizvode desetke prolaza odjednom, tako da nadzorna ploča postaje alat za usporedbu, a ne monitor pojedinačnog prolaza. Dodatak HParams bilježi svaku konfiguraciju zajedno s njezinim metrikama, omogućujući vam sortiranje pokušaja umjesto čitanja krivulja jednu po jednu.

GitHub kopilot brzo izrađuje povratni poziv i predložak za pisanje sažetaka. Tretira izlaz kao nacrt: često miješa TensorFlow 1.x i 2.x API-je, stoga provjerite svako ime u odnosu na trenutnu dokumentaciju prije pokretanja koda.

Ili nije zapisana datoteka događaja ili put proslijeđen –logdir-u ne odgovara onome koji je koristio zadatak obuke. Potvrdite da datoteka events.out.tfevents postoji u toj mapi i na Windows Pokrenite TensorBoard s istog slova pogona.

Sažmite ovu objavu uz: