TensorBoard

TensorFlow自带的可视化工具,能够以直观的流程图的方式,清楚展示出整个神经网络的结构和框架,便于理解模型和发现问题。

启动TensorBoard

  • 使用命令“tensorboard --logdir=path/to/log-directory”(或者“python -m tensorboard.main”);
  • 参数logdir指向FileWriter将数据序列化的目录,建议在logdir上一级目录执行此命令;
  • TensorBoard运行后,在浏览器输入“localhost:6006”即可查看TensorBoard;

帮助信息

  • 使用“tensorboard --help”查看tensorboard的详细参数

示例

程序代码

 # coding=utf-8
from __future__ import print_function
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '' # ### 添加神经层 def add_layer(inputs, in_size, out_size, n_layer, activation_function=None): # 参数n_layer用来标识层数
layer_name = 'layer{}'.format(n_layer)
with tf.name_scope(layer_name): # 使用with tf.name_scope定义图层,并指定在可视化图层中的显示名称
with tf.name_scope('weights'): # 定义图层并指定名称,注意这里是上一图层的子图层
Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W') # 参数name指定名称
tf.summary.histogram(layer_name + '/weights', Weights) # 生成直方图summary,指定图表名称和记录的变量
with tf.name_scope('biases'): # 定义图层并指定名称
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b') # 参数name指定名称
tf.summary.histogram(layer_name + '/biases', biases) # 生成直方图summary
with tf.name_scope('Wx_plus_b'): # 定义图层并指定名称
Wx_plus_b = tf.matmul(inputs, Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
tf.summary.histogram(layer_name + '/outputs', outputs) # 生成直方图summary
return outputs # ### 构建数据
x_data = np.linspace(-1, 1, 300, dtype=np.float32)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
y_data = np.square(x_data) - 0.5 + noise # ### 搭建网络
with tf.name_scope('inputs'): # 定义图层并指定名称
xs = tf.placeholder(tf.float32, [None, 1], name='x_input') # 指定名称为x_input,也就是在可视化图层中的显示名称
ys = tf.placeholder(tf.float32, [None, 1], name='y_input') # 指定名称为y_input h1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu) # 隐藏层
prediction = add_layer(h1, 10, 1, n_layer=2, activation_function=None) # 输出层 with tf.name_scope('loss'): # 定义图层并指定名称
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
tf.summary.scalar('loss', loss) # 用于标量的summary,loss在TensorBoard的event栏 with tf.name_scope('train'): # 定义图层并指定名称
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) sess = tf.Session()
merged = tf.summary.merge_all() # 合并之前定义的所有summary操作
writer = tf.summary.FileWriter("logs/", sess.graph) # 创建FileWriter对象和event文件,指定event文件的存放目录
init = tf.global_variables_initializer()
sess.run(init) # ### 结果可视化
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.scatter(x_data, y_data)
plt.ion()
plt.show() # ### 训练
for i in range(1001):
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
if i % 50 == 0:
result = sess.run(loss, feed_dict={xs: x_data, ys: y_data})
print("Steps:{} Loss:{}".format(i, result))
rs = sess.run(merged, feed_dict={xs: x_data, ys: y_data}) # 在sess.run中运行
writer.add_summary(rs, i)
try:
ax.lines.remove(lines[0])
except Exception:
pass
prediction_value = sess.run(prediction, feed_dict={xs: x_data})
lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
plt.pause(0.2) # ### TensorBoard
# TensorFlow自带的可视化工具,能够以直观的流程图的方式,清楚展示出整个神经网络的结构和框架,便于理解模型和发现问题;
# - 可视化学习:https://www.tensorflow.org/guide/summaries_and_tensorboard
# - 图的直观展示:https://www.tensorflow.org/guide/graph_viz;
# - 直方图信息中心:https://www.tensorflow.org/guide/tensorboard_histograms
#
# ### 启动TensorBoard
# 使用命令“tensorboard --logdir=path/to/log-directory”(或者“python -m tensorboard.main”);
# 参数logdir指向FileWriter将数据序列化的目录,建议在logdir上一级目录执行此命令;
# TensorBoard运行后,在浏览器输入“localhost:6006”即可查看TensorBoard;

程序运行结果

运行过程中显示的图形:

某一次运行的命令行输出:

Steps:0  Loss:0.19870562851428986
Steps:50 Loss:0.006314810831099749
Steps:100 Loss:0.0050856382586061954
Steps:150 Loss:0.0048223137855529785
Steps:200 Loss:0.004617161583155394
Steps:250 Loss:0.004429362714290619
Steps:300 Loss:0.004260621033608913
Steps:350 Loss:0.004093690309673548
Steps:400 Loss:0.003932977095246315
Steps:450 Loss:0.0038178395479917526
Steps:500 Loss:0.003722294932231307
Steps:550 Loss:0.003660505171865225
Steps:600 Loss:0.0036110866349190474
Steps:650 Loss:0.0035716891288757324
Steps:700 Loss:0.0035362064372748137
Steps:750 Loss:0.0034975067246705294
Steps:800 Loss:0.003465239657089114
Steps:850 Loss:0.003431882942095399
Steps:900 Loss:0.00339301535859704
Steps:950 Loss:0.0033665322698652744
Steps:1000 Loss:0.003349516075104475

