TensorBoard初识

本文介绍如何使用TensorBoard可视化TensorFlow程序。通过创建简单的加法运算并记录日志文件,可以在TensorBoard中查看计算图及节点信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要内容来自斯坦福大学CS20课程,具体的课程内容请参看斯坦福大学CS20

    在使用TensorFlow的过程中,人们通常将常量(constants),变量( variables)以及运算符( operators)统称为op.

    Tensorflow提供给我们的不仅仅是一个机器学习的软件库,而是一套由三部分组成的完整软件,主要包括:TensorFlow, TensorBoard和Tensor Serving。为了能够充分理解TensorFlow, 我们应该知道如何使用上述三部分。但在本节内容中,我们尝试着先使用和熟悉一下TensorBoard。

    所有版本的标准TensorFlow中都包含有TensorFlow,其主要功能是一个使图像能够可视化。用Google自己的话说,就是“The computations you'll use TensorFlow for - like training a massive deep neural network - can be complex and confusing. To make it easier to understand, debug, and optimize TensorFlow programs, we've included a suite of visualization tools called TensorBoard”。

    一个完全配置好的TensorBoard看起来应该长成下面这个样子:


    当用户在TensorBoard中执行TensorFlow的相关操作时,这些操作将会导出到一个事件日志文件。而TensorBoard能够将这些事件日志文件变得可视化,以便用户可以看到他们所写的模型是如何运作的。提前了解一些关于TensorBoard的知识能够使你在学习TensorFlow中感觉更加愉快和高效。现在,让我们开始编写我们的第一个TensorFlow程序,并使用TensorBoard使其可视化。

import tensorflow as tf
a = tf.constant(2)
b = tf.constant(3)
x = tf.add(a, b)
with tf.Session() as sess:
	print(sess.run(x))

为了能够使这个程序在TensorBoard上变得可视化,我们需要创建一个日志文件。我们将日志文件对象记为writer并且通过如下代码完成创建:

writer = tf.summary.FileWriter([logdir], [graph])

其中,[graph]是指你当前程序所使用的计算图你也可以通过tf.get_default_graph()或者 sess.graph语句来调用它。区别在于前者调用的是程序默认的计算图而后者调用的是session正在处理的计算图。尤其注意的是,在使用后者时,需要你事先先创建好一个session,而且无论是使用哪种方式,必须是在我们定义过一个计算图后才能创建一个writer,否则我们在TensorBoard上看到的可视化图形将是不完整的。[logdir]是你想要存储这些日志文件的文件夹目录,你也可以选择其他更明晰的地址去替代它,例如'./graphs' 或者'./graphs/lecture02'。

结合了以上两步后,我们最终完成了我们的第一个TensorFlow程序,如下图所示:

import tensorflow as tf

a = tf.constant(2)
b = tf.constant(3)
x = tf.add(a, b)
writer = tf.summary.FileWriter('./graphs', tf.get_default_graph())
with tf.Session() as sess:
	# writer = tf.summary.FileWriter('./graphs', sess.graph) # if you prefer creating your writer using session's graph
	print(sess.run(x))
writer.close()
然后,打开你的终端,确保你的当前工作目录与你工程文件所在的目录相同。通过python语句执行你刚才写好的文件。然后执行:
$ python [my_program.py] 
$ tensorboard --logdir="./graphs" --port 6006

打开你本机的浏览器,并转到地址 http://localhost:6006/(或者你自己选择的端口),然后你就可以看到Tensorboard的页面了。在界面上是我们在TensorFlow程序中构建的计算图,它有三个节点,包括两个常量和一个添加操作。长成下面这个样子:



    在我们的第一个TensorFlow程序中,我们构建节点的代码为:

a = tf.constant(2)
b = tf.constant(3)
x = tf.add(a, b)

所以对应的Const和Const_1对应于结点a和b,而Add结点对应于x。a、b、x是我们赋予op的名字便于我们能够在编写程序时访问他们,但是对于tensorflow内核来说,他们没有任何意义。如果你想在tensorboard中看到你为op赋予的名字,那么在代码中你需要使用明确的命名字段来给这些节点命名。代码如下:

a = tf.constant(2, name="a")
b = tf.constant(2, name="b")
x = tf.add(a, b, name="add")

再次执行刚才的代码,打开你的tensorboard你就可以看到你的节点名字已经发生改变了


   这个图描述了op们和它们之间的依赖关系,点击图中的节点,你将会看到对应的op的信息。这些信息包括了节点的名字,类型和它们的值。

                 

小注释:如果你多次运行了你的.py文件,那么在你保存事件日志文件的文件夹中会出现多个文件。TensorBoard只会显示最新生成的那个,并发出一个多日志文件的警告。如果你不想看到这些警告,请及时删除不需要的文件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值