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.
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:
Alloleval pildil näete TensorBoardi graafiku visualiseerimise paneeli. Paneel sisaldab erinevaid vahekaarte, mis on lingitud mudeli käitamisel lisatava teabe tasemega.
- 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:
- Andmete järjekorda seadmine mudelisse: sisestage mudelisse partii suurusega võrdne andmehulk, st andmevoo arv pärast iga iteratsiooni
- Andmete edastamine tensoritele
- Treeni modelli
- Näidake koolituse ajal partiide arvu. Salvestage mudel kettale.
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:
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: {'_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.
eest Windows Kasutajad
On Windows Samad failid ilmuvad model_dir-ile edastatud teekonna alla, nagu aadressiribal esile tõstetud.
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.
Kopeeri aadress ja kleebi see oma lemmikbrauserisse. Sa peaksid nägema allpool olevat skalaaride armatuurlauda.
Kui näete hoopis midagi sellist:
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.
Ülaltoodud ekraanipildil asub viip kaustas C:\Users\Admin, seega peaks logifail olema loodud sellesse kausta.










