Учебное пособие по TensorBoard: визуализация графов в TensorFlow.
⚡ Умное резюме
TensorBoard — это визуальный интерфейс для запуска обучения в TensorFlow, позволяющий строить кривые потерь, графики моделей, гистограммы весов и эмбеддинги. В этом пошаговом руководстве записываются файлы событий с помощью оценщика, а затем открывается панель мониторинга на порту 6006.
Что такое Тензорборд?
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 estimator — высокоуровневый API, который инкапсулирует математические вычисления. Estimator относятся к 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, поэтому файл журнала должен быть создан в этой папке.










