Tensorflow Summary用法学习笔记


Posted in Python onJanuary 10, 2020

最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。

其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。

而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在tensorboard显示。

tf.summary有诸多函数:

1、tf.summary.scalar

用来显示标量信息,其格式为:

tf.summary.scalar(tags, values, collections=None, name=None)

例如:tf.summary.scalar('mean', mean)

一般在画loss,accuary时会用到这个函数。

2、tf.summary.histogram

用来显示直方图信息,其格式为:

tf.summary.histogram(tags, values, collections=None, name=None)

例如: tf.summary.histogram('histogram', var)
一般用来显示训练过程中变量的分布情况

3、tf.summary.distribution
分布图,一般用于显示weights分布

4、tf.summary.text
可以将文本类型的数据转换为tensor写入summary中:

例如:

text = """/a/b/c\\_d/f\\_g\\_h\\_2017"""
summary_op0 = tf.summary.text('text', tf.convert_to_tensor(text))

5、tf.summary.image

输出带图像的probuf,汇总数据的图像的的形式如下: ' tag /image/0', ' tag /image/1'...,如:input/image/0等。

格式:tf.summary.image(tag, tensor, max_images=3, collections=None, name=Non

6、tf.summary.audio

展示训练过程中记录的音频

7、tf.summary.merge_all

merge_all 可以将所有summary全部保存到磁盘,以便tensorboard显示。如果没有特殊要求,一般用这一句就可一显示训练时的各种信息了。

格式:tf.summaries.merge_all(key='summaries')

8、tf.summary.FileWriter

指定一个文件用来保存图。

格式:tf.summary.FileWritter(path,sess.graph)

可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中

Tensorflow Summary 用法示例:

tf.summary.scalar('accuracy',acc)          #生成准确率标量图 
merge_summary = tf.summary.merge_all() 
train_writer = tf.summary.FileWriter(dir,sess.graph)#定义一个写入summary的目标文件,dir为写入文件地址 
......(交叉熵、优化器等定义) 
for step in xrange(training_step):         #训练循环 
  train_summary = sess.run(merge_summary,feed_dict = {...})#调用sess.run运行图,生成一步的训练过程数据 
  train_writer.add_summary(train_summary,step)#调用train_writer的add_summary方法将训练过程以及训练步数保存

此时开启tensorborad:

tensorboard --logdir=/summary_dir

便能看见accuracy曲线了。

另外,如果我不想保存所有定义的summary信息,也可以用tf.summary.merge方法有选择性地保存信息:

9、tf.summary.merge

格式:tf.summary.merge(inputs, collections=None, name=None)

一般选择要保存的信息还需要用到tf.get_collection()函数

示例:

tf.summary.scalar('accuracy',acc)          #生成准确率标量图 
merge_summary = tf.summary.merge([tf.get_collection(tf.GraphKeys.SUMMARIES,'accuracy'),...(其他要显示的信息)]) 
train_writer = tf.summary.FileWriter(dir,sess.graph)#定义一个写入summary的目标文件,dir为写入文件地址 
......(交叉熵、优化器等定义) 
for step in xrange(training_step):         #训练循环 
  train_summary = sess.run(merge_summary,feed_dict = {...})#调用sess.run运行图,生成一步的训练过程数据 
  train_writer.add_summary(train_summary,step)#调用train_writer的add_summary方法将训练过程以及训练步数保存

使用tf.get_collection函数筛选图中summary信息中的accuracy信息,这里的

tf.GraphKeys.SUMMARIES  是summary在collection中的标志。

当然,也可以直接:

acc_summary = tf.summary.scalar('accuracy',acc)          #生成准确率标量图 
merge_summary = tf.summary.merge([acc_summary ,...(其他要显示的信息)]) #这里的[]不可省

如果要在tensorboard中画多个数据图,需定义多个tf.summary.FileWriter并重复上述过程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
Python生成随机密码
Mar 10 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
python字符串查找函数的用法详解
Jul 08 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 Python
python内置模块之上下文管理contextlib
Jun 14 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 #Python
python numpy数组复制使用实例解析
Jan 10 #Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 #Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 #Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 #Python
python ubplot使用方法解析
Jan 10 #Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 #Python
You might like
用PHP制作的意见反馈表源码
2007/03/11 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php简单实现快速排序的方法
2015/04/04 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
jquery实现从数组移除指定的值
2015/06/24 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
python3实现猜数字游戏
2020/12/07 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
应届生财务管理求职信
2013/11/06 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
美容院考勤制度
2014/01/30 职场文书
医师定期考核实施方案
2014/05/07 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
法定授权委托证明书
2014/09/27 职场文书
思想作风建设心得体会
2014/10/22 职场文书
山楂树之恋观后感
2015/06/11 职场文书
新学期开学标语2015
2015/07/16 职场文书
新学期主题班会
2015/08/17 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis