TensorFlow -- TensorBoard可视化

1.tensorBoard
执行下列程序

# -*-coding:utf-8 -*-

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# np.linspace()函数。在指定的间隔内返回均匀间隔的数字
train_X = np.linspace(-1, 1, 100)
# Y的值。 
# np.random.randn(*train_X.shape) 等价与np.random.randn(100)
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3

# x和y为占位符,一个代表x的输入;另一个代表对应的真实值y
X = tf.placeholder('float')
Y = tf.placeholder('float')

# 模型参数。w被初始化程[-1,1]的随机数,b的初始化为0,都是一维的数字
W = tf.Variable(tf.random_normal([1]), name='weight')

b = tf.Variable(tf.zeros([1]), name='bias')

# 前向结构
# tf.multiply()函数。两个数相乘
z = tf.multiply(X, W) + b
# 将预测值以直方图的形式显示
tf.summary.histogram('z', z)

# 反向优化
# 定义一个cost,等于生成值与真实值的平方差
cost = tf.reduce_mean(tf.square(Y - z))
# 将损失以标量形式显示
tf.summary.scalar('loss_fuction', cost)
# 定义一个学习率,代表调整参数的速度
# 值越大,表示调整的速度越快,但不精确;值越小,表示调整的速度越慢,但精度高
learning_rate = 0.01
# GradientDescentOptimizer()。是一个封装好的梯度下降函数
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

# 初始化所有变量
init = tf.global_variables_initializer()
# 定义参数
training_epochs = 20
display_step = 2

# 启动session
with tf.Session() as sess:
    sess.run(init)

    # 合并所有的summary
    merged_summary_op = tf.summary.merge_all()
    # 创建summary_write,用于写文件
    summary_write = tf.summary.FileWriter('log/mnist_with_summaries', sess.graph)

    # 向模型中输入数据
    for epoch in range(training_epochs):
        for(x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X:x, Y:y})

        # 生成summary
        summary_str = sess.run(merged_summary_op, feed_dict={X:x, Y:y})
        # 将summary写入文件
        summary_write.add_summary(summary_str, epoch)

     # 显示训练中的详细信息
    if epoch % display_step == 0:
        loss = sess.run(cost, feed_dict={X:train_X, Y:train_Y})
        print("Epoch:", epoch+1, "cost=", loss, "W=", sess.run(W), "b=", sess.run(b))
        if not (loss == "NA"):
            plotdata["batchsize"].append(epoch)
            plotdata["loss"].append(loss)
    print("Finished!")
    print("cost=", sess.run(cost, feed_dict={X:train_X, Y:train_Y}), "w=", sess.run(W), "b=", sess.run(b))

执行完程序后来到summary日志的上级路径下,输入以下命令

tensorBoard --logdir mnist_with_summaries/

然后打开浏览器,输入127.0.0.1:6006,就会看到可视化界面

猜你喜欢

转载自blog.csdn.net/jian15093532273/article/details/80762478