在 TensorFlow.org 上查看 | 在 Google Colab 中运行 | 在 GitHub 上查看源代码 | 下载笔记本 |
TensorBoard 可以直接在笔记本体验中使用,例如 Colab 和 Jupyter。这对于共享结果、将 TensorBoard 集成到现有工作流程以及在不本地安装任何内容的情况下使用 TensorBoard 很有帮助。
设置
首先安装 TF 2.0 并加载 TensorBoard 笔记本扩展
对于 Jupyter 用户:如果您已将 Jupyter 和 TensorBoard 安装到同一个虚拟环境中,那么您应该可以正常使用。如果您使用的是更复杂的设置,例如全局 Jupyter 安装和不同 Conda/虚拟环境的内核,那么您必须确保 tensorboard
二进制文件位于 Jupyter 笔记本上下文的 PATH
中。一种方法是修改 kernel_spec
以将环境的 bin
目录添加到 PATH
的开头,如这里所述。
对于 Docker 用户:如果您正在运行 Docker 镜像的 使用 TensorFlow 的 nightly 版本的 Jupyter Notebook 服务器,则不仅需要公开笔记本的端口,还需要公开 TensorBoard 的端口。因此,使用以下命令运行容器
docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter
其中 -p 6006
是 TensorBoard 的默认端口。这将为您分配一个端口以运行一个 TensorBoard 实例。要拥有并发实例,需要分配更多端口。此外,将 --bind_all
传递给 %tensorboard
以在容器外部公开端口。
# Load the TensorBoard notebook extension
%load_ext tensorboard
导入 TensorFlow、datetime 和 os
import tensorflow as tf
import datetime, os
笔记本中的 TensorBoard
下载 FashionMNIST 数据集并对其进行缩放
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion_mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz 32768/29515 [=================================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz 26427392/26421880 [==============================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz 8192/5148 [===============================================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz 4423680/4422102 [==============================] - 0s 0us/step
创建一个非常简单的模型
def create_model():
return tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28), name='layers_flatten'),
tf.keras.layers.Dense(512, activation='relu', name='layers_dense'),
tf.keras.layers.Dropout(0.2, name='layers_dropout'),
tf.keras.layers.Dense(10, activation='softmax', name='layers_dense_2')
])
使用 Keras 和 TensorBoard 回调训练模型
def train_model():
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
model.fit(x=x_train,
y=y_train,
epochs=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
train_model()
Train on 60000 samples, validate on 10000 samples Epoch 1/5 60000/60000 [==============================] - 11s 182us/sample - loss: 0.4976 - accuracy: 0.8204 - val_loss: 0.4143 - val_accuracy: 0.8538 Epoch 2/5 60000/60000 [==============================] - 10s 174us/sample - loss: 0.3845 - accuracy: 0.8588 - val_loss: 0.3855 - val_accuracy: 0.8626 Epoch 3/5 60000/60000 [==============================] - 10s 175us/sample - loss: 0.3513 - accuracy: 0.8705 - val_loss: 0.3740 - val_accuracy: 0.8607 Epoch 4/5 60000/60000 [==============================] - 11s 177us/sample - loss: 0.3287 - accuracy: 0.8793 - val_loss: 0.3596 - val_accuracy: 0.8719 Epoch 5/5 60000/60000 [==============================] - 11s 178us/sample - loss: 0.3153 - accuracy: 0.8825 - val_loss: 0.3360 - val_accuracy: 0.8782
使用 魔术命令 在笔记本中启动 TensorBoard
%tensorboard --logdir logs
您现在可以查看仪表板,例如时间序列、图表、分布等。某些仪表板在 Colab 中尚不可用(例如配置文件插件)。
%tensorboard
魔术命令与 TensorBoard 命令行调用的格式完全相同,只是在前面添加了 %
符号。
您也可以在训练之前启动 TensorBoard 以监控训练进度
%tensorboard --logdir logs
相同的 TensorBoard 后端通过发出相同的命令重复使用。如果选择了不同的日志目录,则会打开 TensorBoard 的新实例。端口会自动管理。
开始训练新模型并观察 TensorBoard 每 30 秒自动更新一次,或者使用右上角的按钮刷新它
train_model()
Train on 60000 samples, validate on 10000 samples Epoch 1/5 60000/60000 [==============================] - 11s 184us/sample - loss: 0.4968 - accuracy: 0.8223 - val_loss: 0.4216 - val_accuracy: 0.8481 Epoch 2/5 60000/60000 [==============================] - 11s 176us/sample - loss: 0.3847 - accuracy: 0.8587 - val_loss: 0.4056 - val_accuracy: 0.8545 Epoch 3/5 60000/60000 [==============================] - 11s 176us/sample - loss: 0.3495 - accuracy: 0.8727 - val_loss: 0.3600 - val_accuracy: 0.8700 Epoch 4/5 60000/60000 [==============================] - 11s 179us/sample - loss: 0.3282 - accuracy: 0.8795 - val_loss: 0.3636 - val_accuracy: 0.8694 Epoch 5/5 60000/60000 [==============================] - 11s 176us/sample - loss: 0.3115 - accuracy: 0.8839 - val_loss: 0.3438 - val_accuracy: 0.8764
您可以使用 tensorboard.notebook
API 获得更多控制
from tensorboard import notebook
notebook.list() # View open TensorBoard instances
Known TensorBoard instances: - port 6006: logdir logs (started 0:00:54 ago; pid 265)
# Control TensorBoard display. If no port is provided,
# the most recently launched TensorBoard is used
notebook.display(port=6006, height=1000)