Підручник з TensorBoard: Візуалізація графів TensorFlow
⚡ Розумний підсумок
TensorBoard — це візуальний інтерфейс для навчальних прогонів TensorFlow, що дозволяє побудувати криві втрат, графіки моделей, гістограми ваг та вбудовування. У цьому посібнику описано запис файлів подій за допомогою оцінювача, а потім відкриття панелі інструментів на порту 6006.

Що таке TensorBoard?
TensorBoard – це інтерфейс, який використовується для візуалізації графіка та інших інструментів для розуміння, налагодження та оптимізації моделі. Це інструмент, який надає вимірювання та візуалізації для робочого процесу машинного навчання. Він допомагає track метрик, таких як втрати та точність, візуалізувати граф моделі та проектувати вбудовування у простори нижчої вимірності.
TensorBoard постачається з TensorFlow і працює як невеликий локальний веб-сервер, який зчитує файли подій, які навчальне завдання записує на диск.
Візуалізація графа TensorFlow за допомогою прикладу TensorBoard
Зображення нижче взято з графіка TensorBoard, який ви згенеруєте в цьому посібнику. Це головна панель:
На малюнку нижче ви можете побачити панель візуалізації графіка TensorBoard. Панель містить різні вкладки, які пов’язані з рівнем інформації, яку ви додаєте під час запуску моделі.
- Скаляри: Показуйте різну корисну інформацію під час навчання моделі
- Графіки: Показати модель
- Гістограма: Відображення ваг за допомогою гістограми
- Поширення: Відобразити розподіл ваги
- проектор: Показати аналіз головних компонентів та алгоритм T-SNE. Метод, що використовується для зменшення розмірності.
Під час цього посібника з TensorBoard ви навчите простий глибоке навчання модель, а графік, який вона створює, зчитується знизу вгору.
Якщо подивитися на графік, можна зрозуміти, як працює модель. Пронумеровані значки на скріншоті нижче позначають ці чотири етапи:
- Додайте дані в модель у чергу: надішліть у модель кількість даних, що дорівнює розміру пакету, тобто кількість каналів даних після кожної ітерації
- Передайте дані тензорам
- Тренуйте модель
- Відображення кількості партій під час навчання. Збережіть модель на диску.
Основна ідея TensorBoard полягає в тому, що нейронна мережа може поводитися як чорна скринька, і вам потрібен інструмент для перевірки вмісту цієї скриньки. Уявіть собі TensorBoard як ліхтарик для занурення в мережу.
Це допомагає зрозуміти залежності між операціями, як обчислюються ваги, відображає функцію втрат і багато іншої корисної інформації. Коли ви об’єднуєте всю цю інформацію, у вас є чудовий інструмент для налагодження та пошуку способів покращення моделі.
Щоб отримати уявлення про те, наскільки корисним може бути графік TensorBoard, подивіться на дві криві втрат нижче:
Нейронна мережа вирішує, як з'єднати різні нейрони та скільки шарів потрібно, перш ніж модель зможе передбачити результат. Після визначення архітектури потрібно не лише навчити модель, але й визначити метрику, яка вимірює точність прогнозу. Ця метрика називається функцією втрат, і метою є її мінімізація, що просто означає, що модель робить менше помилок.
Кожен алгоритм навчання повторює обчислення багато разів, доки втрати не досягнуть більш пологої лінії. Мінімізація втрат також вимагає швидкості навчання, тобто швидкості, з якою навчається модель. Якщо встановити занадто високу швидкість навчання, модель ніколи не встигне нічого навчитися: це ліва діаграма, де лінія рухається вгору та вниз, оскільки модель фактично здогадується. Діаграма праворуч показує зменшення втрат протягом ітерацій, доки крива не стане більш пологою, що означає, що модель знайшла рішення.
TensorBoard – чудовий інструмент для візуалізації таких показників та виявлення потенційних проблем. Нейронній мережі може знадобитися кілька годин або тижнів, перш ніж вона знайде рішення, а TensorBoard оновлює показники, поки завдання ще виконується. Тому вам не потрібно чекати до кінця, щоб побачити, чи правильно навчається модель: відкрийте TensorBoard, перевірте, як проходить навчання, і внесіть відповідні зміни, якщо необхідно.
Як користуватися TensorBoard?
У цьому розділі ви дізнаєтесь, як відкрити TensorBoard з терміналу на macOS і з командного рядка далі WindowsТут основна увага приділяється інструменту, а не моделі, тому навчальний код навмисно короткий.
Спочатку вам потрібно імпортувати бібліотеки, які ви використовуватимете під час навчання.
## Import the library import tensorflow as tf import numpy as np
Ви створюєте дані. Це масив із 10000 рядків та 5 стовпців.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
Вихід
(10000, 5)
Наведений нижче код перетворює дані та створює модель.
Зверніть увагу, що швидкість навчання дорівнює 0.1. Якщо змінити цю швидкість на більше значення, модель не знайде рішення. Саме це сталося на лівій стороні зображення вище.
У прикладі використовується оцінювач TensorFlow, високорівневий API, який обгортає математичні обчислення. Оцінювачі належать до API TensorFlow 1.x, тому два фрагменти коду нижче працюють під час встановлення версії 1.x або через tf.compat.v1 простір імен.
Щоб створити файли журналу, потрібно вказати шлях. Це робиться за допомогою аргументу model_dir.
У наведеному нижче прикладі TensorBoard ви зберігаєте модель у робочому каталозі, тобто там, де ви зберігаєте блокнот або Python файл. Усередині цього шляху TensorFlow створить папку з назвою train з дочірньою папкою з назвою 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
)
)
Вихід
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}
Останній крок цього прикладу візуалізації графа TensorFlow полягає в навчанні моделі. Під час навчання TensorFlow записує інформацію в каталог моделі.
# 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)
Вихід
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 ту саму роботу виконує зворотний виклик Keras TensorBoard, який записує графік та показники для кожної епохи без будь-якого коду оцінки:
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])
Після завершення виконання каталог журналу містить файл контрольної точки, graph.pbtxt файл та один або декілька events.out.tfevents файли — саме те, що зчитує TensorBoard.
Для macOS користувачі
У нижньому вікні Finder показано нову папку train/linreg, створену в робочому каталозі.
Для Windows користувачі
On Windows ті самі файли відображаються за шляхом, який ви передали до model_dir, як це виділено в адресному рядку.
Той самий формат файлу подій створюється за допомогою PyTorch, тому панель інструментів не обмежується лише запусками TensorFlow.
Тепер, коли події журналу записані, ви можете відкрити TensorBoard. TensorBoard за замовчуванням працює на порту 6006 (Jupyter використовує порт 8888). Використовуйте термінал на macOS або підказку Anaconda на Windows.
Для macOS користувачі
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Блокнот зберігається за шляхом /Users/Guru99/tuto_TF
Для Windows користувачі
cd C:\Users\Admin\Anaconda3 activate hello-tf
Блокнот зберігається в шляху C:\Users\Admin\Anaconda3
Щоб запустити TensorBoard, виконайте таку команду з цього каталогу.
Для macOS користувачі
tensorboard --logdir=./train/linreg
Для Windows користувачі
tensorboard --logdir=.\train\linreg
Потім TensorBoard обслуговується за адресою http://localhost:6006
| Прапор | Що воно контролює |
|---|---|
--logdir |
Директорія, що містить файли подій. Це єдиний обов'язковий прапорець. |
--port |
Порт для обслуговування. Значення за замовчуванням – 6006; змініть його, якщо попередній сеанс все ще має цей порт. |
--bind_all |
Обслуговувати на кожному мережевому інтерфейсі. TensorBoard за замовчуванням прив'язується лише до localhost, тому для віддаленого доступу потрібен цей прапорець, і його не можна поєднувати з --host. |
--reload_interval |
Як часто (у секундах) каталог журналів повторно сканується на наявність нових даних. |
--logdir_spec |
Застарілий резервний варіант, що приймає кілька шляхів, розділених комами; --logdir більше не підтримує цю форму. |
Команда tensorboard dev підкоманда більше не працює: розміщена служба TensorBoard.dev завершила роботу 1 січня 2024 року. Локальне використання залишається незмінним.
На деяких комп'ютерах консоль друкує ім'я хоста замість localhost, як у запиті Anaconda нижче. Будь-яка адреса відкриває ту саму панель інструментів.
Скопіюйте та вставте адресу у ваш улюблений браузер. Ви повинні побачити панель інструментів Scalars, показану нижче.
Якщо ви бачите щось подібне замість цього:
Це означає, що TensorBoard не може знайти файл журналу. Переконайтеся, що ви вказали cd до правильного шляху або ще раз перевірте, чи подія журналу дійсно була створена. Якщо ні, повторно запустіть навчальний код.
Якщо ви хочете закрити TensorBoard, натисніть CTRL+C у вікні терміналу.
Порада: перевірте командний рядок Anaconda, щоб дізнатися поточний робочий каталог.
На скріншоті вище запит знаходиться в C:\Users\Admin, тому файл журналу слід створювати в цій папці.










