tensorflow tensorboard学习(转载1)
2017-05-05 16:13
483 查看
转载请注明作者:梦里风林
Github工程地址:https://github.com/ahangchen/GDLnotes
欢迎star,有问题可以到Issue区讨论
官方教程:
https://www.tensorflow.org/versions/master/how_tos/graph_viz/index.html
TensorFlow自带的一个强大的可视化工具
Event: 展示训练过程中的统计数据(最值,均值等)变化情况
Image: 展示训练过程中记录的图像
Audio: 展示训练过程中记录的音频
Histogram: 展示训练过程中记录的数据的分布图
运行一个本地服务器,监听6006端口
请求时,分析记录的数据,绘制
其中,
histogram_summary用于生成分布图,也可以用scalar_summary记录存数值
使用scalar_summary的时候,tag和tensor的shape要一致
name_scope可以不写,但是当你需要在Graph中体现tensor之间的包含关系时,就要写了,像下面这样:
在Graph中会体现为一个input_cnn_filter,可以点开,里面有weight和biases
用summary系列函数记录后,Tensorboard会根据graph中的依赖关系在Graph标签中展示对应的图结构
官网封装了一个函数,可以调用来记录很多跟某个Tensor相关的数据:
只有这样记录国max和min的Tensor才会出现在Event里面
Graph的最后要写一句这个,给session回调
这里的summary_dir存放了运行过程中记录的数据,等下启动服务器要用到
构造run_option和run_meta,在每个step运行session时进行设置:
注意要把merged拿回来,并且设置options
在每次训练时,记一次:
在每次验证时,记一次:
达到一定训练次数后,记一次meta做一下标记
注意这个python必须是安装了TensorFlow的python,tensorboard.py必须制定路径才能被python找到,logdir必须是前面创建两个writer时使用的路径
比如我的是:
使用python
然后在浏览器输入 http://127.0.0.1:6006 就可以访问到tensorboard的结果
修改前:
多分支graph
修改后:
单分支graph
多用with,进行包裹,这样才好看,正如官网说的,你的summary代码决定了你的图结构
不是所有的tensor都有必要记录,但是Variable和placeholder最好都用summary记录一下,也是为了好看
由于有了gradient的计算,所以与gradient计算相关的都会被拎出来,下次试一下用其他optimizer
我的CNN TensorBoard代码:cnn_board.py
觉得我的文章对您有帮助的话,不妨点个star?
Github工程地址:https://github.com/ahangchen/GDLnotes
欢迎star,有问题可以到Issue区讨论
官方教程:
https://www.tensorflow.org/versions/master/how_tos/graph_viz/index.html
TensorFlow自带的一个强大的可视化工具
功能
这是TensorFlow在MNIST实验数据上得到Tensorboard结果Event: 展示训练过程中的统计数据(最值,均值等)变化情况
Image: 展示训练过程中记录的图像
Audio: 展示训练过程中记录的音频
Histogram: 展示训练过程中记录的数据的分布图
原理
在运行过程中,记录结构化的数据运行一个本地服务器,监听6006端口
请求时,分析记录的数据,绘制
实现
在构建graph的过程中,记录你想要追踪的Tensor
with tf.name_scope('output_act'): hidden = tf.nn.relu6(tf.matmul(reshape, output_weights[0]) + output_biases) tf.histogram_summary('output_act', hidden)
其中,
histogram_summary用于生成分布图,也可以用scalar_summary记录存数值
使用scalar_summary的时候,tag和tensor的shape要一致
name_scope可以不写,但是当你需要在Graph中体现tensor之间的包含关系时,就要写了,像下面这样:
with tf.name_scope('input_cnn_filter'): with tf.name_scope('input_weight'): input_weights = tf.Variable(tf.truncated_normal( [patch_size, patch_size, num_channels, depth], stddev=0.1), name='input_weight') variable_summaries(input_weights, 'input_cnn_filter/input_weight') with tf.name_scope('input_biases'): input_biases = tf.Variable(tf.zeros([depth]), name='input_biases') variable_summaries(input_weights, 'input_cnn_filter/input_biases')
在Graph中会体现为一个input_cnn_filter,可以点开,里面有weight和biases
用summary系列函数记录后,Tensorboard会根据graph中的依赖关系在Graph标签中展示对应的图结构
官网封装了一个函数,可以调用来记录很多跟某个Tensor相关的数据:
def variable_summaries(var, name): """Attach a lot of summaries to a Tensor.""" with tf.name_scope('sum 4000 maries'): mean = tf.reduce_mean(var) tf.scalar_summary('mean/' + name, mean) with tf.name_scope('stddev'): stddev = tf.sqrt(tf.reduce_sum(tf.square(var - mean))) tf.scalar_summary('sttdev/' + name, stddev) tf.scalar_summary('max/' + name, tf.reduce_max(var)) tf.scalar_summary('min/' + name, tf.reduce_min(var)) tf.histogram_summary(name, var)
只有这样记录国max和min的Tensor才会出现在Event里面
Graph的最后要写一句这个,给session回调
merged = tf.merge_all_summaries()
Session 中调用
构造两个writer,分别在train和valid的时候写数据:train_writer = tf.train.SummaryWriter(summary_dir + '/train', session.graph) valid_writer = tf.train.SummaryWriter(summary_dir + '/valid')
这里的summary_dir存放了运行过程中记录的数据,等下启动服务器要用到
构造run_option和run_meta,在每个step运行session时进行设置:
summary, _, l, predictions = session.run([merged, optimizer, loss, train_prediction], options=run_options, feed_dict=feed_dict)
注意要把merged拿回来,并且设置options
在每次训练时,记一次:
train_writer.add_summary(summary, step)
在每次验证时,记一次:
valid_writer.add_summary(summary, step)
达到一定训练次数后,记一次meta做一下标记
train_writer.add_run_metadata(run_metadata, 'step%03d' % step)
查看可视化结果
启动TensorBoard服务器:python安装路径/python TensorFlow安装路径/tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory
注意这个python必须是安装了TensorFlow的python,tensorboard.py必须制定路径才能被python找到,logdir必须是前面创建两个writer时使用的路径
比如我的是:
/home/cwh/anaconda2/envs/tensorflow/bin/python /home/cwh/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow/tensorboard/tensorboard.py --logdir=~/coding/python/GDLnotes/src/convnet/summary
使用python
然后在浏览器输入 http://127.0.0.1:6006 就可以访问到tensorboard的结果
强迫症踩坑后记
之前我的cnn代码里有valid_prediction,所以画出来的graph有两条分支,不太清晰,所以只留了train一个分支修改前:
多分支graph
修改后:
单分支graph
多用with,进行包裹,这样才好看,正如官网说的,你的summary代码决定了你的图结构
不是所有的tensor都有必要记录,但是Variable和placeholder最好都用summary记录一下,也是为了好看
由于有了gradient的计算,所以与gradient计算相关的都会被拎出来,下次试一下用其他optimizer
我的CNN TensorBoard代码:cnn_board.py
参考资料
mnist_with_summaries.py觉得我的文章对您有帮助的话,不妨点个star?
相关文章推荐
- TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结
- Google TensorFlow学习笔记之Deep MNIST for Experts
- 学习TensorFlow,TensorBoard可视化网络结构和参数
- 深度学习之TensorFlow进阶教程一
- TensorFlow学习笔记----TensorBoard_2
- TensorFlow学习笔记----TensorBoard_1
- 代码解析深度学习系统编程模型:TensorFlow vs. CNTK
- 【tensorTensorFlow学习笔记】Mac+Linux虚拟机安装TensorFlow
- caffe/tensorflow中样本的label一定要从序号0开始标注--caffe学习(15)
- 在U盘里配置好主流深度学习框架及GPU环境theano\tensorflow\keras\caffe\cuda7.5
- [翻译]斯坦福CS 20SI:基于Tensorflow的深度学习研究课程笔记,Lecture note 2: TensorFlow Ops
- N卡双显卡电脑装ubuntu15.04并配置Anaconda+Tensorflow+cuda+cuDNN的深度学习环境
- 一图看懂深度学习框架对比----Caffe Torch Theano TensorFlow
- 深度学习GPU环境搭建:ubuntu16.04+GTX1070+Cuda8.0+tensorflow build from source
- TensorFlow官方教程学习 TensorFlow Mechanics 101
- 学习TensorFlow,TensorBoard可视化网络结构和参数
- [note] deep learning tensorflow lecture 2 notes 深度学习笔记 (2) 解决过拟合
- Tensorflow Neural Network初体验 - 让电脑自己学习艺术风格去处理图片
- TensorFlow学习笔记(6):TensorBoard之Embeddings
- [翻译]斯坦福CS 20SI:基于Tensorflow的深度学习研究课程笔记,Lecture note 4: How to structure your model in TensorFlow