深度学习-CNN tensorflow 可视化

tf.summary模块的简介

在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程、利用Matpltlib进行可视化、利用TensorFlow自带的可视化工具TensorBoard进行可视化。这三种方法,在前面博客中都有过比较详细的介绍。但是,TensorFlow中最重要的可视化方法是通过tensorBoard、tf.summary和tf.summary.FileWriter这三个模块相互合作来完成的。

tf.summary模块的定义位于summary.py文件中,该文件中主要定义了在进行可视化将要用到的各种函数,tf.summary包含的主要函数如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

from __future__ import                            absolute_import

from __future__ import                            pision

from __future__ import                            print_function

from google.protobuf import json_format as         _json_format

from tensorflow.core.framework.summary_pb2 import Summary

from tensorflow.core.framework.summary_pb2 import SummaryDescription

from tensorflow.core.util.event_pb2 import        Event

from tensorflow.core.util.event_pb2 import        SessionLog

from tensorflow.core.util.event_pb2 import        TaggedRunMetadata

from tensorflow.python.eager import context as    _context

from tensorflow.python.framework import dtypes as _dtypes

from tensorflow.python.framework import ops as    _ops

from tensorflow.python.ops import gen_logging_ops as _gen_logging_ops

from tensorflow.python.ops import summary_op_util as _summary_op_util

from tensorflow.python.ops.summary_ops import        tensor_summary

from tensorflow.python.summary.text_summary import   text_summary as text

from tensorflow.python.summary.writer.writer import       FileWriter

from tensorflow.python.summary.writer.writer_cache import FileWriterCache

from tensorflow.python.util import compat as              _compat

from tensorflow.python.util.all_util import               remove_undocumented

from tensorflow.python.util.tf_export import              tf_export

#========================================================================================================

#模块说明:

#       tf.summary中包含的主要函数

#========================================================================================================

def scalar(name, tensor, collections=None, family=None)                    

def image(name, tensor, max_outputs=3, collections=None, family=None)

def histogram(name, values, collections=None, family=None)

def audio(name, tensor, sample_rate, max_outputs=3, collections=None,family=None)

def merge(inputs, collections=None, name=None)

def merge_all(key=_ops.GraphKeys.SUMMARIES, scope=None)

def get_summary_description(node_def)

二 tf.summary模块中常用函数的说明:

1tf.summary.scalar函数的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#========================================================================================================

#函数原型:

#       def scalar(name, tensor, collections=None, family=None)

#函数说明:

#       [1]输出一个含有标量值的Summary protocol buffer,这是一种能够被tensorboard模块解析的【结构化数据格式】

#       [2]用来显示标量信息

#       [3]用来可视化标量信息

#       [4]其实,tensorflow中的所有summmary操作都是对计算图中的某个tensor产生的单个summary protocol buffer,而

#          summary protocol buffer又是一种能够被tensorboard解析并进行可视化的结构化数据格式

#       虽然,上面的四种解释可能比较正规,但是我感觉理解起来不太好,所以,我将tf.summary.scalar()函数的功能理解为:

#       [1]将【计算图】中的【标量数据】写入TensorFlow中的【日志文件】,以便为将来tensorboard的可视化做准备

#参数说明:

#       [1]name  :一个节点的名字,如下图红色矩形框所示

#       [2]tensor:要可视化的数据、张量

#主要用途:

#       一般在画loss曲线和accuary曲线时会用到这个函数。

#=======================================================================================================

具体的使用方法如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#=======================================================================================================================

#函数说明:

#       生成【变量】的监控信息,并将生成的监控信息写入【日志文件】

#参数说明:

#       [1]var :需要【监控】和【记录】运行状态的【张量】

#       [2]name:给出了可视化结果中显示的图表名称

#=======================================================================================================================

def variable_summaries(var,name):

    with tf.name_scope(‘summaries‘):

        #【1】通过tf.summary.histogram()

        tf.summary.histogram(name,var)

        mean   = tf.reduce_mean(var)

        tf.summary.scalar(‘mean/‘+name,mean)

        stddev = tf.sqrt(tf.reduce_mean(tf.square(var-mean)))

        tf.summary.scalar(‘stddev/‘+name,stddev)

