https://blog.csdn.net/akadiao/article/details/79551180
https://blog.csdn.net/wgj99991111/article/details/84708255

在训练神经网络时,当需要查看一个张量在训练过程中值的分布情况时,可通过tf.summary.histogram()将其分布情况以直方图的形式在TensorBoard直方图仪表板上显示.

tf.summary.histogram

tf.summary.histogram():
输出一个直方图的Summary protocol buffer .
参数
name:生成的节点名称.作为TensorBoard中的一个系列名称.
values:一个实数张量.用于构建直方图的值.
collections:图形集合键的可选列表.添加新的summary操作到这些集合中.默认为GraphKeys.SUMMARIES.
family: summary标签名称的前缀,用于在Tensorboard上显示的标签名称.(可选项)

tf.summary.histogram()将输入的一个任意大小和形状的张量压缩成一个由宽度和数量组成的直方图数据结构.假设输入 [0.5, 1.1, 1.3, 2.2, 2.9, 2.99],则可以创建三个bin,分别包含0-1之间/1-2之间/2-3之间的所有元素,即三个bin中的元素分别为[0.5]/[1.1,1.3]/[2.2,2.9,2.99].
这样,通过可视化张量在不同时间点的直方图来显示某些分布随时间变化的情况.

示例
以下为tensorflow文档中提供的示例.在该例子中每次创建一个均值变化的正态分布(采样1000次),标准差为1,均值随循环次数的增加而增加.在直方图中可以看到每步均值的变化.

#!/usr/bin/python
# coding:utf-8# TensorBoard直方图仪表板
import tensorflow as tf
k = tf.placeholder(tf.float32)
# 创建一个均值变化的正态分布(由0到5左右)
mean_moving_normal = tf.random_normal(shape=[1000], mean=(5*k), stddev=1)
# 将该分布记录到直方图汇总中
tf.summary.histogram("normal/moving_mean", mean_moving_normal)
sess = tf.Session()
writer = tf.summary.FileWriter("/tmp/histogram_example")
summaries = tf.summary.merge_all()
# 设置一个循环并将摘要写入磁盘
N = 400
for step in range(N):k_val = step/float(N)summ = sess.run(summaries, feed_dict={k: k_val})writer.add_summary(summ, global_step=step)

通过在终端输入:

tensorboard --logdir=/tmp/histogram_example

可以在TensorBoard中查看结果.

直方图模式

其中,直方图模式有两种:OVERLAY和OFFSET.

OFFSET模式:


其中,横轴表示值,纵轴表示数量,每个切片显示一个直方图,切片按步骤(步数或时间)排列;旧的切片较暗,新的切片颜色较浅.如图,可以看到在第393步时,以4.91为中心的bin中有161个元素.
另外,直方图切片并不总是按步数或时间均匀分布,而是通过水塘抽样/reservoir sampling来抽取所有直方图的一个子集,以节省内存.

OVERLAY模式:


其中,横轴表示值,纵轴表示数量.各个直方图切片不再展开,而是全部绘制在相同的y轴上.这样不同的线表示不同的步骤(步数或时间).如图,可以看到在第5步时,以0.11为中心的bin中有183个元素.
OVERLAY模式用于直接比较不同直方图的计数.

多模式分布

直方图仪表板非常适合可视化多模式分布,通过连接两个不同正态分布(一个移动均值的正态分布和一个缩小方差的正态分布)的输出来构造一个简单的双峰分布.如下所示:

#!/usr/bin/python
# coding:utf-8import tensorflow as tf
k = tf.placeholder(tf.float32)
# 创建一个均值变化的正态分布
mean_moving_normal = tf.random_normal(shape=[1000], mean=(5*k), stddev=1)
# 将该分布记录到直方图summary中
tf.summary.histogram("normal/moving_mean", mean_moving_normal)
# 创建一个方差递减的正态分布
variance_shrinking_normal = tf.random_normal(shape=[1000], mean=0, stddev=1-(k))
# 记录分配
tf.summary.histogram("normal/shrinking_variance", variance_shrinking_normal)
# 将两种分布组合成一个数据集
normal_combined = tf.concat([mean_moving_normal, variance_shrinking_normal], 0)
# 添加另一个直方图summary来记录组合分布
tf.summary.histogram("normal/bimodal", normal_combined)
summaries = tf.summary.merge_all()
# 设置会话和摘要作者
sess = tf.Session()
writer = tf.summary.FileWriter("/tmp/histogram_example")
# 设置一个循环并将摘要写入磁盘
N = 400
for step in range(N):k_val = step/float(N)summ = sess.run(summaries, feed_dict={k: k_val})writer.add_summary(summ, global_step=step)

可以得到两组单独的正太分布和连接起来后形成的一组双峰结构分布的图表.

distributions显示内容解析

distributions图和histogram图显示的数据源是相同的,只是用不同的方式对相同的内容进行展示。在网上找了很久也没要找到关于distributions图的详解,下面写写自己对该图的理解:

