TensorFlow学习5:TensorBoard可视化

环境:win10;tensorboard1.7.0

TensorBoard打开步骤

1.首先创建一个简单的网络:

import tensorflow as tf
import numpy as np

# 创建一个神经网络层
def add_layer(input, in_size, out_size, activation_function = None):
    """
    :param input:
        神经网络层的输入
    :param in_zize:
        输入数据的大小
    :param out_size:
        输出数据的大小
    :param activation_function:
        神经网络激活函数,默认没有
    """
    with tf.name_scope('layer'):
        with tf.name_scope('weights'):
            # 定义神经网络的初始化权重
            Weights = tf.Variable(tf.random_normal([in_size, out_size]))
        with tf.name_scope('biases'):
            # 定义神经网络的偏置
            biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
        with tf.name_scope('W_mul_x_plus_b'):
            # 计算w*x+b
            W_mul_x_plus_b = tf.matmul(input, Weights) + biases
        # 根据是否有激活函数进行处理
        if activation_function is None:
            output = W_mul_x_plus_b
        else:
            output = activation_function(W_mul_x_plus_b)

        return output

# 创建一个具有输入层、隐藏层、输出层的三层神经网络,神经元个数分别为1,10,1
# 创建只有一个特征的输入数据,数据数目为300,输入层
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
# 创建数据中的噪声
noise = np.random.normal(0, 0.05, x_data.shape)
# 创建输入数据对应的输出
y_data = np.square(x_data) + 1 + noise

with tf.name_scope('input'):
    # 定义输入数据,None是样本数目,表示多少输入数据都行,1是输入数据的特征数目
    xs = tf.placeholder(tf.float32, [None, 1], name = 'x_input')
    # 定义输出数据,与xs同理
    ys = tf.placeholder(tf.float32, [None, 1], name = 'y_input')

# 定义一个隐藏层
hidden_layer = add_layer(xs, 1, 10, activation_function = tf.nn.relu)
# 定义输出层
prediction = add_layer(hidden_layer, 10, 1, activation_function = None)

# 求解神经网络参数

# 定义损失函数
with tf.name_scope('loss'):
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices = [1]))
# 定义训练过程
with tf.name_scope('train'):
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 变量初始化
init = tf.global_variables_initializer()
# 定义Session
sess = tf.Session()
# 将网络结构图写到文件中
writer = tf.summary.FileWriter('logs/', sess.graph)
# 执行初始化工作
sess.run(init)

2.找到你写入log文件的地址



3.打开终端键入:tensorboard --logdir=C:\Users\zhx93\Documents\py\logs

后面为log文件的地址

你将得到:



4.将上面给出的地址在浏览器中打开即可



TensorBoard的使用

TensorBoard是TensorFlow自带的可视化结构管理和调试优化网络的工具。在我们学习深度学习网络框架时,我们需要更直观的看到各层网络结构和参数,也可以更好的进行调试优化网络。TensorBoard可以实现网络结构的显示,也可以进行显示训练及测试过程中各层参数的变化情况。

我们先看下TensorBoard的大致界面。


我们可以看到顶部有几个功能分类:SCALARS、IMAGES、AUDIO、GRAPHS等。

1.SCALARS是训练参数统计显示,可以看到整个训练过程中,各个参数的变换情况。

官方英文翻译:

TensorBoard的标量仪表板可视化随时间变化的标量统计; 例如,您可能需要跟踪模型的损失或学习率。 如关键概念所述,您可以比较多个运行,数据按标签组织。 折线图具有以下交互作用:

  • 点击每个图表左下角的小蓝色图标将展开图表
  • 在图表上拖动矩形区域将放大
  • 双击图表将缩小
  • 鼠标在图表上会产生十字准线,数据值记录在左侧的运行选择器中。

此外,您可以通过在仪表板左上角的框中编写正则表达式来创建新的文件夹来组织标签。



2. IMAGES输入和输出标签。

官方翻译:

图像仪表板可以显示通过tf.image_summary保存的png。 设置仪表板,使每行对应一个不同的标签,每列对应一个运行。 由于图像显示板支持任意的png,您可以使用它将自定义可视化(例如,matplotlib散点图)嵌入到TensorBoard中。 此仪表板总是显示每个标签的最新图像。

3. AUDIO官方英文翻译:

音频仪表板可以嵌入通过tf.audio_summary保存的音频的可播放音频小部件。 设置仪表板,使每行对应一个不同的标签,每列对应一个运行。 此仪表板将为每个标签嵌入最新的音频。

4. GRAPH是网络结构显示。

官方英文翻译:

图形浏览器可以显示TensorBoard图形,从而可以检查TensorFlow模型。 为了最好地利用图形可视化程序,您应该使用名称范围来对图形中的op进行分层分组,否则图形可能难以破译。 有关更多信息,包括示例,请参阅图形可视化程序教程。

5. HISTOGRAM是训练过程参数分布情况显示。

官方英文翻译:

直方图仪表板用于可视化Tensor的统计分布随时间变化。它可视化通过tf.histogram_summary记录的数据。现在,它的名字有点不正确,因为它不显示直方图;相反,它显示了一些关于分配的高级统计数据。图表上的每一行表示数据分布中的百分位数:例如,底线显示了最小值随时间变化的方式,中间的行显示了中位数的变化。从上到下,行具有以下含义:[最大,93%,84%,69%,50%,31%,16%,7%,最低]。
这些百分位数也可以视为正态分布的标准偏差边界:[最大值,μ+1.5σ,μ+σ,μ+0.5σ,μ,μ-0.5σ,μ-σ,μ-1.5σ,最小值]使得从内到外读取的着色区域分别具有宽度[σ,2σ,3σ]。
这种直方图可视化有点奇怪,不能有意义地表示多模态分布。我们正在研究一个真正的直方图替换。

参考:https://github.com/tensorflow/tensorflow/tree/r0.9/tensorflow/tensorboard

https://blog.csdn.net/jay100500/article/details/73006672


猜你喜欢

转载自blog.csdn.net/Softdiamonds/article/details/80378563