tensorflow学习笔记3:tensorboard可视化学习

lienhua34 lienhua34     2022-08-10     471

关键词:

TensorBoard简介

Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph、定量指标图以及附加数据。大致的效果如下所示, 

技术分享

TensorBoard工作机制

TensorBoard 通过读取 TensorFlow 的事件文件来运行。TensorFlow 的事件文件包括了你会在 TensorFlow 运行中涉及到的主要数据。关于TensorBoard的详细介绍请参考TensorBoard:可视化学习。下面做个简单介绍。

Tensorflow的API中提供了一种叫做Summary的操作,用于将Tensorflow计算过程的相关数据序列化成字符串Tensor。例如标量数据的图表scalar_summary或者梯度权重的分布histogram_summary

通过tf.train.SummaryWriter来将序列化后的Summary数据保存到磁盘指定目录(通过参数logdir指定)。此外,SummaryWriter构造函数还包含了一个可选参数GraphDef,通过指定该参数,可以在TensorBoard中展示Tensorflow中的Graph(如上图所示)。

大致的代码框架如下所示:

merged_summary_op = tf.merge_all_summaries()
summary_writer = tf.train.SummaryWriter(/tmp/mnist_logs, sess.graph)
total_step = 0
while training:
    total_step += 1
    session.run(training_op)
    if total_step % 100 == 0:
        summary_str = session.run(merged_summary_op)
        summary_writer.add_summary(summary_str, total_step)

启动TensorBoard的命令如下,

python tensorflow/tensorboard/tensorboard.py --logdir=/tmp/mnist_logs

其中--logdir命令行参数指定的路径必须跟SummaryWriter的logdir参数值保持一致,TensorBoard才能够正确读取到Tensorflow的事件文件。

启动Tensorflow后,我们在浏览器中输入http://localhost:6006 即可访问TensorBoard页面了。

通过MNIST实例来验证TensorBoard

tensorflow/tensorflow的源代码目录tensorflow/examples/tutorials/mnist目录下提供了手写数字MNIST识别样例代码。该样例代码同样包含了SummaryWriter的相关代码,我们可以使用该样例代码来验证一下TensorBoard的效果。

首先,克隆一下tensorflow的代码库到本地,

$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow/examples/tutorials/mnist/
$ emacs fully_connected_feed.py

对fully_connected_feed.py的代码做一下下面两个地方的修改:

  1. 将29、30行的import语句修改一下

    import input_data
    import mnist
  2. 将154行的FLAGS.train_dir修改成‘/opt/tensor‘:

    # Instantiate a SummaryWriter to output summaries and the Graph.
    summary_writer = tf.train.SummaryWriter(/opt/tensor, sess.graph)

样例代码准备好了,下面我们如何启动TensorBoard。

Tensorflow官方的Docker镜像tensorflow/tensorflow提供了一个可快速使用Tensorflow的途径。不过该镜像默认启动的是jupyter。我们通过下面命令通过该镜像启动TensorBoard,并且将我们准备好的MNIST样例代码通过volume挂载到容器中。

lienhuadeMacBook-Pro:tensorflow lienhua34$ docker run -d -p 6006:6006 --name=tensorboard -v /Users/lienhua34/Programs/python/tensorflow/tensorflow/examples/tutorials/mnist:/tensorflow/mnist tensorflow/tensorflow tensorboard --logdir=/opt/tensor
50eeb7282f60c10ed52d26f34feeb3472cf36d83c546357801c45e14939adf1a
lienhuadeMacBook-Pro:tensorflow lienhua34$ 
lienhuadeMacBook-Pro:tensorflow lienhua34$ docker ps -a
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                   PORTS                              NAMES
50eeb7282f60        tensorflow/tensorflow                    "tensorboard --logdir"   49 minutes ago      Up 4 seconds             0.0.0.0:6006->6006/tcp, 8888/tcp   tensorboard

此时,我们在浏览器中输入http://localhost:6006/ ,得到下面的效果, 

技术分享

因为我们还没有运行MNIST的样例代码,所以TensorBoard提示没有数据。下面我们将进入tensorboard容器中运行MNIST的样例代码,

lienhuadeMacBook-Pro:tensorflow lienhua34$ docker exec -ti tensorboard /bin/bash
[email protected]:/notebooks# cd /tensorflow/mnist/                                                                                                                                 
[email protected]:/tensorflow/mnist# python fully_connected_feed.py 
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.31 (0.010 sec)
Step 100: loss = 2.13 (0.007 sec)
Step 200: loss = 1.90 (0.008 sec)
Step 300: loss = 1.56 (0.008 sec)
Step 400: loss = 1.37 (0.007 sec)
Step 500: loss = 0.99 (0.005 sec)
Step 600: loss = 0.82 (0.004 sec)
Step 700: loss = 0.77 (0.004 sec)
Step 800: loss = 0.83 (0.004 sec)
Step 900: loss = 0.54 (0.004 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 47055  Precision @ 1: 0.8555
Validation Data Eval:
  Num examples: 5000  Num correct: 4303  Precision @ 1: 0.8606
Test Data Eval:
  Num examples: 10000  Num correct: 8639  Precision @ 1: 0.8639
Step 1000: loss = 0.52 (0.010 sec)
Step 1100: loss = 0.58 (0.444 sec)
Step 1200: loss = 0.44 (0.005 sec)
Step 1300: loss = 0.42 (0.005 sec)
Step 1400: loss = 0.69 (0.005 sec)
Step 1500: loss = 0.43 (0.004 sec)
Step 1600: loss = 0.43 (0.006 sec)
Step 1700: loss = 0.39 (0.004 sec)
Step 1800: loss = 0.34 (0.004 sec)
Step 1900: loss = 0.34 (0.004 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 49240  Precision @ 1: 0.8953
Validation Data Eval:
  Num examples: 5000  Num correct: 4506  Precision @ 1: 0.9012
Test Data Eval:
  Num examples: 10000  Num correct: 8987  Precision @ 1: 0.8987
[email protected]:/tensorflow/mnist# ls -l /opt/tensor
total 76
-rw-r--r-- 1 root root 77059 Oct 25 14:53 events.out.tfevents.1477407177.50eeb7282f60

通过上面的运行结果,我们看到MNIST样例代码正常运行,而且在/opt/tensor目录下也生成了Tensorflow的事件文件events.out.tfevents.1477407177.50eeb7282f60。此时我们刷新一下TensorBoard的页面,看到的效果如下, 

技术分享

技术分享

 

如果想看到TensorBoard展示的丰富信息,可以使用mnist目录下的mnist_with_summaries.py文件。

(done)

tensorflow学习笔记(代码片段)

TensorFlow学习笔记一、常量表示importtensorflowastfm1=tf.constant([[3,3]])m2=tf.constant([[2],[3]])product=tf.matmul(m1,m2)print(product)sess=tf.Session()result=sess.run(product)print(result)sess.close()withtf.S 查看详情

tensorflow学习笔记一(代码片段)

1、tensorflow中的数据类型importtensorflowastfimportnumpyasnp#张量可以是数字、列表、ndarray#使用列表创建张量print(tf.constant([2,3]))print(tf.constant([[2,3],[1,4]]))#tensorflow2默认使用Eager动态图机制print(type(tf.constant([[2,3],[1,4] 查看详情

tensorflow学习笔记——安装和运行

参考的资料:1.官网2.tensorflow官方文档中文版安装的是Python2.7;CPUsupport(noGPUsupport),版本是1.1pipinstalltensorflow安装完成之后,进入python终端importtensorflowastf#创建常量矩阵,类型是float,去掉.的Intmatrix1=tf.constant([[3.,3.]])matrix2=tf.cons 查看详情

tensorflow学习笔记

tensorflow一些函数:1、tf.ones(shape,type=tf.float32,name=None)   tf.ones([2,3],int32)==>[[1,1,1],[1,1,1]] 2、tf.zeros(shape,type=tf.float32,name=None)   tf.zeros([2,&nb 查看详情

tensorflow学习笔记3——placeholdersandfeed_dict

1.Placeholdersplaceholders,顾名思义,就是占位的意思,举个例子:我们定义了一个关于x,y的函数f(x,y)=2x+y,但是我们并不知道x,y的值,那么x,y就是等待确定的值输入的placeholders。我们如下定义一个placeholders:tf.placeholder(dtype,shape... 查看详情

tensorflow学习笔记

学习mnist_softmax.py向量:有大小和方向的量。标量:只有大小的量。向量的写法:起点a,重点b,则写为ab上面加一个剪头。如果是在一个直角坐标系,则可以用数对的形式表示。例如(2,3)每一手写数字样本图片都是28*28像素的... 查看详情

tensorflow2.0笔记

Tensorflow2.0笔记本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师目录Tensorflow2.0笔记5欠拟合与过拟合5欠拟合与过拟合欠拟合的解决方法:​ 1.增加输入特征项​ 2.增加网络参数​ 3.减少正则化参数过拟合的解决方... 查看详情

tensorflow学习笔记:神经网络优化(代码片段)

本文是个人的学习笔记,是跟随北大曹健老师的视频课学习的附:bilibili课程链接和MOOC课程链接以及源码下载链接(提取码:mocm)文章目录一、预备知识1.条件判断和选择(where)2.[0,1)随机数(rando... 查看详情

tensorflow实战google深度学习框架笔记摘要pfour

6.4经典卷积网络模型LeNet-5模型     Inception-v3模型     6.5卷积神经网络迁移学习              查看详情

tensorflow学习笔记一(代码片段)

1、tensorflow中的数据类型importtensorflowastfimportnumpyasnp#张量可以是数字、列表、ndarray#使用列表创建张量print(tf.constant([2,3]))print(tf.constant([[2,3],[1,4]]))#tensorflow2默认使用Eager动态图机制print(type(tf.constant([[2,3],[1,4]])))#使用numpy数组创建... 查看详情

tensorflow1.3api学习笔记1(代码片段)

tf.layers.conv2d 卷积层https://www.tensorflow.org/versions/r1.3/api_docs/python/tf/layers/conv2dconv2d(inputs,filters,kernel_size,strides=(1,1),padding='valid',data_format='channe 查看详情

tensorflow学习笔记

简单神经网络构造importtensorflowastfimportmatplotlib.pyplotaspltimportnumpyasnptf.set_random_seed(1)np.random.seed(1)fakedatax=np.linspace(-1,1,100)[:,np.newaxis]#shape(100,1)noise=np.random.normal(0,0.1,size 查看详情

tensorflow学习笔记

importtensorflowastfimportnumpyasnpimportmathimporttensorflow.examples.tutorials.mnistasmnsess=tf.InteractiveSession()mnist=mn.input_data.read_data_sets("E:\Python35\Lib\site-packages\tensorflow\ 查看详情

tensorflow学习笔记一——justgetstarted

  我现在什么都不知道,打算开始学习tensorflow作为机器学习入门的开始。  昨天完成了对tensorflow官方入门介绍的学习,了解了tensorflow的基本原理和编程方法。我们在进行tensorflow编程时,程序的逻辑是:建立数据流图-->... 查看详情

学习tensorflow,tensorboard可视化网络结构和参数

...数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可以显示网络结构,又可以显示训练和测试过程中各层参数的变化情况。本博文分为四个部分,第一部分介绍相... 查看详情

tensorflow基础笔记参考资源学习文档

1官方文档https://www.tensorflow.org/api_docs/2极客学院中文文档http://www.tensorfly.cn/tfdoc/api_docs/python/array_ops.html3TensorFlow基础笔记(2)minist分类学习 查看详情

tensorflow学习笔记2:aboutsession,graph,operationandtensor

简介上一篇笔记:Tensorflow学习笔记1:GetStarted 我们谈到Tensorflow是基于图(Graph)的计算系统。而图的节点则是由操作(Operation)来构成的,而图的各个节点之间则是由张量(Tensor)作为边来连接在一起的。所以Tensorflow的计... 查看详情

tensorflow学习笔记

一.背景  本人学习Tensorflow是为了完成毕业设计的工作,之前并没有用过其他的深度学习平台,Tensorflow作为当前很流行的一个平台,无论是教学文档,还是使用其开发的工程,这些资源都是很丰富的,所以很适合新手来进行入... 查看详情