该图的横坐标为训练的次数,纵坐标为权重值的取值范围,图中首先从整体上显示了在训练过程中权重值的取值范围,然后用不同的颜色表示取某个区域值的频次,颜色越深表示出现的频次越多。从上图可以看出,该权重值在0附近颜色最深,也就是说在0附近这个区域权重值的取值频次最高。

tensorflow----tensorboard之histogram与distributions相关推荐

  1. Tensorflow— tensorboard网络运行

    代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data#载入数据集 #当前路径 m ...

  2. TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结

    Tensorboard: 如何更直观的观察数据在神经网络中的变化,或是已经构建的神经网络的结构.上一篇文章说到,可以使用matplotlib第三方可视化,来进行一定程度上的可视化.然而Tensorfl ...

  3. Tensorflow—tensorboard网络结构

    代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data#载入数据集 #当前路径 m ...

  4. Tensorflow——Tensorboard可视化

    1.前言 本节内容会用到浏览器, 而且与 tensorboard 兼容的浏览器是 "Google Chrome". 使用其他的浏览器不保证所有内容都能正常显示. 学会用 Tenso ...

  5. win7 下anaconda TensorFlow tensorboard使用

    第一步在 Spyder(TensorFlow)中输入一下代码: # View more python learning tutorial on my Youtube and Youku channel ...

  6. tensorflow tensorboard summary的工作特点

    自己之前主要使用summary来监督网络的训练,所以没有对summary有太多的使用.最近要用summary的数据进行对比分析并展示,所以了解到summary有以下运行特点 1. 每次训练时运行tf. ...

  7. Tensorflow系列 | Tensorboard详解(下篇)

    编辑 | 安可 [导读]:本文接续Tensorboard详解(上篇)介绍Tensorboard和总结Tensorboard的所有功能并有代码演练.欢迎大家点击上方蓝字关注我们的公众号:深度学习与计算机 ...

  8. Tensorflow 可视化 TensorBoard 尝试~

    tensorboard --logdir=/home/ubuntu/temp/log 注意:在阅读本文之前,请务必更新你的浏览器.Chrome大法好!  数据.模型可视化是TensorFlow的一项重 ...

  9. TensorFlow学习--tf.summary.histogram与直方图仪表板/tensorboard_histograms

    在训练神经网络时,当需要查看一个张量在训练过程中值的分布情况时,可通过tf.summary.histogram()将其分布情况以直方图的形式在TensorBoard直方图仪表板上显示. tf.summ ...

  10. Tensorflow:Tensorboard使用

    目录 目录 前言 可视化第一步 实现graphs 后记 前言 TensorFlow是以流动的张量为名的神经网络开发库,所以Google为了让人们更直观的了解流动的张量的含义,他们做了个TensorBo ...

最新文章

  1. python 拓扑排序正确版
  2. java随机生成不重复的数组_Java生成不重复的随机数组的方法
  3. exc读入到matlab,matlab外部程序接口-excel
  4. hive与spark的匹配版本汇总
  5. .netcore 分布式事务CAP2.6 快速入门
  6. CentOS新增硬盘系统不能自动进行识别。
  7. python 图形库有哪些_Python基本图形绘制库——turtle
  8. 系统学习机器学习之弱监督学习(三)--Adversarial Autoencoders
  9. python解释器在语法上不支持什么编程_python解释器和编辑器的区别 - CSDN
  10. hikaricp 连接池分析_Spring Boot如何使用HikariCP连接池详解
  11. 《Java安全编码标准》一第 1 章 概  述
  12. 矩阵的java程序怎么编写_如何编写Java程序以添加两个矩阵
  13. php. 调试工具.trace
  14. 2021最新最细致的IDEA集成SVN工具的使用 (入门到精通)
  15. Docker容器监控cAdvisor
  16. 固定资产取消月末结账时报错,提示:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录...
  17. 十大免费响应式Joomla主题
  18. 【UEFI实战】EDK编译和使用(更新版)
  19. 小区人脸识别门禁系统云平台需求分析文档
  20. 头歌 数据结构与算法答案 善用目录

热门文章

  1. response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost
  2. PSSP之特征提取(PSSP protein secondary structure prediction)
  3. AD绘制PCB经验总结3-规则报警 Silk primitive without silk layer+Minimum Solder Mask Sliver
  4. 安装和配置fedora19要做的那些事,超值经验
  5. 关于IT公司技术委员会职责
  6. python分析报告怎么写_【总结】竞品分析报告撰写的方法
  7. android 修改双卡铃声,Android 修改系统来电铃声
  8. 计算机访问网络延迟越低越好吗,网速和网络延迟(网络延迟取决于什么)
  9. 2019杭电多校训练营(第一场)
  10. vue中yarn install报错:info There appears to be trouble with your network connection. Retrying…