Tensorflow 可视化 Tensorboard2 训练过程
来源:互联网 发布:淘宝排查店铺申诉入口 编辑:程序博客网 时间:2024/06/04 18:20
TesorBorad除了可以可视化整个神经网络结构的过程以外 tensorboard还可以可视化训练过程( b w 变化过程)。
下图展示不同标签显示的不同数据过程
显示训练过程的关键方法
层中的变化数据会在DISTRIBUTIONS 和 HISTOGRAMS 里面出现
tensorflow中提供了tf.summary.histogramy()方法,用来绘制图片, 第一个参数是图表的名称, 第二个参数是图表要记录的变量
tf.summary.histogram(layer_name+”/Weights”,Weights)
loss 和其他参数不一样 loss是在tesnorBorad 的SCALARS下面的, 这是由于我们使用的是* tf.summary.scalar() *方法.
with tf.name_scope("loss"): loss =tf.reduce_mean(tf.reduce_sum(tf.square(y_input - layer_output),reduction_indices=[1]),name = "loss")#二者差的平方求和再取平均 tf.summary.scalar("loss",loss)
接下来, 开始合并打包。* tf.summary.merge_all() *方法会对我们所有的 summaries 合并到一起. 因此在原有代码片段中添加:
with tf.Session() as sess: #合并打包 summary 到文件中 merged = tf.summary.merge_all() #把整个框架加载到文件中去,在通过浏览器观看这个文件 sess.graph 收集信息,并放在该文件中 writer = tf.summary.FileWriter("logs/",sess.graph) sess.run(init) #merged 也是需要run 才能发挥作用的,所以在for循环中写下 for i in range(1000): sess.run(train_step, feed_dict={x_input:x_data,y_input:y_data}) if i% 50: result = sess.run(merged,feed_dict={x_input:x_data,y_input:y_data}) #返回一个 summary #将summary 放进 writer 里面 writer.add_summary(result,i)
完整代码 :
#coding:utf-8import tensorflow as tf import numpy as npimport matplotlib.pyplot as plt #pyhton中输出结果可视化模块#定义添加神经层的函数def add_layer(),它有四个参数:#输入值、输入的大小、输出的大小和激励函数,我们设定默认的激励函数是Nonedef add_layer(inputs,input_size,output_seiz,n_layer,activation_function = None): layer_name = "layer%s" %n_layer with tf.name_scope("layer_name"): #开始定义weights和biases with tf.name_scope('Weights'): Weights = tf.Variable(tf.random_normal([input_size,output_seiz]),name = "W")#in_size行, out_size列的随机变量矩阵 tf.summary.histogram(layer_name+"/Weights",Weights) #添加后可以观看变化的变量 #机器学习中,biases的推荐值不为0,所以我们这里是在0向量的基础上又加了0.1 with tf.name_scope('Biases'): biases = tf.Variable(tf.zeros([1,output_seiz])+0.1,name = "b") tf.summary.histogram(layer_name+"/Biases",biases) #定义神经网络未激活的值。tf.matmul()是矩阵的乘法。 with tf.name_scope('Wx_plus_b'): Wx_plus_b = tf.matmul(inputs,Weights)+biases tf.summary.histogram(layer_name+"/Wx_plus_b",Wx_plus_b) #当activation_function——激励函数为None时,输出就是当前的预测值——Wx_plus_b, #不为None时,就把Wx_plus_b传到activation_function()函数中得到输出 if activation_function is None: # None 表示线性关系 无需激励函数 output_seiz = Wx_plus_b else: output_seiz = activation_function(Wx_plus_b) # 返回输出 添加一个神经层的函数——def add_layer()就定义好了。 tf.summary.histogram(layer_name+"/output_seiz",output_seiz) #添加后可以观看变化的变量 return output_seizx_data = np.linspace(-1,1,300)[:,np.newaxis] #-1到1这个区间里有300个单位,维度 二维noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32) #噪点y_data = np.square(x_data)-0.5 #x_data的二次放 - 0.5#输入with tf.name_scope("inputs_layer"): x_input = tf.placeholder(tf.float32,[None,1],name = "x_input") y_input = tf.placeholder(tf.float32,[None,1],name = "y_input")#简单的三层神经网络:# 输入层1个神经元 | 隐藏层假设10个神经元 | 输出层1个神经元#定义隐藏层layer_hint = add_layer(x_input,1,10,n_layer = 1,activation_function = tf.nn.relu)#定义输出层layer_output = add_layer(layer_hint,10,1,n_layer =2,activation_function = None)with tf.name_scope("loss"): loss =tf.reduce_mean(tf.reduce_sum(tf.square(y_input - layer_output),reduction_indices=[1]),name = "loss")#二者差的平方求和再取平均 tf.summary.scalar("loss",loss)#每一个练习的步骤 通过 优化器以0.1的学习效率对误差进行更正提升,下一次就会有更好的结果。with tf.name_scope("train_step"): train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#初始init = tf.global_variables_initializer()with tf.Session() as sess: #合并打包 summary 到文件中 merged = tf.summary.merge_all() #把整个框架加载到文件中去,在通过浏览器观看这个文件 sess.graph 收集信息,并放在该文件中 writer = tf.summary.FileWriter("logs/",sess.graph) sess.run(init) # #先生成图片框 # fig = plt.figure() # ax = fig.add_subplot(1,1,1)#做连续性的画图 # #plot上真实数据 # ax.scatter(x_data,y_data) # plt.ion() # #打印输出 # plt.show() for i in range(1000): sess.run(train_step, feed_dict={x_input:x_data,y_input:y_data}) if i% 50: result = sess.run(merged,feed_dict={x_input:x_data,y_input:y_data}) #返回一个 summary #将summary 放进 writer 里面 writer.add_summary(result,i) # try: # #抹去上面一条线 # ax.lines.remove(lines[0]) # except Exception: # pass # #显示出预测数据 # prediction_value = sess.run(layer_output,feed_dict={x_input:x_data}) # #通过曲线形式plot上去 宽度为5的红色的线 # lines = ax.plot(x_data, prediction_value, 'r-', lw=5) # #暂停0.1秒 # plt.pause(0.1) # print sess.run(loss,feed_dict={x_input:x_data,y_input:y_data})
程序运行完毕之后, 会产生logs目录 , 使用命令 tensorboard –logdir logs
就可以在浏览器中查看数据的训练过程了。
阅读全文
0 0
- Tensorflow 可视化 Tensorboard2 训练过程
- tensorflow笔记:模型的保存与训练过程可视化
- tensorflow笔记:模型的保存与训练过程可视化
- tensorflow笔记:模型的保存与训练过程可视化
- TensorFlow在MNIST中的应用-训练过程的可视化
- TensorFlow学习笔记(四):Tensorflow网络构建和TensorBoard进行训练过程可视化
- caffe训练过程中的可视化
- tensorflow之MNIST手写字符集训练可视化
- TensorFlow神经网络的训练过程
- Adaboost算法的可视化训练过程
- YOLO模型训练可视化训练过程中的中间参数
- YOLO模型训练可视化训练过程中的中间参数
- tensorflow训练过程的日志与监控
- Tensorflow: 可视化
- TensorFlow 可视化
- tensorflow 学习笔记6 TensorBoard可视化神经网络过程
- tensorflow学习笔记(六):cnn过程可视化
- tensorflow+python MNIST数据抽样可视化+前向运算过程
- 【笔试】求 最长公共子序列 和 最长公共子串的长度
- 看完笨办法学python
- 今日头条2017春招笔试题——所有查询句子中与给定段落单词匹配量最多的句子
- 图像缩放
- Redis 事务
- Tensorflow 可视化 Tensorboard2 训练过程
- 【动手学深度学习】在线中文教程
- Maven实战(一) eclipse构建maven的web项目
- npm run webpack 报错找不到啥啥依赖
- POJ3087 Shuffle'm Up —— 打表找规律 / map判重
- SPOJ104:Highways(矩阵树定理)
- 设计模式之单例模式(一)
- (HDU
- How to fix OpenGL ES application crashes when moving to the background