2tf.summary.image函数的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#========================================================================================================

#函数原型:

#       def image(name, tensor, max_outputs=3, collections=None, family=None)

#函数说明:

#       [1]输出一个包含图像的summary,这个图像是通过一个4维张量构建的,这个张量的四个维度如下所示:

#              [batch_size,height, width, channels]

#       [2]其中参数channels有三种取值:

#              [1]1: `tensor` is interpreted as Grayscale,如果为1,那么这个张量被解释为灰度图像

#              [2]3: `tensor` is interpreted as RGB,如果为3,那么这个张量被解释为RGB彩色图像

#              [3]4: `tensor` is interpreted as Grayscale,如果为4,那么这个张量被解释为RGBA四通道图像

#       [3]输入给这个函数的所有图像必须规格一致(长,宽,通道,数据类型),并且数据类型必须为uint8,即所有的像素值在

#              [0,255]这个范围

#       虽然,上面的三种解释可能比较正规,但是我感觉理解起来不太好,所以,我将tf.summary.image()函数的功能理解为:

#       [1]将【计算图】中的【图像数据】写入TensorFlow中的【日志文件】,以便为将来tensorboard的可视化做准备

#

#参数说明:

#       [1]name  :一个节点的名字,如下图红色矩形框所示

#       [2]tensor:要可视化的图像数据,一个四维的张量,元素类型为uint8或者float32,维度为[batch_size, height,

#                 width, channels]

#       [3]max_outputs:输出的通道数量,可以结合下面的示例代码进行理解

#主要用途:

#       一般用在神经网络中图像的可视化

#========================================================================================================

示例代码如下所示:


1

2

3

4

5

6

7

8

9

10

11

def main(argv=None):

    #【1】从磁盘加载数据

    mnist = input_data.read_data_sets(‘F:/MnistSet/‘,one_hot=True)

    #【2】定义两个【占位符】,作为【训练样本图片/此块样本作为特征向量存在】和【类别标签】的输入变量,并将这些占位符存在命名空间input中

    with tf.name_scope(‘input‘):

        x  = tf.placeholder(‘float‘, [None, 784],name=‘x-input‘)

        y_ = tf.placeholder(‘float‘, [None, 10], name=‘y-input‘)

    #【2】将【输入的特征向量】还原成【图片的像素矩阵】,并通过tf.summary.image函数定义将当前图片信息作为写入日志的操作

    with tf.name_scope(‘input_reshape‘):

        image_shaped_input = tf.reshape(x,[-1,28,28,1])

        tf.summary.image(‘input‘,image_shaped_input,10)

3 tf.summary.histogram函数的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#========================================================================================================

#函数原型:

#       def histogram(name, values, collections=None, family=None)

#函数说明:

#       [1]用来显示直方图信息

#       [2]添加一个直方图的summary,它可以用于可视化您的数据的分布情况,关于TensorBoard中直方图更加具体的信息可以在

#          下面的链接https://www.tensorflow.org/programmers_guide/tensorboard_histograms中获取

#

#       虽然,上面的两种解释可能比较正规,但是我感觉理解起来不太好,所以,我将tf.summary.histogram()函数的功能理解为: 

#       [1]将【计算图】中的【数据的分布/数据直方图】写入TensorFlow中的【日志文件】,以便为将来tensorboard的可视化做准备

#参数说明:

#       [1]name  :一个节点的名字,如下图红色矩形框所示

#       [2]values:要可视化的数据,可以是任意形状和大小的数据 

#主要用途:

#       一般用来显示训练过程中变量的分布情况

#========================================================================================================

示例代码如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#=======================================================================================================================

#函数说明:

#       生成一层全连接层神经网络

#=======================================================================================================================

