TensorFlow学习笔记(八)——TensorBoard可视化

前言:

       训练神经网络十分复杂,有时需要几天甚至几周的时间。为了更好的管理、调试和优化神经网络的训练过程,TensorFlow提供了一个可视化工具TensorBoard。本文将介绍TensorFlow 的可视化工具 TensorBoard。TensorBoard TensorFlow 自带的工具,不需要额外的安装过程。虽然TensorBoardTensorFlow运行在不同的进程中, 但是TensorBoard会实时读取TensorFlow程序输出的日志文件从而获取最新的TensorFlow 程序运行状态。通过TensorBoard,—方面可以更好地了解TensorFlow计算图的结构以及每个TensorFlow计算节点在运行时的时间、内存消耗。另一方面也可以通过TensorBoard 可视化神经网络模型训练过程中各种指标的变化趋势,直观地了解神经网络的训练情况。

一、TensorFlow计算图可视化

        以下代码展示了一个简单的TensorFlow程序,在这个程序中完成了 TensorBoard日志输出的功能:

# -*- coding: utf-8 -*-
import tensorflow as tf

#定义一个简单的计算图,实现向量加法的操作。
input1 = tf.constant([1.0, 2.0, 3.0],name="input1")
input2 = tf.Variable(tf.random_uniform([3]),name="input2")
output = tf.add_n ([input1, input2],name="add")

#将当前的TensorFlow计算图写入日志
writer = tf.summary.FileWriter(r"C:\Users\Administrator\Desktop\code\tensorflow\TensorBoard_test\tensorboard_model",
                               tf.get_default_graph())
writer.close()

      以上程序输出了TensorFlow计算图的信息,所以运行TensorBoard时,可以看到这个向量相加程序计算图可视化之后的结果。TensorBoard不需要额外的安装过程,在 TensorFlow安装完成时,TensorBoard会被自动安装。

      注意,TensorBoard必须要在终端启动,打开cmd,输入tensorboard --logdir = 路径,如下图:


启动TensorBoard,会得到一个网址,如下图:


我们看下C:\Users\Administrator\Desktop\code\tensorflow\TensorBoard_test\tensorboard_model路径下的文件:


有两个是因为我运行了两次程序。

打开 网址http://3W34K4YR8TP6AN9:6006,如下所示:


      进入GRAPHS栏,便看到上面程序TensorFlow计算图的可视化结果。


二、命名空间与TensorBoard图上节点      

      为了更好地组织可视化效果图中的计算节点,TensorBoard支持通过TensorFlow命名空间来整理可视化效果图上的节点。在TensorBoard的默认视图中,TensorFlow计算图中同一个命名空间下的所有节点会被缩略成一个节点,只有顶层命名空间中的节点才会被显 示在TensorBoard可视化效果图上。

2.1 命名空间

我们知道,变量的命名空间可以通过 tf.variable_scope 函数来,除了tf.variable_scope 函数,tf.name_scope 函数也提供了命名空间管理的功能。这两个函数在大部分情况下是等价的,唯一的区别是在使用tf.get_variable函数时。以下代码简单地说明了这两个函数的区别:

# -*- coding: utf-8 -*-

import tensorflow as tf


with tf.variable_scope("namespace_1"):
    #在命名空间namespace_1下获取变量“bar”,于是得到的变量名称为“namespace_1/bar”。
    a = tf.get_variable("bar",	[1])
    print(a.name) 	              # 输出:namespace_1/bar:0
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        print(sess.run(a))
        print("******************")


with tf.variable_scope("namespace_2"):
    # 在命名空间namespace_2下获取变量“bar”,于是得到的变量名称为“namespace_2/bar”。
    # 此时变量“namespace_2/bar”和变量“namespace_1/bar”并不冲突,于是可以正常运行。
    b = tf.get_variable("bar",[1])
    print (b.name)	             # 输出:namespace_2/bar: 0
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        print(sess.run(b))
        print("******************")


with tf.name_scope("namespace_3"):
    # 使用tf.Variable函数生成变量会受tf.name_scope影响,
    # 于是这个变量的名称为 “namespace_3/Variable”。
    a = tf.Variable([1])
    print(a.name) 	             # 输出:namespace_3/Variable:0
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        print(sess.run(a))
        print("******************")

# tf.get_variable函数不受tf.name_scope函数的影响,于是变量并不在a这个命名空间中。
a = tf.get_variable("b", [1])
print (a.name)         	# 输出:b:0
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print(sess.run(a))
    print("******************")


# with tf.name_scope("b"):
#     # 因为tf.get_variable不受tf.name_scope影响,所以这里将试图获取名称为“a”的变量。
#     # 然而这个变量己经被声明了,于是这里会报重复声明的错误:
#     # ValueError: Variable bar already exists, disallowed. Did you mean
#     # to set reuse=True in VarScope? Originally defined at: ...
#     tf.get_variable("b",[1])

运行程序,输出:



2.2 通过对命名空间的管理,可视化计算图

通过对命名空间管理,改进第一节中向量相加的演示代码,使得可视化得到的效果图更加清晰。如下:

# -*- coding: utf-8 -*-

import tensorflow as tf

