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.
Š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:
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.
- 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:
- Stavite podatke u red čekanja u model: gurnite količinu podataka jednaku veličini paketa u model, tj. broj feedova podataka nakon svake iteracije
- Ubacite podatke u Tenzore
- Uvježbajte model
- Prikažite broj serija tijekom treninga. Spremite model na disk.
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:
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: {'_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.
Za Windows Korisnici
On Windows Iste datoteke pojavljuju se pod putanjom koju ste proslijedili model_dir, kao što je istaknuto u adresnoj traci.
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.
Kopirajte i zalijepite adresu u svoj omiljeni preglednik. Trebali biste vidjeti Scalars nadzornu ploču prikazanu dolje.
Ako umjesto toga vidite nešto ovako:
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.
Na gornjoj snimci zaslona upit se nalazi u C:\Users\Admin, pa bi datoteka zapisnika trebala biti kreirana u toj mapi.










