Samouczek TensorBoard: Wizualizacja wykresu TensorFlow [Przykład]

Co to jest TensorBoard?

Tensorboard to interfejs używany do wizualizacji wykresu i innych narzędzi umożliwiających zrozumienie, debugowanie i optymalizację modelu. Jest to narzędzie, które zapewnia pomiary i wizualizacje na potrzeby przepływu pracy w uczeniu maszynowym. Pomaga śledzić metryki, takie jak straty i dokładność, wizualizacja wykresów modelu, osadzanie projektów w przestrzeniach o niższych wymiarach itp.

Wizualizacja wykresu TensorFlow na przykładzie Tensorboard

Poniższy obraz pochodzi z wykresu TensorBoard, który wygenerujesz w tym samouczku TensorBoard. To jest panel główny:

Wizualizacja wykresu TensorFlow
Wizualizacja wykresu TensorFlow

Na poniższym obrazku widać panel wizualizacji wykresu TensorBoard. Panel zawiera różne zakładki, które są powiązane z poziomem informacji dodawanych podczas uruchamiania modelu.

Wykresy TensorBoard

Wykresy TensorBoard
  • Skalary: Pokaż różne przydatne informacje podczas uczenia modelu
  • Wykresy: Pokaż model
  • Histogram: Wyświetlanie wag z histogramem
  • Dystrybucja: Wyświetla rozkład ciężaru
  • Projektor: Pokaż analizę głównych składowych i algorytm T-SNE. Technika stosowana w celu redukcji wymiarowości

Podczas tego samouczka TensorBoard przeszkolisz prosty model głębokiego uczenia się. Jak to działa, dowiesz się w przyszłym samouczku.

Jeśli spojrzysz na wykres, możesz zrozumieć, jak działa model.

  1. Kolejkuj dane do modelu: Wprowadź do modelu ilość danych równą wielkości partii, tj. liczbę dostarczanych danych po każdej iteracji
  2. Podaj dane do tensorów
  3. Trenuj model
  4. Wyświetlaj liczbę partii podczas treningu. Zapisz model na dysku.

Wizualizacja wykresu TensorFlow na przykładzie Tensorboard

Podstawowym pomysłem stojącym za tensorboardem jest to, że sieć neuronowa może być czymś znanym jako czarna skrzynka i potrzebujemy narzędzia do sprawdzenia, co jest w środku tej skrzynki. Możesz wyobrazić sobie tensorboard jako latarkę, aby zacząć nurkować w sieci neuronowej.

Pomaga zrozumieć zależności między operacjami, sposób obliczania wag, wyświetla funkcję straty i wiele innych przydatnych informacji. Gdy połączysz wszystkie te informacje, otrzymasz świetne narzędzie do debugowania i znajdowania sposobów na ulepszenie modelu.

Aby dać Ci wyobrażenie o użyteczności wykresu TensorBoard, spójrz na poniższy obrazek:

Wykresy TensorBoard
Wykres TensorBoarda

Sieć neuronowa decyduje, jak połączyć różne „neurony” i ile warstw, zanim model będzie mógł przewidzieć wynik. Po zdefiniowaniu architektury nie tylko musisz wytrenować model, ale także metrykę, aby obliczyć dokładność przewidywania. Ta metryka jest określana jako funkcja straty. Celem jest zminimalizowanie funkcji straty. Innymi słowy, oznacza to, że model popełnia mniej błędów. Wszystkie algorytmy uczenia maszynowego będą wielokrotnie powtarzać obliczenia, aż strata osiągnie bardziej płaską linię. Aby zminimalizować tę funkcję straty, musisz zdefiniować tempo uczenia się. Jest to prędkość, której ma się nauczyć model. Jeśli ustawisz zbyt wysoką szybkość uczenia się, model nie będzie miał czasu na naukę czegokolwiek. Tak jest na zdjęciu po lewej stronie. Linia porusza się w górę i w dół, co oznacza, że ​​model przewiduje wynik na zasadzie domysłu. Rysunek po prawej stronie pokazuje, że strata maleje w miarę kolejnych iteracji, aż krzywa się spłaszczy, co oznacza, że ​​model znalazł rozwiązanie.

TensorBoard to świetne narzędzie do wizualizacji takich metryk i wyróżniania potencjalnych problemów. Sieć neuronowa może potrzebować godzin lub tygodni, zanim znajdzie rozwiązanie. TensorBoard bardzo często aktualizuje metryki. W takim przypadku nie musisz czekać do końca, aby sprawdzić, czy model trenuje poprawnie. Możesz otworzyć TensorBoard, aby sprawdzić, jak przebiega trening i w razie potrzeby wprowadzić odpowiednie zmiany.

