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:

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.
- 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.
- Kolejkuj dane do modelu: Wprowadź do modelu ilość danych równą wielkości partii, tj. liczbę dostarczanych danych po każdej iteracji
- Podaj dane do tensorów
- Trenuj model
- Wyświetlaj liczbę partii podczas treningu. Zapisz model na dysku.
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:
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
Dla litu szacuje się 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.
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.
Jeśli zobaczysz coś takiego:
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,
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