TensorBoardi õpetus: TensorFlow graafiku visualiseerimine

⚡ Nutikas kokkuvõte

TensorBoard on TensorFlow treeningtsüklite visuaalne esiots, mis joonistab kahjumikõveraid, mudeli graafikuid, kaaluhistogramme ja manuseid. See läbivaatusjuhend kirjutab sündmuste failid hindajaga ja avab seejärel armatuurlaua pordil 6006.

  • 🔘 Viis juhtpaneeli: Skalaarid, graafikud, jaotused, histogrammid ja projektor loevad igaüks erinevat tüüpi kokkuvõtet.
  • ☑️ Logikataloog: Argument model_dir otsustab, kuhu TensorFlow kirjutab failid events.out.tfevents.
  • ✅ Käivituskäsk: Käivita tensorboard –logdir=PATH ja ava seejärel suvalises brauseris http://localhost:6006.
  • 🧪 Õppimiskiirus: Sakiline kaotuskõver annab märku liiga kõrgest määrast, et mudel saaks koonduda.
  • 🛠️ TensorFlow 2: Keras TensorBoardi tagasihelistamine asendab algses näites näidatud hinnangu logimise.
  • ⚠️ Probleemid: Tühi armatuurlaud tähendab peaaegu alati, et logikataloogi tee ei vasta treeningkäivituse teele.

TensorBoardi õpetus: TensorFlow graafiku visualiseerimine

Mis on TensorBoard?

TensorBoard on liides, mida kasutatakse graafiku visualiseerimiseks ja muude tööriistade abil mudeli mõistmiseks, silumiseks ja optimeerimiseks. See on tööriist, mis pakub masinõppe töövoo mõõtmisi ja visualiseeringuid. See aitab track mõõdikuid, näiteks kadu ja täpsus, visualiseerige mudeli graafikut ja projitseerige manuseid madalama dimensiooniga ruumidesse.

TensorBoard on varustatud TensorFlow ja töötab väikese kohaliku veebiserverina, mis loeb sündmuste faile, mida treeningtöö kettale kirjutab.

TensorFlow graafiku visualiseerimine TensorBoardi abil

Allolev pilt pärineb TensorBoardi graafikult, mille te selles õpetuses genereerite. See on peamine paneel:

TensorBoard Scalarsi armatuurlaud, mis näitab treenitud DNN-regressori keskmise kaotuse kõverat

Alloleval pildil näete TensorBoardi graafiku visualiseerimise paneeli. Paneel sisaldab erinevaid vahekaarte, mis on lingitud mudeli käitamisel lisatava teabe tasemega.

TensorBoardi navigeerimisriba skalaaride, graafikute, jaotuste, histogrammide ja projektori vahekaartidega

  • Skalaarid: Näidake mudeli treenimise ajal erinevat kasulikku teavet
  • Graafikud: Näita mudelit
  • Histogramm: Kaalude kuvamine histogrammiga
  • jaotus: Kuva kaalu jaotus
  • Projektor: Näidake peakomponentide analüüsi ja T-SNE algoritmi. Mõõtmelisuse vähendamiseks kasutatav tehnika.

Selle TensorBoardi õpetuse käigus treenite lihtsat sügav õpe mudel ja selle loodud graafikut loetakse alt üles.

Kui vaatate graafikut, saate aru, kuidas mudel töötab. Alloleval ekraanipildil olevad nummerdatud märgid tähistavad neid nelja etappi:

  1. Andmete järjekorda seadmine mudelisse: sisestage mudelisse partii suurusega võrdne andmehulk, st andmevoo arv pärast iga iteratsiooni
  2. Andmete edastamine tensoritele
  3. Treeni modelli
  4. Näidake koolituse ajal partiide arvu. Salvestage mudel kettale.

TensorFlow graafik TensorBoardis nummerdatud sõlmedega sisendjärjekorra, dnn-ploki ja salvestusoperatsiooni jaoks

TensorBoardi põhiidee on see, et närvivõrk võib käituda nagu must kast ja selle kasti sisu kontrollimiseks on vaja tööriista. Mõelge TensorBoardist kui taskulambist võrku sukeldumiseks.

See aitab mõista tehtevahelisi sõltuvusi, kaalude arvutamist, kuvab kadufunktsiooni ja palju muud kasulikku teavet. Kui koondate kõik need andmed kokku, on teil suurepärane tööriist silumiseks ja mudeli täiustamiseks.

TensorBoardi graafiku kasulikkusest aimu saamiseks vaadake allolevaid kahte kaotuskõverat:

Kaks TensorBoardi kadumiskõverat kõrvuti, mis võrdlevad mitteõppivat mudelit koonduva mudeliga

