TensorBoard-veiledning: TensorFlow-grafvisualisering [Eksempel]

Hva er TensorBoard?

TensorBoard er grensesnittet som brukes til å visualisere grafen og andre verktøy for å forstå, feilsøke og optimalisere modellen. Det er et verktøy som gir målinger og visualiseringer for arbeidsflyt for maskinlæring. Det hjelper å spore beregninger som tap og nøyaktighet, visualisering av modellgrafer, prosjektinnbygging ved lavere dimensjonale rom, etc.

TensorFlow-grafvisualisering ved hjelp av Tensorboard-eksempel

Bildet nedenfor kommer fra TensorBoard-grafen du vil generere i denne TensorBoard-veiledningen. Det er hovedpanelet:

TensorFlow grafvisualisering
TensorFlow grafvisualisering

Fra bildet nedenfor kan du se panelet med TensorBoard grafvisualisering. Panelet inneholder forskjellige faner, som er knyttet til informasjonsnivået du legger til når du kjører modellen.

TensorBoard-grafer

TensorBoard-grafer
  • Skalarer: Vis forskjellig nyttig informasjon under modellopplæringen
  • grafer: Vis modellen
  • histogram: Vis vekter med et histogram
  • Distribusjon: Vis fordelingen av vekten
  • Projektor: Vis hovedkomponentanalyse og T-SNE-algoritme. Teknikken som brukes for reduksjon av dimensjonalitet

I løpet av denne TensorBoard-veiledningen vil du trene en enkel dyplæringsmodell. Du vil lære hvordan det fungerer i en fremtidig opplæring.

Hvis du ser på grafen, kan du forstå hvordan modellen fungerer.

  1. Sett dataene i kø til modellen: Send en mengde data som tilsvarer batchstørrelsen til modellen, dvs. Antall datainnmatinger etter hver iterasjon
  2. Mate dataene til tensorene
  3. Tren modellen
  4. Vis antall partier under treningen. Lagre modellen på disken.

TensorFlow-grafvisualisering ved hjelp av Tensorboard-eksempel

Den grunnleggende ideen bak tensorboard er at nevrale nettverk kan være noe kjent som en svart boks, og vi trenger et verktøy for å inspisere hva som er inne i denne boksen. Du kan forestille deg tensorboard som en lommelykt for å begynne å dykke inn i det nevrale nettverket.

Det hjelper å forstå avhengighetene mellom operasjoner, hvordan vektene beregnes, viser tapsfunksjonen og mye annen nyttig informasjon. Når du samler all denne informasjonen, har du et flott verktøy for å feilsøke og finne ut hvordan du kan forbedre modellen.

For å gi deg en ide om hvor nyttig TensorBoard-grafen kan være, se på bildet nedenfor:

TensorBoard-grafer
TensorBoard-graf

Et nevralt nettverk bestemmer hvordan de forskjellige "nevronene" skal kobles sammen og hvor mange lag før modellen kan forutsi et utfall. Når du har definert arkitekturen, trenger du ikke bare å trene modellen, men også en metrikk for å beregne nøyaktigheten til prediksjonen. Denne metrikken omtales som en tapsfunksjon. Målet er å minimere tapsfunksjonen. Med andre ord betyr det at modellen gjør færre feil. Alle maskinlæringsalgoritmer vil gjenta mange ganger beregningene til tapet når en flatere linje. For å minimere denne tapsfunksjonen, må du definere en læringshastighet. Det er hastigheten du vil at modellen skal lære. Setter du en læringsrate for høyt, rekker ikke modellen å lære noe. Dette er tilfellet på bildet til venstre. Linjen beveger seg opp og ned, noe som betyr at modellen forutsier med ren gjetning utfallet. Bildet til høyre viser at tapet avtar over iterasjon til kurven ble flate, noe som betyr at modellen fant en løsning.

