tensorflow中summary操作
tf中 tensorboard 工具通过读取在网络训练过程中保存到本地的日志文件实现数据可视化,日志数据保存主要用到 tf.summary 中的方法。
tf.summary中summary是tf中的一个py文件,位置在 '/tensorflow/python/summary/' 文件夹下,提供了像tf.summary.scalar、tf.summary.histogram 等方法,用来把graph图中的相关信息,如结构图、学习率、准确率、Loss等数据转换成 protocol buffer 数据格式,然后再调用 tf.summary.FileWriter 方法把这些数据写入到本地硬盘,之后就可以借用 tensorboard 工具可视化这些数据。
标量数据汇总和记录
标量,单个数值保存用 tf.summary.scalar,一般用来保存loss,accuary,学习率等数据,比较常用。
tf.summary.scalar(name, tensor, collections=None, family=None)
- name: 给保存的数据的命名;
- tensor: 要保存的tensor,在scalar函数中应该是一个标量,如当前的学习率、Loss等;
- collections: 定义保存的数据归于哪个集合,默认的集合是 '[GraphKeys.SUMMARIES]';
- family:可选参数,如果定义,在Tensorboard显示的时候,将作为前缀加在变量名前;
变量var的直方图汇总和记录
tf.summary.histogram 输出带直方图的汇总的protobuf 数据。
tf.summary.histogram(tag, values, collections=None, name=None)
变量var的图像汇总和记录
tf.summary.image(name, tensor, max_outputs=3, collections=None, family=None)
合并汇总
使用 tf.summary.merge(inputs, collections=None, name=None) 对指定的汇总进行合并。
使用 tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES) 对所有的汇总进行合并。
启动所有的汇总操作
merged = tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES)
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
数据写入本地磁盘
数据写入本地使用 tf.summary.FileWriter 类中的方法。
summary_writer = tf.summary.FileWriter(args.log_dir, sess.graph)
构造函数:
__init__(self,
logdir,
graph=None,
max_queue=10,
flush_secs=120,
graph_def=None,
filename_suffix=None)
- logdir:事件文件保存目录
- graph: graph(图)对象,例如 sess.graph
- max_queue: 队列中事件和概要的最大数量,默认为10;
- flush_secs: 事件和概要保存到本地磁盘的间隔,默认120S;
- graph_def: 旧版本的graph,已弃用;
- filename_suffix: 可选参数,事件文件的后缀。
事件和汇总加入summary_writer
summary_writer.add_run_metadata(run_metadata, 'step%03d'% i)
summary_writer.add_summary(summary, i)
tensorflow中summary操作的更多相关文章
- 记录:TensorFlow 中的 padding 方式
TensorFlow 中卷积操作和池化操作中都有一个参数 padding,其可选值有 ['VALID', 'SAME']. 在 TensorFlow 文档中只是给出了输出张量的维度计算方式,但是并没有 ...
- Tensorflow中的padding操作
转载请注明出处:http://www.cnblogs.com/willnote/p/6746668.html 图示说明 用一个3x3的网格在一个28x28的图像上做切片并移动 移动到边缘上的时候,如果 ...
- 第十四节,TensorFlow中的反卷积,反池化操作以及gradients的使用
反卷积是指,通过测量输出和已知输入重构未知输入的过程.在神经网络中,反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积神经网络,没有学习训练的过程.反卷积有着许多特别的应用,一般可以用 ...
- python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?
Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量 ...
- [翻译] Tensorflow中name scope和variable scope的区别是什么
翻译自:https://stackoverflow.com/questions/35919020/whats-the-difference-of-name-scope-and-a-variable-s ...
- tensorflow中slim模块api介绍
tensorflow中slim模块api介绍 翻译 2017年08月29日 20:13:35 http://blog.csdn.net/guvcolie/article/details/77686 ...
- C# winform编程中多线程操作控件方法
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...
- 小技巧:SystemTray中进行操作提示
SystemTray中进行操作提示在wp中应用比较广泛,截图如下. 实现方法也十分简单 1.xaml代码中写入: shell:SystemTray.IsVisible="True" ...
- [开发技巧]·TensorFlow中numpy与tensor数据相互转化
[开发技巧]·TensorFlow中numpy与tensor数据相互转化 个人主页–> https://xiaosongshine.github.io/ - 问题描述 在我们使用TensorFl ...
随机推荐
- python selenium webdriver方法封装(find_element_by)
下面是对find_element_by_就行了封装,封装之后的高级方法就是getElement() 下面是具体的代码: def getElement(self, selector): "&q ...
- vuex的一个坑
1 error in callback for watcher "function (){ return this._data.$$state }" 用深拷贝解决 2 接口依赖: ...
- Educational Codeforces Round 55 (Rated for Div. 2) Solution
A. Vasya and Book Solved. 三种方式取$Min$ #include <bits/stdc++.h> using namespace std; #define ll ...
- python weekday()函数
def weekday(self): """Return the day of the week as an integer, where Monday is 0 and ...
- Python: 大型数组运算
需要在大数据集(比如数组或网格) 上面执行计算,涉及到数组的重量级运算操作,可以使用NumPy 库. 下面是一个简单的小例子,展示标准列表对象和NumPy 数组对象之间的差别 >>> ...
- JAVA面试题整理(7)-Redis
Redis面试题汇总 1.Redis用过哪些类型数据,以及Redis底层怎么实现 分析:是不是觉得这个问题很基础,其实我也这么觉得.然而根据面试经验发现,至少百分八十的人答不上这个问题.建议,在项目中 ...
- 自动化运维工具SaltStack安装配置
SaltStack是一种全新的基础设置管理方式,部署轻松,在几分钟内可运作起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯.通过部署SaltStack环境,我们可以在成千上万台服务 ...
- Java序列化(Serialization)
关于Java的序列化的文章在网上已经够多了,在这里写关于Java序列化的文章是对自己关于这方面的的一种总结,结合以前的开发经验与网上的资料,写了这篇文章,对自己是有着巩固记忆的作用,也希望能够对大家有 ...
- TCP协议和UDP协议区别
tcp协议:可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览器:文件传输程序 udp协议:不可靠的.无连接的服务,传 ...
- 定义 S4 泛型函数
在前面的例子中,我们可以看出 S4 比 S3 更正式,因为 S4 类有类的正式定义.同样, S4 的泛型函数也更加正式.在一个关于形状的例子中,我们定义了一系列具有继承关系的 S4 类,只是继承关系的 ...