##### Copyright 2020 The TensorFlow Authors.
#@title Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

开始使用 TensorBoard.dev#

TensorBoard.dev 是一项免费的公共 TensorBoard 服务,可让您上传并与所有人共享您的 ML 实验。

此笔记本训练了一个简单模型,并展示了如何将日志上传到 TensorBoard.dev。预览

配置并导入#

此笔记本使用仅适用于 >= 2.3.0 版本的 TensorBoard 功能。

import tensorflow as tf
import datetime
from tensorboard.plugins.hparams import api as hp

训练一个简单的模型并创建 TensorBoard 日志#

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])

TensorBoard 日志是在训练期间通过将 TensorBoard超参数回调传递给 Keras 的 Model.fit() 来创建的。之后可以将这些日志上传到 TensorBoard.dev。

model = create_model()
model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])

log_dir="logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir=log_dir, histogram_freq=1)
hparams_callback = hp.KerasCallback(log_dir, {
    'num_relu_units': 512,
    'dropout': 0.2
})

model.fit(
    x=x_train, 
    y=y_train, 
    epochs=5, 
    validation_data=(x_test, y_test), 
    callbacks=[tensorboard_callback, hparams_callback])

(仅限 Jupyter)授权 TensorBoard.dev#

Colab 中不需要此步骤

此步骤要求您在 Jupyter 之外的 shell 控制台中进行身份验证。请在您的控制台中执行以下命令。

tensorboard dev list

作为此流程的一部分,您将获得一个授权代码。此代码是同意服务条款所必需的。

上传到 TensorBoard.dev#

上传 TensorBoard 日志将为您提供一个可以与任何人共享的 URL。

上传的 TensorBoard 是公开的,所以请勿上传敏感数据。

当整个 logdir 上传完毕后,上传程序将退出。(这是 --one_shot 标志指定的内容。)

!tensorboard dev upload --logdir ./logs \
  --name "Simple experiment with MNIST" \
  --description "Training results from https://colab.sandbox.google.com/github/tensorflow/tensorboard/blob/master/docs/tbdev_getting_started.ipynb" \
  --one_shot

每个单独的上传都有一个唯一的实验 ID。这意味着如果您使用同一目录开始新的上传,您将获得一个新的实验 ID。您可以在 https://tensorboard.dev/experiments/ 查看所有上传的实验。或者,您可以使用以下命令在终端中列出您的实验:

tensorboard dev list
!tensorboard dev list

TensorBoard.dev 屏幕截图#

这是导航到 https://tensorboard.dev/experiments/ 时的样子:

TensorBoard.dev实验列表屏幕截图

这是导航到 TensorBoard.dev 上的新实验时的样子:

TensorBoard.dev实验信息中心的屏幕截图

删除 TensorBoard.dev 实验#

要移除您上传的实验,请使用 delete 命令并指定所需的 experiment_id。在上面的截图中,experiment_id 位于左下角:w1lkBAOrR4eH35Y7Lg1DQQ

# You must replace YOUR_EXPERIMENT_ID with the value output from the previous
# tensorboard `list` command or `upload` command.  For example
# `tensorboard dev delete --experiment_id pQpJNh00RG2Lf1zOe9BrQA`

## !tensorboard dev delete --experiment_id YOUR_EXPERIMENT_ID_HERE