Tutorial TensorBoard: Vizualizarea graficului TensorFlow
โก Rezumat inteligent
TensorBoard este interfaศa vizualฤ pentru rulฤrile de antrenament TensorFlow, trasรขnd curbe de pierdere, grafice de model, histograme de ponderare ศi รฎncorporฤri. Aceastฤ demonstraศie scrie fiศiere de evenimente cu un estimator, apoi deschide tabloul de bord pe portul 6006.
Ce este TensorBoard?
TensorBoard este interfaศa utilizatฤ pentru vizualizarea graficului ศi alte instrumente pentru รฎnศelegerea, depanarea ศi optimizarea modelului. Este un instrument care oferฤ mฤsurฤtori ศi vizualizฤri pentru un flux de lucru de รฎnvฤศare automatฤ. Ajutฤ... track metrici, cum ar fi pierderea ศi precizia, vizualizarea graficului modelului ศi proiectarea รฎncorporฤrilor รฎn spaศii de dimensiuni inferioare.
TensorBoard este livrat cu TensorFlow ศi ruleazฤ ca un mic server web local care citeศte fiศierele de evenimente pe care un job de antrenament le scrie pe disc.
Exemplu de vizualizare a grafurilor TensorFlow folosind TensorBoard
Imaginea de mai jos provine din graficul TensorBoard pe care รฎl veศi genera รฎn acest tutorial. Este panoul principal:
Din imaginea de mai jos, puteศi vedea panoul de vizualizare graficฤ TensorBoard. Panoul conศine diferite file, care sunt legate de nivelul de informaศii pe care รฎl adฤugaศi atunci cรขnd rulaศi modelul.
- Scalari: Afiศaศi diferite informaศii utile รฎn timpul antrenamentului modelului
- Grafice: Afiศaศi modelul
- Histogramฤ: Afiศaศi ponderile cu o histogramฤ
- Distribuศie: Afiศaศi distribuศia greutฤศii
- Proiector: Afiศaศi analiza componentelor principale ศi algoritmul T-SNE. Tehnica utilizatฤ pentru reducerea dimensionalitฤศii
รn timpul acestui tutorial TensorBoard, veศi antrena un simplu รฎnvฤศare profundฤ model, iar graficul pe care รฎl produce este citit de jos รฎn sus.
Dacฤ te uiศi la grafic, poศi รฎnศelege cum funcศioneazฤ modelul. Insignele numerotate din captura de ecran de mai jos marcheazฤ aceste patru etape:
- Puneศi รฎn coadฤ datele รฎn model: trimiteศi o cantitate de date egalฤ cu dimensiunea lotului cฤtre model, adicฤ numฤrul de flux de date dupฤ fiecare iteraศie
- Transmite datele Tensorilor
- Antreneazฤ modelul
- Afiศaศi numฤrul de loturi รฎn timpul antrenamentului. Salvaศi modelul pe disc.
Ideea de bazฤ din spatele TensorBoard este cฤ o reศea neuronalฤ se poate comporta ca o cutie neagrฤ ศi ai nevoie de un instrument pentru a inspecta ce se aflฤ รฎn interiorul acelei cutii. Gรขndeศte-te la TensorBoard ca la o lanternฤ pentru a te cufunda รฎn reศea.
Ajutฤ la รฎnศelegerea dependenศelor dintre operaศiuni, modul รฎn care sunt calculate greutฤศile, afiศeazฤ funcศia de pierdere ศi multe alte informaศii utile. Cรขnd aduceศi toate aceste informaศii รฎmpreunฤ, aveศi un instrument grozav pentru a depana ศi a gฤsi cum sฤ รฎmbunฤtฤศiศi modelul.
Pentru a vฤ face o idee despre cรขt de util poate fi graficul TensorBoard, uitaศi-vฤ la cele douฤ curbe de pierdere de mai jos:
O reศea neuronalฤ decide cum sฤ conecteze diferiศii neuroni ศi cรขte straturi sunt necesare รฎnainte ca modelul sฤ poatฤ prezice un rezultat. Odatฤ ce arhitectura este definitฤ, nu trebuie doar sฤ antrenaศi modelul, ci ศi o metricฤ care mฤsoarฤ acurateศea predicศiei. Aceastฤ metricฤ se numeศte funcศie de pierdere, iar obiectivul este de a o minimiza, ceea ce รฎnseamnฤ pur ศi simplu cฤ modelul face mai puศine erori.
Fiecare algoritm de antrenament repetฤ calculul de mai multe ori pรขnฤ cรขnd pierderea atinge o linie mai platฤ. Minimizarea pierderii necesitฤ ศi o ratฤ de รฎnvฤศare, care este viteza cu care modelul รฎnvaศฤ. Dacฤ se seteazฤ rata de รฎnvฤศare la o valoare prea mare, modelul nu va avea niciodatฤ timp sฤ รฎnveศe nimic: acesta este graficul din stรขnga, unde linia se miศcฤ รฎn sus ศi รฎn jos, deoarece modelul practic ghiceศte. Graficul din dreapta aratฤ cum pierderea scade de-a lungul iteraศiilor pรขnฤ cรขnd curba se aplatizeazฤ, ceea ce รฎnseamnฤ cฤ modelul a gฤsit o soluศie.
TensorBoard este un instrument excelent pentru vizualizarea unor astfel de metrici ศi evidenศierea potenศialelor probleme. O reศea neuronalฤ poate dura ore sau sฤptฤmรขni รฎnainte de a gฤsi o soluศie, iar TensorBoard reรฎmprospฤteazฤ metricile รฎn timp ce jobul este รฎncฤ รฎn execuศie. Prin urmare, nu trebuie sฤ aศteptaศi pรขnฤ la sfรขrศit pentru a vedea dacฤ modelul se antreneazฤ corect: deschideศi TensorBoard, verificaศi cum decurge antrenamentul ศi faceศi modificฤrile corespunzฤtoare, dacฤ este necesar.
Cum se foloseศte TensorBoard?
รn aceastฤ secศiune, veศi รฎnvฤศa cum sฤ deschideศi TensorBoard din terminal pe macOS ศi din linia de comandฤ WindowsAccentul aici este pus pe instrument ศi nu pe model, aศa cฤ codul de antrenament este menศinut รฎn mod deliberat scurt.
Mai รฎntรขi, trebuie sฤ importaศi bibliotecile pe care le veศi utiliza รฎn timpul antrenamentului.
## Import the library import tensorflow as tf import numpy as np
Tu creezi datele. Este o matrice de 10000 de rรขnduri ศi 5 coloane.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
producศie
(10000, 5)
Codul de mai jos transformฤ datele ศi creeazฤ modelul.
Reศineศi cฤ rata de รฎnvฤศare este egalฤ cu 0.1. Dacฤ modificaศi aceastฤ ratฤ la o valoare mai mare, modelul nu va gฤsi o soluศie. Acest lucru s-a รฎntรขmplat รฎn partea stรขngฤ a imaginii de mai sus.
Exemplul foloseศte un estimator TensorFlow, API-ul de nivel รฎnalt care รฎncorporeazฤ calculele matematice. Estimatorii aparศin API-ului TensorFlow 1.x, aศadar cele douฤ fragmente de mai jos ruleazฤ sub o instalare 1.x sau prin intermediul tf.compat.v1 spaศiu de nume.
Pentru a crea fiศierele jurnal, trebuie sฤ specificaศi calea. Acest lucru se face cu argumentul model_dir.
รn exemplul TensorBoard de mai jos, stocaศi modelul รฎn directorul de lucru, adicฤ unde stocaศi blocnotesul sau Python fiศier. รn interiorul acestei cฤi, TensorFlow va crea un folder numit train cu un folder copil numit 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
)
)
producศie
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}
Ultimul pas al acestui exemplu de vizualizare graficฤ TensorFlow constฤ รฎn antrenarea modelului. รn timpul antrenamentului, TensorFlow scrie informaศii รฎn directorul modelului.
# 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)
producศie
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>
Pe TensorFlow 2, aceeaศi sarcinฤ este รฎndeplinitฤ de apelul invers Keras TensorBoard, care scrie graficul ศi metricile per epocฤ fฤrฤ niciun cod de estimare:
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])
Odatฤ ce rularea se terminฤ, directorul jurnal conศine un fiศier punct de control, un graph.pbtxt fiศier ศi unul sau mai multe events.out.tfevents fiศiere โ exact ceea ce citeศte TensorBoard.
Pentru macOS utilizatorii
Vizualizarea Finder de mai jos aratฤ noul folder train/linreg creat รฎn directorul de lucru.
Pentru Windows utilizatorii
On Windows Aceleaศi fiศiere apar sub calea pe care aศi trecut-o cฤtre model_dir, aศa cum este evidenศiat รฎn bara de adrese.
Acelaศi format de fiศier eveniment este produs de PyTorch, deci tabloul de bord nu este limitat la rularea TensorFlow.
Acum cฤ aศi scris evenimentele din jurnal, puteศi deschide TensorBoard. TensorBoard funcศioneazฤ implicit pe portul 6006 (Jupyter foloseศte portul 8888). Foloseศte Terminalul pe macOS sau promptul Anaconda de pe Windows.
Pentru macOS utilizatorii
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Blocnotesul este stocat รฎn calea /Utilizatori/Guru99/tuto_TF
Pentru Windows utilizatorii
cd C:\Users\Admin\Anaconda3 activate hello-tf
Notebook-ul este stocat รฎn calea C:\Users\Admin\Anaconda3
Pentru a lansa TensorBoard, executaศi urmฤtoarea comandฤ din directorul respectiv.
Pentru macOS utilizatorii
tensorboard --logdir=./train/linreg
Pentru Windows utilizatorii
tensorboard --logdir=.\train\linreg
TensorBoard este apoi servit la http://localhost:6006
| Pavilion | Ceea ce controleazฤ |
|---|---|
--logdir |
Directorul care conศine fiศierele evenimentului. Acesta este singurul indicator necesar. |
--port |
Port pe care se va deservi. Implicit este 6006; modificaศi-l cรขnd o sesiune anterioarฤ รฎncฤ deศine acel port. |
--bind_all |
Servi pe fiecare interfaศฤ de reศea. TensorBoard se leagฤ la localhost doar รฎn mod implicit, deci accesul la distanศฤ necesitฤ acest flag ศi nu poate fi combinat cu --host. |
--reload_interval |
Cรขt de des, รฎn secunde, este rescanat directorul de jurnal pentru date noi. |
--logdir_spec |
Soluศie alternativฤ moศtenitฤ care acceptฤ mai multe cฤi separate prin virgulฤ; --logdir nu mai suportฤ acel formular. |
tensorboard dev Subcomanda nu mai funcศioneazฤ: serviciul gฤzduit TensorBoard.dev s-a รฎnchis pe 1 ianuarie 2024. Utilizarea localฤ nu este afectatฤ.
Pe unele maศini, consola afiศeazฤ numele gazdei รฎn loc de localhost, ca รฎn promptul Anaconda de mai jos. Ambele adrese deschid acelaศi tablou de bord.
Copiaศi ศi lipiศi adresa รฎn browserul dvs. preferat. Ar trebui sฤ vedeศi tabloul de bord Scalars afiศat mai jos.
Dacฤ vedeศi รฎn schimb ceva de genul acesta:
รnseamnฤ cฤ TensorBoard nu poate gฤsi fiศierul jurnal. Asiguraศi-vฤ cฤ indicaศi cd pe calea corectฤ sau verificaศi de douฤ ori dacฤ evenimentul din jurnal a fost creat efectiv. Dacฤ nu a fost creat, rulaศi din nou codul de antrenament.
Dacฤ vrei sฤ รฎnchizi TensorBoard, apasฤ CTRL+C รฎn fereastra terminalului.
Sfat: verificaศi promptul Anaconda pentru directorul de lucru curent.
รn captura de ecran de mai sus, promptul se aflฤ รฎn C:\Users\Admin, deci fiศierul jurnal ar trebui creat รฎn acel folder.










