TensorFlow学习--TensorBoard神经网络可视化
标签: tensorflow
本机:[ubuntu16.04 + Pycharm + python2.7 + tensorflow1.3.0 ]
TensorBoard是TensorFlow的一套可视化工具,通过读取 TensorFlow 的事件文件来运行.
一般是先创建要汇总的图(graph),然后选择需要在那些节点(op)进行汇总(summary)操作.
例子(具体见代码注释):
# TensorBoard可视化
import tensorflow as tf
import numpy as np
# 添加一个图层并返回此图层的输出
def add_layer(inputs, in_size, out_size, n_layer, activation_function=None):
layer_name = 'layer%s' % n_layer
# name_scope:域重名即当命名域重名的时候自动对重名的域打上序号
with tf.name_scope('layer'):
with tf.name_scope('weights'):
# 构建权重:in_size*out_size大小的矩阵
Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W')
# 生成直方图summary(name:生成节点的名称;values:一个真正的数字Tensor)
tf.summary.histogram(layer_name + '/weights', Weights)
with tf.name_scope('biases'):
# 构建偏执:1*out_size的矩阵
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b')
# 输出具有直方图的summary协议缓冲区,添加直方图摘要可以使数据可视化
tf.summary.histogram(layer_name + '/biases', biases)
with tf.name_scope('Wx_plus_b'):
# # weights*x + biases
Wx_plus_b = tf.add(tf.matmul(inputs, Weights), biases, name='Wxb')
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
# 添加直方图摘要可以使数据可视化
tf.summary.histogram(layer_name + '/outputs', outputs)
return outputs
# 定义x,y的占位符作为将要输入神经网络的变量
with tf.name_scope('inputs'):
xs = tf.placeholder(tf.float32, [None, 1], name='x_input')
ys = tf.placeholder(tf.float32, [None, 1], name='y_input')
# 构建500个处于-1到1的点,并将1维数组转换为一个500*1的2维数组
x_data = np.linspace(-1.0, 1.0, 500, dtype=np.float32)[:, np.newaxis]
# 加入噪声使它与x_data的维度一致,且服从N(0,0.2)
noise = np.random.normal(0.0, 0.2, x_data.shape)
y_data = np.power(x_data, 3) + 2 + noise
# 添加隐藏层,**函数用Relu()
l1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu)
# 添加输出层
prediction = add_layer(l1, 10, 1, n_layer=2, activation_function=None)
# 预测与实际数据之间的误差
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), 1), name='L')
tf.summary.scalar('loss', loss)
with tf.name_scope('train'):
# 以0.1的效率最小化损失
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 对所有变量进行初始化
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
# 合并在默认图表中收集的所有摘要 如果没有收集摘要则返回无,否则返回标量
# 将之前定义的所有summary op整合到一起
merged = tf.summary.merge_all()
# 创建一个FileWriter和一个事件文件,向硬盘tmp文件夹下写summary数据
writer = tf.summary.FileWriter('/tmp/logs', sess.graph)
for i in range(1500):
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
if i % 100 == 0:
print(i, sess.run(loss, feed_dict={xs: x_data, ys: y_data}))
result, prediction_value = sess.run([merged, prediction], feed_dict={xs: x_data, ys: y_data})
writer.add_summary(result, i)
输出:
(0, 2.1827598)
(100, 0.049588822)
(200, 0.04671485)
(300, 0.043870702)
(400, 0.042638462)
(500, 0.041867945)
(600, 0.04136683)
(700, 0.040885087)
(800, 0.040453255)
(900, 0.04010734)
(1000, 0.039749168)
(1100, 0.039491516)
(1200, 0.039256092)
(1300, 0.039072316)
(1400, 0.038935676)
打开ubuntu终端,输入:
tensorboard --logdir='/tmp/logs'
可得到如图所示:
在浏览器中打开所示的
http://*************:6006
即可启动TensorBoard:
可以在SCALARS中看到loss随着训练step的增加逐渐减小的趋势
可以在GRAPHS中看到神经网络的结构
以及DISTRIBUTIOUS
HISTOGRAMS
智能推荐
Tensorflow【实战Google深度学习框架】全连接神经网络以及可视化
文章目录 1 可视化 神经网络的二元分类效果 2 全连接神经网络 3 TensorFlow搭建一个全连接神经网络 3.1 读取MNIST数据 3.2 建立占位符 3.3 建立模型 3.4 正确率 3.5 训练模型 3.6 完整代码 4 参考: 1 可视化 神经网络的二元分类效果 ConvnetJS-地址 可以从这里修改层数,和神经元数量,观察分类效果。 这里可以设置不同的样本。 2 全连接神经网络...
Tensorflow基础代码报错学习笔记6——搭建神经网络(2)可视化显示
原教程地址 这一节利用matplot库讲了可视化显示真实数据与预测数据 代码根据上一篇的内容进行添加和修改,为了方便看,我先只把修改的部分代码贴出来: 原代码及结果 1.首先引入matplot库 2.然后显示真实数据 得到结果如图所示 3显示连续的预测数据 对原来代码的if部分进行修改,注释掉原来打印语句: 在"plt.show()“语句上方添加"plt.ion()...
TensorFlow学习5:TensorBoard可视化
环境:win10;tensorboard1.7.0 TensorBoard打开步骤 1.首先创建一个简单的网络: 2.找到你写入log文件的地址 3.打开终端键入:tensorboard --logdir=C:\Users\zhx93\Documents\py\logs 后面为log文件的地址 你将得到: 4.将上面给出的地址在浏览器中打开即可 TensorBoard的使用 TensorBoard...
tensorflow学习之tensorboard可视化
tensorboard 功能 可视化的好帮手 Event: 展示训练过程中的统计数据(最值,均值等)变化情况 Image: 展示训练过程中记录的图像 Audio: 展示训练过程中记录的音频 Histogram: 展示训练过程中记录的数据的分布图 原理 在运行过程中,记录结构化的数据 运行一个本地服务器,监听6006端口 请求时,分析记录的数据,绘制 1.Histogram: 展示训练过程中记录的数...
猜你喜欢
MNIST多元多层神经网络及tensorboard可视化展示
单个神经网络的问题 对于单神经元,想要解决MNIST问题,无论如何调节神经网络超参数,模型的准确率仅仅在91%左右。单个神经元的处理能力是有限的,所以尝试构建多层多神经元的网络,看能否提高网络的准确率。同时希望尝试对tensorboard做一些进阶,训练过程可视化有助于调参。 定义全连接层函数 由于构建多层网络,为了能够让组网更加清晰,定义一个多元线性回归的全连接层函数,该函数希望能够通用,全连接...
【day7】python/TensorBoard神经网络可视化。
搭建图纸 首先从 Input 开始: 对于input我们进行如下修改: 首先,可以为xs指定名称为x_in: 然后再次对ys指定名称y_in: 这里指定的名称将来会在可视化的图层inputs中显示出来 使用with tf.name_scope('inputs')可以将xs和ys包含进来,形成一个大的图层,图层的名字就是with tf.name_scope()方法里的参数。 接下...
冒泡排序,及改进方式,性能优化400%>>>附图解加源码
首先源码附上,源码中带有注释,看不懂没关系,源码后面附带图解,最后附上代码效率提升图 源码如下: 方案一:其实实现很简单,两层循环,每次内层迭代出最大的一个值,将其放入数组最后一个位置,外层循环的末端便往前移一位。其原理如下图 方案一代码块: 方案二:优化改进 仔细观察上面的图,我们不难发现当迭代到图下这样的情况时,其实已经全排序好了,但是我们还是需要对它进行1,2,3,4,5,6的迭代,这些情况...
css3常用选择器
先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...
python is not set from command line or npm configuration
问题 猜测原因 python版本冲突 解决方案 去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径 我的是 C:\\Python27\\python.exe 说明项目里用的还是py...
