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,就会看到可视化界面