Jak korzystać z TensorBoarda?

W tym samouczku dowiesz się, jak otworzyć TensorBoard z terminala dla systemu MacOS i wiersza poleceń TensorBoard dla systemu MacOS. Windows.

Kod zostanie wyjaśniony w przyszłym samouczku, skupiamy się tutaj na TensorBoard.

Najpierw musisz zaimportować biblioteki, z których będziesz korzystać podczas szkolenia

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

Tworzysz dane. Jest to tablica składająca się z 10000 wierszy i 5 kolumn

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

Wydajność

(10000, 5)

Poniższe kody przekształcają dane i tworzą model.

Należy pamiętać, że szybkość uczenia się wynosi 0.1. Jeśli zmienisz tę stawkę na wyższą wartość, model nie znajdzie rozwiązania. To samo wydarzyło się po lewej stronie powyższego zdjęcia.

Podczas większości Samouczki TensorFlow, użyjesz estymatora TensorFlow. To jest API TensorFlow, które zawiera wszystkie obliczenia matematyczne.

Aby utworzyć pliki dziennika, należy określić ścieżkę. Odbywa się to za pomocą argumentu katalog_modelu.

W poniższym przykładzie TensorBoard przechowujesz model w katalogu roboczym, tj. tam, gdzie przechowujesz notatnik lub plik Pythona. Wewnątrz tej ścieżki TensorFlow utworzy folder o nazwie train z nazwą folderu podrzędnego 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    
      )
)

Wydajność

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}

Ostatni krok tego przykładowego wykresu wizualizacji TensorFlow polega na wytrenowaniu modelu. Podczas szkolenia TensorFlow zapisuje informacje w katalogu modelu.

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

Wydajność

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>

Dla użytkowników MacOS

Samouczek TensorBoard dla użytkowników MacOS

Dla litu szacuje się Windows użytkownik

Poradnik TensorBoard dla Windows Użytkownik

Informacje te można zobaczyć wPyTorch Płyta Tensor.

Teraz, gdy masz zapisane zdarzenia w dzienniku, możesz otworzyć Tensorboard. Tensorboard Keras działa na porcie 6006 (Jupyter działa na porcie 8888). Możesz użyć Terminala dla użytkowników MacOs lub Anacondy prompt dla Windows użytkownika.

Dla użytkowników MacOS

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

Notatnik jest przechowywany w ścieżce /Users/Guru99/tuto_TF

Dla litu szacuje się Windows Użytkownicy

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

Notatnik jest przechowywany w ścieżce C:\Users\Admin\Anaconda3

Aby uruchomić Tensorboard, możesz użyć tego kodu

Dla użytkowników MacOS

tensorboard --logdir=./train/linreg

Dla litu szacuje się Windows Użytkownicy

tensorboard --logdir=.\train\linreg

Tensorboard znajduje się pod tym adresem URL: http://localhost:6006

Może się również znajdować w następującym miejscu.

Użyj TensorBoarda

Skopiuj i wklej adres URL do swojej ulubionej przeglądarki. Powinieneś zobaczyć to:

Pamiętaj, że sposobu odczytywania wykresu nauczymy się w samouczku poświęconym głęboka nauka.

Użyj TensorBoarda

Jeśli zobaczysz coś takiego:

Użyj TensorBoarda

Oznacza to, że Tensorboard nie może znaleźć pliku dziennika. Upewnij się, że wskazujesz cd na właściwą ścieżkę lub sprawdź dwukrotnie, czy zdarzenie dziennika zostało utworzone. Jeśli nie, uruchom ponownie kod.

Jeśli chcesz zamknąć TensorBoard, naciśnij CTRL+C

Wskazówka dotycząca kapelusza: sprawdź monit anacondy o bieżący katalog roboczy,

Użyj TensorBoarda

Plik dziennika powinien zostać utworzony w C:\Users\Admin

Podsumowanie

TensorBoard to świetne narzędzie do wizualizacji modelu. Ponadto podczas treningu wyświetlane są liczne metryki, takie jak strata, dokładność lub wagi.

Aby aktywować Tensorboard, musisz ustawić ścieżkę swojego pliku:

cd /Users/Guru99/tuto_TF

Aktywuj środowisko Tensorflow

activate hello-tf

Uruchom Tensorboard

tensorboard --logdir=.+ PATH