Vodič za TensorBoard: Vizualizacija grafikona TensorFlow [Primjer]

Što je TensorBoard?

TensorBoard je sučelje koje se koristi za vizualizaciju grafikona i druge alate 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 u praćenju metrika kao što su gubitak i točnost, vizualizacija grafikona modela, ugrađivanje projekta u nižedimenzionalne prostore itd.

TensorFlow Graph Vizualizacija pomoću Tensorboard primjera

Slika u nastavku dolazi iz TensorBoard grafikona koji ćete generirati u ovom vodiču za TensorBoard. To je glavna ploča:

TensorFlow vizualizacija grafikona
TensorFlow vizualizacija grafikona

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.

TensorBoard grafovi

TensorBoard grafovi
  • Skalari: Pokažite različite korisne informacije tijekom obuke modela
  • Grafovi: Pokažite model
  • Histogram: Prikaz težine s histogramom
  • Distribucija: Prikaz raspodjele težine
  • Projektor: Prikaži analizu glavne komponente i T-SNE algoritam. Tehnika koja se koristi za smanjenje dimenzionalnosti

Tijekom ovog vodiča za TensorBoard trenirat ćete jednostavan model dubokog učenja. Naučit ćete kako to funkcionira u budućem vodiču.

Ako pogledate grafikon, možete shvatiti kako model radi.

  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.

TensorFlow Graph Vizualizacija pomoću Tensorboard primjera

Osnovna ideja koja stoji iza tensorboarda je da neuronska mreža može biti nešto što je poznato kao crna kutija i potreban nam je alat za pregled onoga što je unutar te kutije. Tensorboard možete zamisliti kao svjetiljku za početak ronjenja u neuronsku mrežu.

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 TensorBoard graf može biti koristan, pogledajte sliku ispod:

TensorBoard grafovi
TensorBoard graf

Neuronska mreža odlučuje kako povezati različite "neurone" i koliko slojeva prije nego što model može predvidjeti ishod. Nakon što ste definirali arhitekturu, ne samo da trebate uvježbati model, već i metriku za izračunavanje točnosti predviđanja. Ova metrika se naziva a funkcija gubitka. Cilj je minimizirati funkciju gubitka. Drugim riječima, to znači da model čini manje pogrešaka. Svi algoritmi strojnog učenja ponavljat će izračune mnogo puta dok gubitak ne dosegne nižu liniju. Da biste minimizirali ovu funkciju gubitka, trebate definirati a stopa učenja. To je brzina koju želite da model nauči. Ako postavite previsoku stopu učenja, model nema vremena ništa naučiti. Ovo je slučaj na lijevoj slici. Crta se pomiče gore-dolje, što znači da model čistom pretpostavkom predviđa ishod. Slika desno pokazuje da se gubitak smanjuje tijekom iteracije sve 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 proći sati do tjedana prije nego što pronađu rješenje. TensorBoard vrlo često ažurira metriku. U ovom slučaju ne morate čekati do kraja da biste vidjeli trenira li model ispravno. Možete otvoriti TensorBoard da provjerite kako se odvija obuka i napravite odgovarajuću promjenu ako je potrebno.

Kako koristiti TensorBoard?

U ovom vodiču naučit ćete kako otvoriti TensorBoard s terminala za MacOS i naredbenog retka TensorBoard za Windows.

Kod će biti objašnjen u budućem vodiču, ovdje je fokus na TensorBoardu.

Prvo morate uvesti biblioteke koje ćete koristiti tijekom obuke

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

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

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

Izlaz

(10000, 5)

Kodovi u nastavku transformiraju podatke i stvaraju model.

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

Tijekom većine TensorFlow vodiči, koristit ćete TensorFlow estimator. Ovo je TensorFlow API koji sadrži sve matematičke izračune.

Da biste stvorili datoteke dnevnika, trebate navesti stazu. To se radi pomoću argumenta model_dir.

U primjeru TensorBoarda u nastavku, pohranjujete model unutar radnog direktorija, tj. gdje pohranjujete bilježnicu ili python datoteku. Unutar ove staze, 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 grafa vizualizacije TensorFlow sastoji se od obuke modela. Tijekom obuke TensorFlow upisuje 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>

Za korisnika MacOS-a

TensorBoard vodič za korisnike MacOS-a

Za Windows korisnik

TensorBoard vodič za Windows korisnik

Ove informacije možete vidjeti uPyTorch TensorBoard.

Sada kada imate zapisane događaje u dnevniku, možete otvoriti Tensorboard. Tensorboard Keras radi na portu 6006 (Jupyter radi na portu 8888). Možete koristiti Terminal za MacOs korisnike ili Anaconda prompt za Windows korisnik.

Za korisnika MacOS-a

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

Bilježnica je pohranjena u stazi /Users/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, možete koristiti ovaj kod

Za korisnika MacOS-a

tensorboard --logdir=./train/linreg

Za Windows Korisnici

tensorboard --logdir=.\train\linreg

Tensorboard se nalazi na ovom URL-u: http://localhost:6006

Također se može nalaziti na sljedećoj lokaciji.

Koristite TensorBoard

Kopirajte i zalijepite URL u svoj omiljeni preglednik. Trebali biste vidjeti ovo:

Imajte na umu da ćemo naučiti kako čitati graf u uputama posvećenim duboko učenje.

Koristite TensorBoard

Ako vidite nešto poput ovoga:

Koristite TensorBoard

To znači da Tensorboard ne može pronaći log datoteku. Provjerite jeste li usmjerili cd na pravi put ili još jednom provjerite je li kreiran događaj dnevnika. Ako nije, ponovno pokrenite kôd.

Ako želite zatvoriti TensorBoard, pritisnite CTRL+C

Savjet za šešir: provjerite svoj anaconda prompt za trenutni radni direktorij,

Koristite TensorBoard

Dnevnik bi trebao biti kreiran na C:\Users\Admin

Rezime

TensorBoard je izvrstan alat za vizualizaciju vašeg modela. Osim toga, mnoge metrike se prikazuju tijekom treninga, kao što su gubitak, točnost ili težine.

Da biste aktivirali Tensorboard, morate postaviti putanju vaše datoteke:

cd /Users/Guru99/tuto_TF

Aktivirajte Tensorflow okruženje

activate hello-tf

Pokrenite Tensorboard

tensorboard --logdir=.+ PATH