Neuraalvõrk otsustab, kuidas erinevaid neuroneid ühendada ja mitu kihti on vaja, enne kui mudel saab tulemust ennustada. Kui arhitektuur on defineeritud, tuleb lisaks mudeli treenimisele luua ka mõõdik, mis mõõdab ennustuse täpsust. Seda mõõdikut nimetatakse kadufunktsiooniks ja eesmärk on seda minimeerida, mis tähendab lihtsalt seda, et mudel teeb vähem vigu.

Iga treeningalgoritm kordab arvutust mitu korda, kuni kaotus jõuab lamedama jooneni. Kao minimeerimiseks on vaja ka õppimiskiirust, mis on kiirus, millega mudel õpib. Kui õppimiskiirus on liiga kõrge, pole mudelil kunagi aega midagi õppida: see on vasakpoolne diagramm, kus joon liigub üles ja alla, kuna mudel sisuliselt pakub. Parempoolne diagramm näitab, kuidas kaotus väheneb iteratsioonide jooksul, kuni kõver lameneb, mis tähendab, et mudel on leidnud lahenduse.

TensorBoard on suurepärane tööriist selliste mõõdikute visualiseerimiseks ja võimalike probleemide esiletõstmiseks. Neuraalvõrgul võib lahenduse leidmiseks kuluda tunde või nädalaid ning TensorBoard värskendab mõõdikuid töö töötamise ajal. Seega ei pea mudeli korrektse treenimise kontrollimiseks ootama lõpuni: avage TensorBoard, kontrollige, kuidas treenimine edeneb, ja tehke vajadusel vastavad muudatused.

Kuidas TensorBoardi kasutada?

Selles jaotises saate teada, kuidas avada TensorBoardi terminalist macOS ja käsurealt edasi WindowsSiin on fookuses pigem tööriist kui mudel, seega on treeningkood tahtlikult lühike.

Esmalt peate importima teegid, mida koolituse ajal kasutate.

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

Sa lood andmed. See on 10 000 rea ja 5 veeruga massiiv.

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

Väljund

(10000, 5)

Allolev kood teisendab andmed ja loob mudeli.

Pane tähele, et õppimiskiirus on võrdne 0.1-ga. Kui muudad selle kiiruse kõrgemaks, siis mudel lahendust ei leia. See juhtus ülaltoodud pildi vasakul küljel.

Näites kasutatakse TensorFlow hindajat, mis on kõrgetasemeline API, mis hõlmab matemaatilisi arvutusi. Hinnangud kuuluvad TensorFlow 1.x API-sse, seega kaks allolevat koodijuppi töötavad 1.x installi all või läbi tf.compat.v1 nimeruumi.

Logifailide loomiseks peate määrama tee. Seda tehakse argumendiga model_dir.

Allolevas TensorBoardi näites salvestate mudeli töökataloogi, st sinna, kuhu salvestate märkmiku või Python fail. Selle tee sisse loob TensorFlow kausta nimega train, millel on alamkaust nimega 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    
      )
)

Väljund

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}

Selle TensorFlow visualiseerimisgraafi näite viimane samm on mudeli treenimine. Treeningu käigus kirjutab TensorFlow teabe mudeli kataloogi.

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

Väljund

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>

TensorFlow 2-s teeb sama töö ära Keras TensorBoardi tagasihelistusfunktsioon, mis kirjutab graafiku ja epohhipõhised mõõdikud ilma igasuguse hindajakoodita:

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

Kui käivitamine on lõppenud, asub logikataloog kontrollpunktifail. graph.pbtxt fail ja üks või mitu events.out.tfevents failid – täpselt see, mida TensorBoard loeb.

eest macOS Kasutajad

Allolev Finderi vaade näitab töökataloogi loodud uut train/linreg kausta.

macOS failide loend, mis näitab rongi ja liiniregistri logikaustu koos kontrollpunkti, sündmuste ja graph.pbtxt failidega

eest Windows Kasutajad

On Windows Samad failid ilmuvad model_dir-ile edastatud teekonna alla, nagu aadressiribal esile tõstetud.

Windows Rongi liiniregistri kausta Exploreri vaade, mis sisaldab TensorFlow sündmuste ja kontrollpunktide faile

Sama sündmusfaili vormingut loob ka PyTorch, seega ei piirdu armatuurlaud ainult TensorFlow' jooksudega.

Nüüd, kui logisündmused on kirja pandud, saate avada TensorBoardi. TensorBoard teenindab vaikimisi porti 6006 (Jupyter kasutab porti 8888). Kasutage terminali macOS või Anaconda viip sisse lülitatud Windows.

eest macOS Kasutajad

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

Märkmik on salvestatud teele /Kasutajad/Guru99/tuto_TF

eest Windows Kasutajad

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

Märkmik salvestatakse teele C:\Users\Admin\Anaconda3

TensorBoardi käivitamiseks käivitage sellest kataloogist järgmine käsk.

eest macOS Kasutajad

tensorboard --logdir=./train/linreg