def nn_layer(input_tensor,input_dim,output_dim,layer_name,act=tf.nn.relu):

    with tf.name_scope(layer_name):

        with tf.name_scope(‘weights‘):

            weights = tf.Variable(tf.truncated_normal([input_dim,output_dim],stddev=0.1))

            variable_summaries(weights,layer_name+‘/weights‘)

        with tf.name_scope(‘biases‘):

            biases = tf.Variable(tf.constant(0.0,shape=[output_dim]))

            variable_summaries(biases,layer_name+‘/biases‘)

        with tf.name_scope(‘Wx_plus_b‘):

            preactivate = tf.matmul(input_tensor,weights)+biases

            tf.summary.histogram(layer_name+‘/pre_activvations‘,preactivate)

        activations = act(preactivate,name=‘activation‘)

        tf.summary.histogram(layer_name+‘/activations‘,activations)

        return activations

4 tf.summary.函数的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#========================================================================================================

#函数原型:

#       def merge_all(key=_ops.GraphKeys.SUMMARIES, scope=None)

#函数说明:

#       [1]将之前定义的所有summary整合在一起

#       [2]和TensorFlow中的其他操作类似,tf.summary.scalar、tf.summary.histogram、tf.summary.image函数也是一个

#          op,它们在定义的时候,也不会立即执行,需要通过sess.run来明确调用这些函数。因为,在一个程序中定义的写日志操作

#          比较多,如果一一调用,将会十分麻烦,所以Tensorflow提供了tf.summary.merge_all()函数将所有的summary整理在一

#          起。在TensorFlow程序执行的时候,只需要运行这一个操作就可以将代码中定义的所有【写日志操作】执行一次,从而将

#          所有的日志写入【日志文件】。

#

#参数说明:

#       [1]key  : 用于收集summaries的GraphKey,默认的为GraphKeys.SUMMARIES

#       [2]scope:可选参数

#========================================================================================================

5 tf.summary.FileWriter类的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#========================================================================================================

#类定义原型:

#       class FileWriter(SummaryToEventTransformer)

#类说明:

#      [1]将Summary protocol buffers写入磁盘文件

#      [2]FileWriter类提供了一种用于在给定目录下创建事件文件的机制,并且将summary数据写入硬盘

#构造函数:

#        def __init__(self,logdir,graph=None,max_queue=10,flush_secs=120,graph_def=None,filename_suffix=None):

#参数说明:

#       [1]self  : 类对象自身

#       [2]logdir:用于存储【日志文件】的目录

#       [3]graph : 将要存储的计算图

#应用示例:

#       summary_writer = tf.summary.FileWriter(SUMMARY_DIR,sess.graph):创建一个FileWrite的类对象,并将计算图

#           写入文件

#========================================================================================================

示例代码如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

merged = tf.summary.merge_all()

#【8】创建回话Session

with tf.Session() as sess:

    #【9】实例化一个FileWriter的类对象,并将当前TensoirFlow的计算图写入【日志文件】

    summary_writer = tf.summary.FileWriter(SUMMARY_DIR,sess.graph)

    #【10】Tensorflow中创建的变量,在使用前必须进行初始化,下面这个为初始化函数

    tf.global_variables_initializer().run()

    #【11】开始训练

    for i in range(TRAIN_STEPS):

        xs,ys     = mnist.train.next_batch(BATCH_SIZE)

        #【12】运行训练步骤以及所有的【日志文件生成操作】,得到这次运行的【日志文件】。

        summary,_,acc = sess.run([merged,train_step,accuracy],feed_dict={x:xs,y_:ys})

        print(‘Accuracy at step %s: %s‘ % (i, acc))

        #【13】将所有的日志写入文件,TensorFlow程序就可以那这次运行日志文件,进行各种信息的可视化

        summary_writer.add_summary(summary,i)

summary_writer.close()

6add_summary函数的说明


1

2

3

4

5

6

7

8

9

10

11

12

13

#========================================================================================================

#函数原型:

#        def add_summary(self, summary, global_step=None)

#函数说明:

#        [1]该函数是tf.summary.FileWriter父类中的成员函数

#        [2]将一个`Summary` protocol buffer添加到事件文件,写入事件文件

#参数说明:

#       [1]self   : 类对象自身

#       [2]summary:将要写入的summary

#       [3]graph  : global_step,当前迭代的轮数,需要注意的是,如果没有这个参数,那么scalar的summary将会成为一条直线

#应用示例:

#       summary_writer.add_summary(summary,i)

#========================================================================================================

