Урок за 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 estimator, API от високо ниво, който обгръща математическите изчисления. Estimators принадлежат към TensorFlow 1.x API, така че двата фрагмента по-долу се изпълняват под 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!
Бележникът се съхранява в пътя /Потребители/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, така че лог файлът трябва да бъде създаден в тази папка.










