TensorBoard开始使用

Posted 一颗小树x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorBoard开始使用相关的知识,希望对你有一定的参考价值。

前言

在机器学习中,要改经模型的某些参数,通常需要对其进行衡量。TensorBoard是用于提供机器学习工作流程期间所需的测量和可视化的工具。

 

一、TensorBoard作用

它能跟踪模型指标,例如损失和准确性,可视化模型图,将嵌入物投影到较低维度的空间等等。

 

二、通过Keras Model.fit()使用TensorBoard

2.1 TensorBoard回调函数

当使用Keras Model.fit() 函数训练时,添加tf.keras.callback.TensorBoard回调,可确保创建和存储日志。

在每个时期启用histogram_freq = 的直方图计算功能(默认情况下处于关闭状态)

将日志放在带有时间戳的子目录中,以便轻松选择不同的训练运行。

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)

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

其中关键代码是 callbacks=[tensorboard_callback]) ,它在model.fit()中的回调接口指定了tensorboard_callback,这样训练过程中会存储日志,后面可以在TensorBoard中可视化查看。

 

2.2 打开TensorBoard

通过命令行终端 或在notebook中启动TensorBoard。

在notebook中,使用%tensorboard 命令:

%tensorboard --logdir logs/fit

在命令行中,运行是不带"%"的,命令基本一样:

tensorboard --logdir logs/fit

打开后如下图所示:

 

2.3 TensorBoard界面说明

Scalars 显示损失指标在每个时期如何变化;还可以使用它来跟踪训练速度,学习率和其他标量值。

 

Graphs 帮忙我们可视化模型。它会显示Keras的结构图,便于了解层与层之间的连接关系。

 

DiatributionsHistograms 显示张量随时间的分布。这对于可视化权重和偏差并验证它们是否可以预测的方式变化很有用。

Diatributions 界面如下:

Histograms 界面如下:

 

小结:

Scalars 显示损失指标在每个时期如何变化;还可以使用它来跟踪训练速度,学习率和其他标量值。

Graphs 帮忙我们可视化模型。它会显示Keras的结构图,便于了解层与层之间的连接关系。

DiatributionsHistograms 显示张量随时间的分布。这对于可视化权重和偏差并验证它们是否可以预测的方式变化很有用。

 

参考:https://www.tensorflow.org/tensorboard/get_started?hl=zh_cn

 

三、源代码

首先加载tensorboard

# Load the TensorBoard notebook extension.
%load_ext tensorboard

 清楚之前的日志(可选)

# Clear any logs from previous runs
rm -rf ./logs/

 

再执行如下代码:

# TensorBoard 入门案例。在本例中使用 MNIST 数据集。
# 接下来编写一个函数对数据进行标准化,同时创建一个简单的Keras模型使图像分为10类。

import tensorflow as tf
import datetime

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')
  ])

# 通过 Keras Model.fit() 使用 TensorBoard
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)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 

然后打开tensorboard即可。

在notebook中,使用%tensorboard 命令:

%tensorboard --logdir logs/fit

在命令行中,运行是不带"%"的,命令基本一样:

tensorboard --logdir logs/fit

 

后面的文章进一步介绍~~

 

以上是关于TensorBoard开始使用的主要内容,如果未能解决你的问题,请参考以下文章

如何从 virtualenv 中的 python 脚本运行 Tensorboard?

如何在 pytorch 中使用 tensorboard 调试器?

如何编辑已保存的 Tensorboard 摘要?

使用python代码读取准确性而不是tensorboard

从零开始配置vim(27)——代码片段

tensorboard在Mac OS X系统环境下如何启动