eest Windows Kasutajad

tensorboard --logdir=.\train\linreg

Seejärel pakutakse TensorBoardi aadressil http://localhost:6006

Lipp Mida see kontrollib
--logdir Sündmuste faile hoidev kataloog. See on ainus nõutav märge.
--port Teenindusport. Vaikimisi on see 6006; muutke seda, kui varasem seanss seda porti veel kasutab.
--bind_all Serveeri igal võrguliidesel. TensorBoard seondub vaikimisi ainult localhostiga, seega vajab kaugjuurdepääs seda lippu ja seda ei saa kombineerida --host.
--reload_interval Kui tihti (sekundites) logikataloogi uute andmete suhtes uuesti skannitakse.
--logdir_spec Pärandvarundus, mis aktsepteerib mitut komadega eraldatud teed; --logdir ei toeta seda vormi enam.

. tensorboard dev Alamkäsk ei tööta enam: hostitud TensorBoard.dev teenus suleti 1. jaanuaril 2024. Kohalikku kasutamist see ei mõjuta.

Mõnes masinas kuvab konsool hostinime localhosti asemel, nagu allpool näidatud Anaconda käsuviibas. Mõlemad aadressid avavad sama armatuurlaua.

Anaconda viiba käivitab tensorboard käsu ja kuvab serveri aadressi pordil 6006

Kopeeri aadress ja kleebi see oma lemmikbrauserisse. Sa peaksid nägema allpool olevat skalaaride armatuurlauda.

TensorBoard Scalarsi armatuurlaud avaneb brauseris pärast logikataloogi õiget laadimist

Kui näete hoopis midagi sellist:

TensorBoardi vealehe lugemisel Graafi definitsioonifaile ei leitud

See tähendab, et TensorBoard ei leia logifaili. Veenduge, et osutaksite cd õigele teele või kontrollige üle, kas logisündmus loodi. Kui ei, siis käivitage treeningkood uuesti.

TensorBoardi sulgemiseks vajutage terminaliaknas CTRL+C.

Mütsi nipp: kontrolli oma Anaconda käsurealt praegust töökataloogi.

Anaconda viiba, mis näitab aktiivset hello-tf keskkonda ja praegust töökataloogi

Ülaltoodud ekraanipildil asub viip kaustas C:\Users\Admin, seega peaks logifail olema loodud sellesse kausta.

KKK

Lõpetatud käivitamine jätab kontrollpunktide indeksi, ühe või mitu model.ckpt-faili, graph.pbtxt-faili ja vähemalt ühe events.out.tfevents-faili. TensorBoard loeb ainult sündmustefaile; kontrollpunktid on olemas, et treenimist saaks jätkata sealt, kus see pooleli jäi.

Jah. PyTorch saadab kokkuvõtteWriter mis väljastab sama sündmusfaili vormingut, seega renderdab armatuurlaua identne tensorboard –logdir käsk. Serveri osas ei muutu midagi – muutub ainult kokkuvõtteid genereeriv teek.

Ei. Majutatud teenus suleti 1. jaanuaril 2024 ja tensorboard dev alamkäsk tagastab nüüd vea. Tulemuste jagamiseks käivitage TensorBoard märkmikus, näiteks Google Colabis või eksportides diagramme CSV- või JSON-vormingus.

Andke igale jooksule jagatud ülemkausta all oma alamkaust ja seejärel osutage –logdir ülemkaustale. Iga alamkaust kuvatakse vasakpoolsel paneelil eraldi jooksuna ja kõverad joonistatakse samadele telgedele, igaühe juures on märkeruut.

Op-taseme graafik on vaikevaade ja näitab alt-üles joonistatult, kuidas TensorFlow programmi mõistab. Keras-sildi valimine lülitab sisse kontseptuaalse graafiku, mis näitab ainult mudeli kihte ja mida on lihtsam oma kujundusega võrrelda.

Automaatsed skaneeringud toodavad korraga kümneid katseid, seega muutub armatuurlaud pigem võrdlusvahendiks kui ühe katse jälgimiseks. HParamsi plugin logib iga konfiguratsiooni koos selle mõõdikutega, võimaldades teil katseid sortida, selle asemel et kõveraid ükshaaval lugeda.

GitHubi koopia koostab kiiresti tagasihelistamise ja kokkuvõtte kirjutaja malli. Käsitle väljundit mustandina: see segab sageli TensorFlow 1.x ja 2.x API-sid, seega kontrollige enne koodi käivitamist iga nime kehtiva dokumentatsiooni alusel.

Kas sündmuste faili ei kirjutatud või –logdir-ile edastatud tee ei ühti treeningtöös kasutatud teega. Veenduge, et selles kaustas on olemas fail events.out.tfevents ja et Windows Käivitage TensorBoard samast draivitähest.

Võta see postitus kokku järgmiselt: