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 ...
随机推荐
- app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印
在app的后台中,有时候为了标示版权,需要给图片加上水印. 在liunx中,IM4JAVA+GraphicsMagick是个高效处理图片的方案,图片的裁剪是使用了这个技术方案,为了减少不必要的开发成本 ...
- (二)Servlet入门之HelloWorld
在整个Servlet程序中最重要的就是Servlet接口,在此接口下定义了一个GenericServlet的子类,但是,一般不会直接继承此类,而是根据所使用的协议选择GenericServlet的子类 ...
- I/O------字节输出流
package io.day03; import java.io.FileOutputStream; import java.io.OutputStream; public class day03ou ...
- go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin
nsqlookupd: 官方文档解释见:http://bitly.github.io/nsq/components/nsqlookupd.html 用官方话来讲是:nsqlookupd管理拓扑信息,客 ...
- Java基础-递归调用
意义: 递归算法是一种直接或间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 所以在工作中我们经常用递归 来进行一些算法操作 比如 ...
- STM32 Cube mx 安装
原文链接:http://www.cnblogs.com/strongerHuang/p/5778216.html Ⅰ.写在前面 相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32 ...
- Ubuntu配置tomcat9
buntu 安装jdk:[链接] Ubuntu安装eclipse:[链接] Ubuntu下安装MySQL与mysql workbench:[链接] Ubuntu配置tomcat9:[链接] Ubunt ...
- uiautomator——简单的将自动化测试与截图对比相结合使用的小例子!
1.在使用uiautomator进行自动化测试过程当中,执行某些动作之后,要进行判断是否已执行的动作成功时,需要添加检查点来判断,因此添加判断点除了使用id.text.view等方式进行之外,存在一种 ...
- MYSQL——解题查询语句答题思路,再难的查询都不怕!
select查询语句,作为测试人员,使用此语句是家常便饭,是必须掌握的部分,由开始学习mysql到网上搜索试题做,开始做题一塌糊涂,拿到题目就晕,无从下手,现在慢慢总结了一套自己做题的方式,很开森,嘿 ...
- 并发的核心:CAS 是什么?Java8是如何优化 CAS 的?
大家可能都听说说 Java 中的并发包,如果想要读懂 Java 中的并发包,其核心就是要先读懂 CAS 机制,因为 CAS 可以说是并发包的底层实现原理. 今天就带大家读懂 CAS 是如何保证操作的原 ...