生成的TensorBoard文件:

(mlcc) D:\Anliven\Anliven-Code\PycharmProjects\TempTest>dir logs
驱动器 D 中的卷是 Files
卷的序列号是 ACF9-2E0E D:\Anliven\Anliven-Code\PycharmProjects\TempTest\logs 的目录 2019/02/24 23:41 <DIR> .
2019/02/24 23:41 <DIR> ..
2019/02/24 23:41 137,221 events.out.tfevents.1551022894.DESKTOP-68OFQFP
1 个文件 137,221 字节
2 个目录 219,401,887,744 可用字节 (mlcc) D:\Anliven\Anliven-Code\PycharmProjects\TempTest>

启动与TensorBoard

执行下面的启动命令,然后在浏览器中输入“http://localhost:6006/”查看。

(mlcc) D:\Anliven\Anliven-Code\PycharmProjects\TempTest>tensorboard --logdir=logs
TensorBoard 1.12.0 at http://DESKTOP-68OFQFP:6006 (Press CTRL+C to quit)

栏目Scalars

栏目Graphs

  • 通过鼠标滑轮可以改变显示大小和位置
  • 鼠标双击“+”标识可以查看进一步的信息
  • 可以将指定图层从主图层移出,单独显示

栏目Distributions

栏目histograms

AI - TensorFlow - 可视化工具TensorBoard的更多相关文章

  1. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用

    一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...

  2. 深度学习可视化工具--tensorboard的使用

    tensorboard的使用 官方文档 # writer.add_scalar() # 添加标量 """ Args: tag (string): Data identif ...

  3. 深度学习-CNN tensorflow 可视化

    tf.summary模块的简介 在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程.利用Matpltlib进行可视化.利用TensorFlow自 ...

  4. 0703-可视化工具tensorboard和visdom

    0703-可视化工具tensorboard和visdom 目录 一.可视化工具概述 二.TensorBoard 三.Visdom 3.1 visdom 概述 3.2 visdom 的常用操作 3.3 ...

  5. 使用TensorBoard可视化工具

    title: 使用TensorBoard可视化工具 date: 2018-04-01 13:04:00 categories: deep learning tags: TensorFlow Tenso ...

  6. 可视化学习Tensorboard

    可视化学习Tensorboard TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算.为了更方便 TensorFlow 程序的理解.调试与优化,发布了一 ...

  7. tensorflow学习笔记----TensorBoard讲解

    TensorBoard简介 TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件.TensorBoard目前支持7种可视化,Scalars,Images, ...

  8. 一个简单的TensorFlow可视化MNIST数据集识别程序

    下面是TensorFlow可视化MNIST数据集识别程序,可视化内容是,TensorFlow计算图,表(loss, 直方图, 标准差(stddev)) # -*- coding: utf-8 -*- ...

  9. BERT可视化工具bertviz体验

    BERT可视化工具体验:bertviz是用于BERT模型注意力层的可视化页面. 1,bertviz的github地址:https://github.com/jessevig/bertviz 2,将be ...

随机推荐

  1. sublime安装AngularJS插件

    sublime能够支持AngularJS开发那绝对是一件很爽的事情.下面我一步步讲解如何为sublime安装AngularJS插件. 1.添加控制包站点 根据你安装sublime 版本不同,在控制台写 ...

  2. Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)

    上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...

  3. python类型转换convert实例分析

    在python的开发过程中,难免会遇到类型转换,这里给出常见的类型转换demo: 类型 说明 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 ...

  4. DDD实战进阶第一波(十一):开发一般业务的大健康行业直销系统(实现经销商代注册用例与登录令牌分发)

    前两篇文章主要实现了经销商代注册的仓储与领域逻辑.经销商登录的仓储与相关逻辑,这篇文章主要讲述经销商代注册的用例与经销商登录的查询功能. 一.经销商代注册用例 在经销商代注册用例中,我们需要传递经销商 ...

  5. 测试网页时需要添加等待的情形 (Selenium)

    测试网页时需要添加等待的情形: 1. 网页跳转 2. DOM结构发生改变.

  6. Mave手动安装jar包

    今天配置Maven项目时有一个相应的jdbc驱动jar包导不进去,就自己导入了. 首先在官网上下载该jar包,地址为http://mvnrepository.com/ 点击jar下载. 用maven命 ...

  7. C++中将整型数与字符串型之间的类型转换

    整数转换成字符串类型: 方法一: 这里用到了char *itoa(int value, char *string, int radix); 函数当中参数为:int value 被转换的整数,char ...

  8. noip2010 引水入城 bfs+贪心

    如果能够实现,每个河边的城市对应的控制区域一定是一条线段. 所以直接bfs每个河边的城市,贪心线段的右端点 #include<cstdio> #include<cstring> ...

  9. BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割

    BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...

  10. Django基础四(model和数据库)

    上一篇博文学习了Django的form和template.到目前为止,我们所涉及的内容都是怎么利用Django在浏览器页面上显示内容.WEB开发除了数据的显示之外,还有数据的存储,本文的内容就是如何在 ...