TensorFlow tensorBoard初步

2021-04-06  本文已影响0人  1037号森林里一段干木头

简介:(从官网来的介绍)TensorBoard 是用于提供机器学习工作流程期间所需的测量和可视化的工具。 它使您能够跟踪实验指标,例如损失和准确性,可视化模型图,将嵌入物投影到较低维度的空间等等。
对我来说学习新的东西总喜欢从例子入手,就像学习编程语言不管懂不懂先来一个hello world!。这个例子从一个线性回归问题入手,用tensorboard做可视化,tensorflow==1.15。

1.线性回归代码

tf_linear_regression.py

#!/usr/local/bin/python3
# -*- coding: UTF-8 -*-

import numpy as np
import tensorflow as tf


def generate_sample_data(numPoints=100, weight=10, bias=26):
    """ 生成样本数据。使之符合 y = weight * x + bias """

    # numPoints : 样本数据的个数,默认是100个
    # bias : 偏置项,为了体现随机性,在0.8 bias到1.2 bias之间随机波动
    # weight :  权重
    x_data = np.random.rand(numPoints)
    y_data = x_data * weight + bias * \
        tf.random_uniform(shape=[100], minval=0.8, maxval=1.2)

    return x_data, y_data


def caculate_loss(y_data, y_prediction):
    """ 通过梯度下降法,来对参数进行调整 """

    # tf.square(y_data - y_prediction),求期望值与实际值差的平方
    # tf.sqrt(),求开方, 可以对Tensor操作
    # tf.reduce_mean(), 求平均值,对Tensor操作
    loss = tf.reduce_mean(tf.sqrt(tf.square(y_data - y_prediction)))

    # 记录loss的数值变化,记录到日志中,可以通过TensorBoard来查看
    tf.summary.scalar('loss', loss)
    return loss


def gradient_descent(learn_rate, loss):
    """ 使用梯度下降法优化器,来对参数进行优化(调整) """

    # 优化的目标是最小化损失(loss)
    optimizer = tf.train.GradientDescentOptimizer(learn_rate)
    return optimizer.minimize(loss)


def linear_regression():
    """ 线性回归函数,入口函数 """

    # 随机生成100个样本数据,总体上服从权重为10、偏执项为25
    x_data, y_data = generate_sample_data(100, 10, 25)

    # 生成一个权重变量,取[-1.0, 1.0)的一个随机值
    weight = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name="weight")

    # 将权重也记录到日志中(直方图),可以通过TensorBoard来查看
    tf.summary.histogram('weight', weight)

    # 将偏置项也记录到日志中(直方图),可以通过TensorBoard来查看
    bias = tf.Variable(tf.zeros([1]), name="bias")
    tf.summary.histogram('bias', bias)

    y_prediction = x_data * weight + bias

    loss = caculate_loss(y_data, y_prediction)
    # 采用梯度下降法调整权重,学习率(learn_rate)设置为0.5
    train = gradient_descent(0.05, loss)

    # 初始化变量
    init = tf.global_variables_initializer()
    with tf.Session() as sess:
        # 将之前所有的想要保存到日志中的summary合并起来
        merged = tf.summary.merge_all()
        # 创建一个summary文件写入对象
        writer = tf.summary.FileWriter("./logs/", sess.graph)
        sess.run(init)

        for step in range(2000):
            sess.run(train)

            # 计算合并后的所有变量,并且,将他们写到日志中,供TensorBoard展示
            merged_summary = sess.run(merged)
            writer.add_summary(merged_summary, step)
            if step % 10 == 0:
                print("y={:.2f}x+{:.2f}".format(sess.run(weight)
                                                [0], sess.run(bias)[0]))


# 借助TensorFlow实现线性回归的例子
linear_regression()

2.tensorboard可视化

在运行上述代码后会自动生成一个logs文件夹

image.png
在命令行窗口输入tensorboard --logdir ./logs,
image.png
现在把它输出的地址"http://Hello:6006/"输入到浏览器中就可以看到了
上一篇下一篇

猜你喜欢

热点阅读