原文地址:https://www.cnblogs.com/ldt-/p/10279092.html

时间: 2024-11-09 13:44:46

深度学习-CNN tensorflow 可视化的相关文章

牛逼哥TensorFlow资源分享:白话深度学习与TensorFlow

今天,给大家分享一本关于TensorFlow的书籍-白话深度学习与TensorFlow. 最近在看这个深度学习框架,门外汉,为了快速入门,找的都是中文教材,可能准确度译文不如原文精确,但毕竟容易理解,上手快. 买了四本原版书,但有几本最近更新的书籍由于错过了双十一,感觉价格略贵,京东薅羊毛习惯了,一般三折以上的书我都不考虑买了. 所以想办法找到了电子书,也是通过各种途径吧,淘宝,闲鱼,论坛,大部分都是买的,网上下来的免费的好多都没有书签,而且质量不是很好. 在这里免费分享给大家,试了下,不知道为

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把NVIDIA显卡驱动安装好了 一.安装CUDA CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务,想使用GPU就必须要使用CUDA.

七月算法--12月机器学习在线班-第十九次课笔记-深度学习--CNN

七月算法--12月机器学习在线班-第十九次课笔记-深度学习--CNN 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 1,卷积神经网络-CNN 基础知识 三个要点 1: 首先将输入数据看成三维的张量(Tensor) 2: 引入Convolution(卷积)操作,单元变成卷积核,部分连接共享权重 3:引入Pooling(采样)操作,降低输入张量的平面尺寸 ,1.1 张量(Tensor) 高,宽度,深度,eg:彩色图像:rgb,3个深度,图

深度学习之TensorFlow安装与初体验

深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的神经网络结构是浅度学习的模型. 浅度学习:层数少于3层,使用全连接的一般被认为是浅度神经网络,也就是浅度学习的模型,全连接的可能性过于繁多,如果层数超过三层,计算量呈现指数级增长,计算机无法计算到结果,所以产生了深度学习概念 深度学习:层数可以有很多层,但是并不是全连接的传递参数,如上图中右边是一个

分享《深度学习之TensorFlow:入门、原理与进阶实战》PDF+源代码

下载:https://pan.baidu.com/s/1zI-pblJ5dEwjGVe-QQP9hQ 更多资料:http://blog.51cto.com/3215120 <深度学习之TensorFlow:入门.原理与进阶实战>,李金洪 著.中文PDF,939页,带书签目录,文字可以复制粘贴.配套源代码. 如图: 原文地址:http://blog.51cto.com/14050756/2315854

分享《白话深度学习与TensorFlow》+PDF+高杨

下载:https://pan.baidu.com/s/150FjIfsNVlPh-Fq-IghgWA更多资料分享:http://blog.51cto.com/14087171 <白话深度学习与TensorFlow>中文版PDF 经典学习资料,带目录和书签,文字可以复制粘贴. 图示如下: 原文地址:http://blog.51cto.com/14087171/2321679

深度学习之TensorFlow:入门原理与进阶实战

深度学习之TensorFlow:入门原理与进阶实战 链接:https://pan.baidu.com/s/1wUos19e7qhm_fA52FV8gQg 提取码:nz8i 目录 · · · · · · 配套学习资源 前言 第1篇 深度学习与TensorFlow基础 第1章 快速了解人工智能与TensorFlow 2 1.1 什么是深度学习 2 1.2 TensorFlow是做什么的 3 1.3 TensorFlow的特点 4 1.4 其他深度学习框架特点及介绍 5 1.5 如何通过本书学好深度学

AI全面入门经典书籍-pytho入门+数学+机器学习+深度学习(tensorflow)一次性打包

百度网盘:https://pan.baidu.com/s/1SShwxxBIHB_rynF_jUjApA 一.内容清单: 1..python入门书籍:?? ??? ?python基础教程.pdf?? ??? ?python语言及其应用.pdf?? ??? ?python语言入门.pdf?? ??? ?像计算机科学家一样思考python第2版.pdf ?? ??? ?备注:自己找一本精读,其他辅助阅读,会有不一样的效果.?? ? 2.数学:?? ??? ?同济高等数学 第六版 上册.pdf?? ?