TensorFlow入门(八)tensorboard 的一个简单示例
来源:互联网 发布:企业qq群发软件 编辑:程序博客网 时间:2024/05/21 02:53
关于 tensorboard 的一点心得
- 1.一定要学会使用 tf.variable_scope() 和 tf.name_scope(),否则稍微复杂一点的网络都会乱七八糟。你可以通过上图中的 graph 来看看自己构建的网络结构。
- 2.使用 tensorboard 来看 training 和 validation 的 loss 和 accuracy 变化对于调参非常非常有帮助。经验足的炼丹选手通过 tensorboard 可以很容易地判断出 batch_size 和 learning rate 设置合不合理。
想要了解更多,可以参考详解 TensorBoard-如何调参
例1 - 在 tensorboard 中记录 tensor 的变化。
import tensorflow as tfconfig = tf.ConfigProto()config.gpu_options.allow_growth = Truesess = tf.Session(config=config)import osimport shutil"""TensorBoard 简单例子。tf.summary.scalar('var_name', var) # 记录标量的变化tf.summary.histogram('vec_name', vec) # 记录向量或者矩阵,tensor的数值分布变化。merged = tf.summary.merge_all() # 把所有的记录并把他们写到 log_dir 中train_writer = tf.summary.FileWriter(log_dir + '/add_example', sess.graph) # 保存位置运行完后,在命令行中输入 tensorboard --logdir=log_dir_path(你保存到log路径)"""log_dir = 'summary/graph/'if os.path.exists(log_dir): # 删掉以前的summary,以免重合 shutil.rmtree(log_dir)os.makedirs(log_dir)print 'created log_dir path'with tf.name_scope('add_example'): a = tf.Variable(tf.truncated_normal([100,1], mean=0.5, stddev=0.5), name='var_a') tf.summary.histogram('a_hist', a) b = tf.Variable(tf.truncated_normal([100,1], mean=-0.5, stddev=1.0), name='var_b') tf.summary.histogram('b_hist', b) increase_b = tf.assign(b, b + 0.2) c = tf.add(a, b) tf.summary.histogram('c_hist', c) c_mean = tf.reduce_mean(c) tf.summary.scalar('c_mean', c_mean)merged = tf.summary.merge_all()writer = tf.summary.FileWriter(log_dir+'add_example', sess.graph)sess.run(tf.global_variables_initializer())for step in xrange(500): sess.run([merged, increase_b]) # 每步改变一次 b 的值 summary = sess.run(merged) writer.add_summary(summary, step)writer.close()
created log_dir path
例2: 分 train 和 test 两部分进行记录。
每隔10个step记录一次test结果。一般在网络训练过程中,我们都会隔一段时间跑一次 valid。
import tensorflow as tfimport osimport shutilimport numpy as npconfig = tf.ConfigProto()config.gpu_options.allow_growth = Truesess = tf.Session(config=config)"""TensorBoard 简单例子。tf.summary.scalar('var_name', var) # 记录标量的变化tf.summary.histogram('vec_name', vec) # 记录向量或者矩阵,tensor的数值分布变化。merged = tf.summary.merge_all() # 把所有的记录并把他们写到 log_dir 中train_writer = tf.summary.FileWriter(log_dir + '/train', sess.graph) # 保存位置test_writer = tf.summary.FileWriter(log_dir + '/test', sess.graph)运行完后,在命令行中输入 tensorboard --logdir=log_dir_path(你保存到log路径)"""log_dir = 'summary/graph2/'if os.path.exists(log_dir): # 删掉以前的summary,以免重合 shutil.rmtree(log_dir)os.makedirs(log_dir)print 'created log_dir path'a = tf.placeholder(dtype=tf.float32, shape=[100,1], name='a')with tf.name_scope('add_example'): b = tf.Variable(tf.truncated_normal([100,1], mean=-0.5, stddev=1.0), name='var_b') tf.summary.histogram('b_hist', b) increase_b = tf.assign(b, b + 0.2) c = tf.add(a, b) tf.summary.histogram('c_hist', c) c_mean = tf.reduce_mean(c) tf.summary.scalar('c_mean', c_mean)merged = tf.summary.merge_all()train_writer = tf.summary.FileWriter(log_dir + '/train', sess.graph) # 保存位置test_writer = tf.summary.FileWriter(log_dir + '/test', sess.graph)sess.run(tf.global_variables_initializer())for step in xrange(500): if (step+1) % 10 == 0: _a = np.random.randn(100,1) summary, _ = sess.run([merged, increase_b], feed_dict={a: _a}) # 每步改变一次 b 的值 test_writer.add_summary(summary, step) else: _a = np.random.randn(100,1) + step*0.2 summary, _ = sess.run([merged, increase_b], feed_dict={a: _a}) # 每步改变一次 b 的值 train_writer.add_summary(summary, step)train_writer.close()test_writer.close()print('END!')
created log_dir pathEND!
训练完后,在summary目录下输入 tensorboard –logdir graph2 就能看到结果了。如下图所示:
from IPython.display import ImageImage('figs/graph2.png')
阅读全文
0 0
- TensorFlow入门(八)tensorboard 的一个简单示例
- tensorflow入门6 tensorboard的使用
- tensorflow入门Day3-TensorBoard
- Tensorflow深度学习笔记(八)-Tensorboard应用
- 简单的Tensorflow(7):tensorboard的简单使用
- tensorflow 的tensorboard使用
- TensorFlow自带的一个强大的可视化工具tensorboard
- 一个简单的Hibernate入门示例
- c3p0的一个简单入门示例
- Windows7启动TensorFlow的TensorBoard
- Tensorflow可视化----Tensorboard的使用
- Tensorflow实现Mnist的Tensorboard
- tensorflow tensorboard相关的资料
- Tensorflow(1) Tensorboard的用法
- Tensorflow 04: tensorboard的使用
- tensorflow之tensorboard的使用
- Tensorflow之TensorBoard的使用
- tensorflow笔记-tensorboard的使用
- mysql创建索引
- 最小二乘问题与线性回归中的最大似然估计等价
- JQuery移除指定元素
- golang基础-beego读取配置_输出log日志、tailf组件读取log、配置zookeeper_kafka、发送log至kafka
- 二叉树的建立与遍历
- TensorFlow入门(八)tensorboard 的一个简单示例
- vue的父子构造器
- 将HTML页面部分内容导出为PDF
- UE4蓝图节点翻译---Get Components by Class
- 在spring-mvc中使用aop进行业务日志的记录
- Maven 问题解决
- Json对象和Json字符串的区别,以及Springmvc接受json字符串类型。
- Class.forName()用法详解
- LintCode 83. 落单的数II