AI - TensorFlow - 可视化工具TensorBoard
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;
帮助信息
- 使用“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的更多相关文章
- TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用
一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...
- 深度学习可视化工具--tensorboard的使用
tensorboard的使用 官方文档 # writer.add_scalar() # 添加标量 """ Args: tag (string): Data identif ...
- 深度学习-CNN tensorflow 可视化
tf.summary模块的简介 在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程.利用Matpltlib进行可视化.利用TensorFlow自 ...
- 0703-可视化工具tensorboard和visdom
0703-可视化工具tensorboard和visdom 目录 一.可视化工具概述 二.TensorBoard 三.Visdom 3.1 visdom 概述 3.2 visdom 的常用操作 3.3 ...
- 使用TensorBoard可视化工具
title: 使用TensorBoard可视化工具 date: 2018-04-01 13:04:00 categories: deep learning tags: TensorFlow Tenso ...
- 可视化学习Tensorboard
可视化学习Tensorboard TensorBoard 涉及到的运算,通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算.为了更方便 TensorFlow 程序的理解.调试与优化,发布了一 ...
- tensorflow学习笔记----TensorBoard讲解
TensorBoard简介 TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件.TensorBoard目前支持7种可视化,Scalars,Images, ...
- 一个简单的TensorFlow可视化MNIST数据集识别程序
下面是TensorFlow可视化MNIST数据集识别程序,可视化内容是,TensorFlow计算图,表(loss, 直方图, 标准差(stddev)) # -*- coding: utf-8 -*- ...
- BERT可视化工具bertviz体验
BERT可视化工具体验:bertviz是用于BERT模型注意力层的可视化页面. 1,bertviz的github地址:https://github.com/jessevig/bertviz 2,将be ...
随机推荐
- C#中的is和as
is检查一个对象是否兼容于指定的类型,不返回Boolean值.注意is操作符永远不会抛异常.is操作符通常这样使用: if(o is Employee) { Employee e=(Employee) ...
- 面试时怎样回答:你对原生ajax的理解
很多人跟我一样用习惯了jq封装好的$.ajax,但是面试时,原生ajax是很多面试官喜欢问的问题,今天再查资料,打算好好整理一下自己理解的原生ajax. 首先,jq的ajax:一般我常用的参数就是这些 ...
- 第一天 Java语言概述
一.什么是软件 软件就是按照特定的顺序把数据和指令组合在一起,能够完成相应功能的程序. 软件分为两种: 系统软件:专门用户运行其他程序的平台.比如Linux.Windows.MAC等 应用软件:完成相 ...
- LuoguP4234_最小差值生成树_LCT
LuoguP4234_最小差值生成树_LCT 题意: 给出一个无向图,求最大的边权减最小的边权最小的一棵生成树. 分析: 可以把边权从大到小排序,然后类似魔法森林那样插入. 如果两点不连通,直接连上, ...
- K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院
A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...
- java面试题总结
一.http://blog.csdn.net/moneyshi/article/details/50786786 二.http://blog.csdn.net/moneyshi/article/det ...
- linux 搜索某个系统命令的位置
Which命令 功能简述which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果.也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置 ...
- Python核心编程
对<Python核心编程>的褒奖" The long-awaited second edition of Wesley Chun's Core PythonProgramming ...
- MySQL 上手教程
安装 通过官网选择版本下载安装.Mac 上可通过 Homebrew 方便地安装: $ brew install mysql 检查安装是否成功: $ mysql --version mysql Ver ...
- FOFA爬虫大法——API的简单利用
FOFA是一款网络空间搜索引擎,它通过进行网络空间测绘,帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析.应用分布统计.应用流行度等. 何为API?如果你在百度百科上搜索,你会得到如 ...