内容纲要
1、tf.summar.scalar函数
#========================================================================================================
#函数原型:
# 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]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)
2 tf.summary.image函数的说明
#函数原型: <br />def image(name, tensor, max_outputs=3, collections=None, family=None)<br />#函数说明:<br /> # [1]输出一个包含图像的summary,这个图像是通过一个4维张量构建的,这个张量的四个维度如下所示:<br /> # [batch_size,height, width, channels] <br /> # [2]其中参数channels有三种取值:<br /> # [1]1: `tensor` is interpreted as Grayscale,如果为1,那么这个张量被解释为灰度图像 <br /> # [2]3: `tensor` is interpreted as RGB,如果为3,那么这个张量被解释为RGB彩色图像 <br /> # [3]4: `tensor` is interpreted as Grayscale,如果为4,那么这个张量被解释为RGBA四通道图像 <br /> # [3]输入给这个函数的所有图像必须规格一致(长,宽,通道,数据类型),并且数据类型必须为uint8,即所有的像素值在<br /> # [0,255]这个范围 <br /># 虽然,上面的三种解释可能比较正规,但是我感觉理解起来不太好,所以,我将tf.summary.image()函数的功能理解为:<br /># 将【计算图】中的【图像数据】写入TensorFlow中的【日志文件】,以便为将来tensorboard的可视化做准备<br /> # #参数说明: <br /> # [1]name :一个节点的名字,如下图红色矩形框所示 <br /> # [2]tensor:要可视化的图像数据,一个四维的张量,元素类型为uint8或者float32,维度为[batch_size, height, <br /> # width, channels] <br /> # [3]max_outputs:输出的通道数量,可以结合下面的示例代码进行理解 <br /> #主要用途: # 一般用在神经网络中图像的可视化 <br />
具体的使用方法如下所示:
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.函数的说明
#======================================================================================================== #函数原型: # 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:可选参数
4 tf.summary.FileWriter类的说明
#======================================================================================================== #类定义原型: # 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的类对象,并将计算图 # 写入文件 #========================================================================================================[/python]
示例代码如下所示:
留言