TensorBoard er et flott verktøy for å visualisere slike beregninger og fremheve potensielle problemer. Det nevrale nettverket kan ta timer til uker før de finner en løsning. TensorBoard oppdaterer beregningene veldig ofte. I dette tilfellet trenger du ikke vente til slutten for å se om modellen trener riktig. Du kan åpne TensorBoard for å sjekke hvordan treningen går og gjøre den nødvendige endringen om nødvendig.

Hvordan bruke TensorBoard?

I denne opplæringen lærer du hvordan du åpner TensorBoard fra terminalen for MacOS og kommandolinjen TensorBoard for Windows.

Koden vil bli forklart i en fremtidig opplæring, fokus her er på TensorBoard.

Først må du importere bibliotekene du skal bruke under opplæringen

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

Du lager dataene. Det er en matrise med 10000 5 rader og XNUMX kolonner

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

Produksjon

(10000, 5)

Kodene nedenfor transformerer dataene og lager modellen.

Merk at læringsraten er lik 0.1. Hvis du endrer denne satsen til en høyere verdi, vil ikke modellen finne en løsning. Dette er hva som skjedde på venstre side av bildet over.

I løpet av det meste av TensorFlow-veiledninger, vil du bruke TensorFlow-estimator. Dette er TensorFlow API som inneholder alle de matematiske beregningene.

For å lage loggfilene må du spesifisere banen. Dette gjøres med argumentet model_dir.

I TensorBoard-eksemplet nedenfor lagrer du modellen inne i arbeidskatalogen, dvs. der du lagrer notatboken eller pythonfilen. Inne i denne banen vil TensorFlow opprette en mappe kalt tog med et undermappenavn 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    
      )
)

Produksjon

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}

Det siste trinnet i dette TensorFlow-visualiseringsgrafeksemplet består i å trene modellen. Under opplæringen skriver TensorFlow informasjon i modellkatalogen.

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

Produksjon

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>

For MacOS-brukere

TensorBoard-opplæring for MacOS-brukere

Til Windows bruker

TensorBoard opplæring for Windows Bruker

Du kan se denne informasjonen iPyTorch TensorBoard.

Nå som du har skrevet logghendelsene, kan du åpne Tensorboard. Tensorboard Keras kjører på port 6006 (Jupyter kjører på port 8888). Du kan bruke Terminal for MacOs-brukere eller Anaconda-ledeteksten for Windows bruker.

For MacOS-brukere

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

Notatboken er lagret i banen /Users/Guru99/tuto_TF

Til Windows Brukere

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

Notatboken er lagret i banen C:\Users\Admin\Anaconda3

For å starte Tensorboard kan du bruke denne koden

For MacOS-brukere

tensorboard --logdir=./train/linreg

Til Windows Brukere

tensorboard --logdir=.\train\linreg

Tensorboard ligger i denne URLen: http://localhost:6006

Det kan også være plassert på følgende sted.

Bruk TensorBoard

Kopier og lim inn URL-en i favorittnettleseren din. Du bør se dette:

Merk at vi vil lære hvordan du leser grafen i opplæringen dedikert til dyp læring.

Bruk TensorBoard

Hvis du ser noe slikt:

Bruk TensorBoard

Det betyr at Tensorboard ikke kan finne loggfilen. Pass på at du peker CD-en til riktig bane eller dobbeltsjekk om logghendelsen har opprettet. Hvis ikke, kjør koden på nytt.

Hvis du vil lukke TensorBoard, trykk CTRL+C

Hatttips: Sjekk anaconda-forespørselen din for gjeldende arbeidskatalog,

Bruk TensorBoard

Loggfilen skal opprettes på C:\Users\Admin

Oppsummering

TensorBoard er et flott verktøy for å visualisere modellen din. Dessuten vises mange beregninger under treningen, for eksempel tap, nøyaktighet eller vekter.

For å aktivere Tensorboard må du angi banen til filen din:

cd /Users/Guru99/tuto_TF

Aktiver Tensorflows miljø

activate hello-tf

Start Tensorboard

tensorboard --logdir=.+ PATH