Посмотреть на TensorFlow.org | Запускаем в Google Colab | Посмотреть исходный код на GitHub | Скачать блокнот |
Обзор
Графы панель TensorBoard является мощным инструментом для изучения вашей модели TensorFlow. Вы можете быстро просмотреть концептуальный график структуры вашей модели и убедиться, что она соответствует вашему намеченному проекту. Вы также можете просмотреть график операционного уровня, чтобы понять, как TensorFlow понимает вашу программу. Изучение графика операционного уровня может дать вам представление о том, как изменить вашу модель. Например, вы можете изменить модель своей модели, если обучение идет медленнее, чем ожидалось.
В этом руководстве представлен краткий обзор того, как сгенерировать диагностические данные графиков и визуализировать их на панели инструментов TensorBoard Graphs. Вы определите и обучите простую модель Keras Sequential для набора данных Fashion-MNIST и узнаете, как регистрировать и исследовать графики вашей модели. Вы также можете использовать трассировку API для создания графика данных для функций , созданных с использованием нового tf.function
аннотацию.
Настраивать
# Load the TensorBoard notebook extension.
%load_ext tensorboard
from datetime import datetime
from packaging import version
import tensorflow as tf
from tensorflow import keras
print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >= 2, \
"This notebook requires TensorFlow 2.0 or above."
TensorFlow version: 2.2.0
import tensorboard
tensorboard.__version__
'2.2.1'
# Clear any logs from previous runs
rm -rf ./logs/
Определите модель Keras
В этом примере классификатор представляет собой простую четырехуровневую последовательную модель.
# Define the model.
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
Загрузите и подготовьте данные для обучения.
(train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0
Обучите модель и данные журнала
Перед тренировкой, определить функцию обратного вызова Keras TensorBoard , указав каталог журнала. Передав этот обратный вызов в Model.fit (), вы гарантируете, что данные графика записываются для визуализации в TensorBoard.
# Define the Keras TensorBoard callback.
logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
# Train the model.
model.fit(
train_images,
train_labels,
batch_size=64,
epochs=5,
callbacks=[tensorboard_callback])
Epoch 1/5 938/938 [==============================] - 2s 2ms/step - loss: 0.6955 - accuracy: 0.7618 Epoch 2/5 938/938 [==============================] - 2s 2ms/step - loss: 0.4877 - accuracy: 0.8296 Epoch 3/5 938/938 [==============================] - 2s 2ms/step - loss: 0.4458 - accuracy: 0.8414 Epoch 4/5 938/938 [==============================] - 2s 2ms/step - loss: 0.4246 - accuracy: 0.8476 Epoch 5/5 938/938 [==============================] - 2s 2ms/step - loss: 0.4117 - accuracy: 0.8508 <tensorflow.python.keras.callbacks.History at 0x7f656ecc3fd0>
График операционного уровня
Запустите TensorBoard и подождите несколько секунд, пока загрузится пользовательский интерфейс. Выберите панель управления «Графики», нажав «Графики» вверху.
%tensorboard --logdir logs
Вы также можете при желании использовать TensorBoard.dev для создания размещенного эксперимента с общим доступом.
!tensorboard dev upload \
--logdir logs \
--name "Sample op-level graph" \
--one_shot
По умолчанию, TensorBoard отображает график операционного уровня. (Слева вы можете видеть выбранный тег «По умолчанию».) Обратите внимание, что график перевернут; данные идут снизу вверх, так что по сравнению с кодом они перевернуты. Однако вы можете видеть, что график близко соответствует определению модели Keras с дополнительными ребрами для других вычислительных узлов.
Графики часто бывают очень большими, поэтому вы можете управлять визуализацией графика:
- Выделите увеличения и уменьшения масштаба
- Перетащите кастрюлю
- Двойной щелчок переключает расширение узла (узел может быть контейнером для других узлов)
Вы также можете просмотреть метаданные, щелкнув узел. Это позволяет вам видеть входы, выходы, формы и другие детали.
Концептуальный граф
В дополнение к выполнению графика, TensorBoard также отображает концептуальный график. Это взгляд только на модель Кераса. Это может быть полезно, если вы повторно используете сохраненную модель и хотите проверить или проверить ее структуру.
Чтобы увидеть концептуальный график, выберите тег «keras». Для этого примера, вы увидите свернутую Последовательная узел. Дважды щелкните узел, чтобы увидеть структуру модели:
Графики tf.функций
Примеры до сих пор описывали графики моделей Keras, где графики были созданы путем определения слоев Keras и вызова Model.fit ().
Вы можете столкнуться с ситуацией , когда вам нужно использовать tf.function
аннотации к «автографу» , то есть преобразование, функции вычисления Python в графу TensorFlow высокопроизводительной. В таких ситуациях вы используете TensorFlow Резюме трассировки API для входа автографов функции для визуализации в TensorBoard.
Чтобы использовать Summary Trace API:
- Определение и аннотировать функцию с
tf.function
- Используйте
tf.summary.trace_on()
непосредственно перед вашим сайтом вызова функции. - Добавить информацию о профиле (память, процессорное время) на графике, передавая
profiler=True
- С Резюме файла писатель, вызов
tf.summary.trace_export()
, чтобы сохранить данные журнала
Затем вы можете использовать TensorBoard, чтобы увидеть, как ведет себя ваша функция.
# The function to be traced.
@tf.function
def my_func(x, y):
# A simple hand-rolled layer.
return tf.nn.relu(tf.matmul(x, y))
# Set up logging.
stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
logdir = 'logs/func/%s' % stamp
writer = tf.summary.create_file_writer(logdir)
# Sample data for your function.
x = tf.random.uniform((3, 3))
y = tf.random.uniform((3, 3))
# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = my_func(x, y)
with writer.as_default():
tf.summary.trace_export(
name="my_func_trace",
step=0,
profiler_outdir=logdir)
%tensorboard --logdir logs/func
Теперь вы можете увидеть структуру вашей функции, как ее понимает TensorBoard. Щелкните радиокнопку «Профиль», чтобы просмотреть статистику ЦП и памяти.