美文网首页
TensorFlow tensorBoard初步

TensorFlow tensorBoard初步

作者: 1037号森林里一段干木头 | 来源:发表于2021-04-06 16:54 被阅读0次

    简介:(从官网来的介绍)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/"输入到浏览器中就可以看到了
    • 损失变化


      image.png
    • 网络结构


      image.png
    • 参数变化


      image.png

    相关文章

      网友评论

          本文标题:TensorFlow tensorBoard初步

          本文链接:https://www.haomeiwen.com/subject/zvaskltx.html