#将输入定义放入各自的命名空间中,从而使得TensorBoard可以根据命名空间来整理可视化效果图上的节点。
with tf.name_scope("namespace_1"):
    inputl = tf.constant ([1.0, 2.0, 3.0], name="input1")

with tf.name_scope("namespace_2"):
    input2 = tf.Variable(tf.random_uniform([3]), name="input2")

output = tf.add_n([inputl, input2], name="add")

#将当前的TensorFlow计算图写入日志
writer = tf.summary.FileWriter(r"C:\Users\Administrator\Desktop\code\tensorflow\TensorBoard_test\tensorboard_model",
                                tf.get_default_graph())
writer.close()





版权声明:本文为weixin_41695564原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41695564/article/details/80246229

智能推荐

TensorFlow——TensorBoard可视化

前言 TensoeFlow可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了方便TensorFlow程序的理解、调试与优化,TensorFlow提供了TensorBoard可视化工具。 实现程序可视化过程: 数据序列化—events文件 启动TensorBoard 1、数据序列化—events文件 TensorBoard通过读取TensorFl...

Tensorflow——Tensorboard可视化

1.前言 本节内容会用到浏览器, 而且与 tensorboard 兼容的浏览器是 “Google Chrome”. 使用其他的浏览器不保证所有内容都能正常显示. 学会用 Tensorflow 自带的 tensorboard 去可视化我们所建造出来的神经网络是一个很好的学习理解方式. 用最直观的流程图告诉你你的神经网络是长怎样,有助于你发现编程中间的问题和疑问. 2.搭建网络...

Tensorflow可视化 Tensorboard

如何在训练过程中直观地观察loss和acc的曲线? TensorBoard是Tensorflow可视化工具,可以用来展现标量、文本、音频、图像、网络结构、网络各层权值偏移量的统计直方图等。 Tensorboard虽然是个好工具,但对于计算机知识欠缺的小白,操作稍有些麻烦。 操作关键点:基于Web浏览器可视化,即Tensorflow将监控数据写入文件、需要利用浏览器Web后端查看对应的数据。 创建监...

tensorflow tensorboard可视化

参考链接: https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/4-1-tensorboard1/  莫烦tensorboard可视化教程 http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/summaries_and_tensorboard....

tensorflow可视化--tensorboard

在训练过程中,可以通过tensorboard来查看运行的图以及误差等数据的变化过程,以下介绍tensorboard的几个模块。 (一)简单的结构说明 (1)整个大框架说明 如图1所示,tensorboard的结构包括:inputs,layer1,layer2,loss,train这几个大框架,这几个框架是在同一层次的。 图1 整个网络的大框架结构图 (2)每个layer的细则 如图2所示,tens...

猜你喜欢

Tensorboard 可视化 Tensorflow

1. tensorborad查看神经网络结构: 使用这样的代码为你的结构命名:缩进部分是你的相应的结构   当然,我们要在程序运行后,保存在日志文件: 在创建完你的 sess=tf.Session()后面加入以下代码: 这是表示,将日志存在你的代码位置下的logs文件夹。 然后进入命令行(windows下要先**你的tensorflow环境),进入logs所在位置 如上图,输入...

TensorFlow 2.0 入门实战笔记(六)Tensorboard可视化

目录 六、 Tensorboard可视化 6.1 数据可视化 6.2 图片可视化 六、 Tensorboard可视化 6.1 数据可视化 Step1:创建日志写入地址,文件夹名为logs Step2:喂入监听数据,设置时间戳 Step3:打开监听 使用Terminal进入程序文件根目录,输入tensorboard --logdir logs其中logs对应第一步中文件夹名 Step4:打开WEB端...

Tensorflow学习笔记----TensorBoard数据可视化安装与使用

安装:一般情况下现在的Tensorflow里是自动安装了Tensorboard的,可以直接使用,如果没有的话,就直接在命令行中输入activate tensorflow进入tensorflow环境,再输入pip install tensorboard安装即可; 打开:运用一个生成可视化的py文件,在文件同目录下生成了一个log文件后,在这个目录进入命令行,输入tensorboard --logdi...

Tensorflow学习笔记----Himmelblau函数优化、TensorBoard可视化、Keras高层接口

一.Himmelblau函数优化(FunctionOptimization) 此函数为: 图像如下所示: 图上四个蓝点的最小值都是0(z轴,即函数值),分别为f(3.0,2.0)=0.0、f(-2.805,3.131)=0.0、f(-3.779,-3.283)=0.0、f(3.584,-1.848)=0.0;分别位于x-y平面的第一、二、三、四象限; 我们先来自己画出这个函数图像: 图像输出为: ...

冒泡排序,及改进方式,性能优化400%>>>附图解加源码

首先源码附上,源码中带有注释,看不懂没关系,源码后面附带图解,最后附上代码效率提升图 源码如下: 方案一:其实实现很简单,两层循环,每次内层迭代出最大的一个值,将其放入数组最后一个位置,外层循环的末端便往前移一位。其原理如下图 方案一代码块: 方案二:优化改进 仔细观察上面的图,我们不难发现当迭代到图下这样的情况时,其实已经全排序好了,但是我们还是需要对它进行1,2,3,4,5,6的迭代,这些情况...