先学习几个英文单词

summary  汇总,摘要

scope    范围

我这是很早以前的笔记,后来有了博客才发布的,有些内容比较老,懒得改了。 

先说明总体流程

暂时不管怎么编程,假设已经有了如下代码,可执行的。

# encoding:utf-8
import tensorflow as tf print('version:', tf.__version__)
foo = tf.Variable(3, name='foo')
bar = tf.Variable(2, name='bar')
result = tf.add(foo, bar, name='add')
# 初始化变量
init = tf.global_variables_initializer()
# 启动图 (graph)
sess = tf.Session()
sess.run(init)
res = sess.run(result)
print('result:', res)
train_writer = tf.summary.FileWriter('log2', sess.graph)

可视化效果,先感性认识一下

可视化简要步骤

1.运行该代码

  // 此时在log2中已经生成文件

2.启动可视化工具

  a. 找到tensorflow下的tensorboard.py文件,运行该文件,python tensorboard.py --logdir=...../log2/    注意这里的路径和代码里的路径要一致 (这是老版本的)

  b. 直接运行 tensorboard --host=10.10.101.2 --port=6099 --logdir="my_graph"  

    // tensorBoard 不需要额外的安装,在tensorflow安装完成时,TensorBoard会被自动安装

    // port host 可有可无

    // 目录不带引号

3. 在浏览器中 访问 localhost:6006,点击graphs,即可看到

4. 注意每运行一次代码就要重启这个工具

详细说明

1. 数据序列化

tf可视化实际上是把运算数据序列化到本地,然后用浏览器加载这些数据

这个本地文件叫 ‘事件文件’,通过tensorboard来读取

weights = tf.Variable(tf.random_normal([3,2]), name='w')
sess = tf.Session()
writer = tf.summary.FileWriter('log2', sess.graph)    # 序列化

SummaryWriter 两个参数,第一个参数是序列化的地址,第二个参数可选,如果输入了该参数,tensorboard就会显示图像。

2. 名字的作用域 scope

tf.name_scope() 会创建一个作用域,该作用域下的变量名都会加上该作用域的名字

with tf.name_scope('test'):
weights = tf.Variable(tf.random_normal([3,2]), name='w') sess = tf.Session()
writer = tf.summary.FileWriter('log2', sess.graph)

以上两步基本上就可以实现画图了

但是可视化不止画图

3.可视化内容

1. events 就是那些变量, 序列化后存到本地

  // 通过向节点附加 scalar_summary 操作来输出变量

2. graphs 就是图,图里只有网络结构,没有数据

3. histograms 是直方图,把数据画成直方图

  // 通过向节点附加 histogram_summary 操作来输出直方图

这其实都是先存数据,再可视化,所以也是需要在绘画中执行,那么如果你想输出很多数据,就需要在会话中挨个输出,很麻烦

tf 提供了一个合并操作,就是将这些输出合并,在会话中一次性全部输出,接口 tf.merge_all_summaries()

# coding:utf-8
import tensorflow as tf
import numpy as np # 此代码仅用于可视化 x_data = np.random.rand(100).astype("float32") with tf.name_scope('y_data'):
y_data = x_data * 2.5 + 0.8
# tf.histogram_summary("method_demo"+"/y_data",y_data)
tf.summary.histogram("method_demo"+"/y_data",y_data) with tf.name_scope('W'):
W = tf.Variable(tf.random_uniform([1], -200.0, 200.0))
tf.summary.histogram("method_demo"+"/W",W) with tf.name_scope('b'):
b = tf.Variable(tf.zeros([1]))
tf.summary.histogram("method_demo"+"/b",b) with tf.name_scope('y'):
y = W * x_data + b
tf.summary.histogram("method_demo"+"/y",y) # 最小化均方
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.square(y - y_data))
tf.summary.histogram("method_demo"+"/loss",loss)
tf.summary.scalar("method_demo222"+'loss',loss) optimizer = tf.train.GradientDescentOptimizer(0.7)
with tf.name_scope('train'):
train = optimizer.minimize(loss) init = tf.global_variables_initializer() sess = tf.Session() #合并到Summary中
merged = tf.summary.merge_all() #选定可视化存储目录
writer = tf.summary.FileWriter('log2',sess.graph) sess.run(init) # 开始计算
for step in range(500):
sess.run(train)
# tf.histogram_summary('method_demo'+'/train',train)
if step % 5 == 0:
print(step, "W:",sess.run(W),"b:", sess.run(b)) result = sess.run(merged) #merged也是需要run的
writer.add_summary(result,step) #result是summary类型 (result 纵坐标 step 横坐标)

运行 tensorboard,即可在浏览器访问

异常记录

1. InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'input/input_y' with dtype float and shape [100,1]

这个问题我查了好久,各种回答都有,都验证无效,解决方案见代码

# 以下皆可
merged = tf.summary.merge_all()
# merged = tf.summary.merge([loss_scalar]) writer = tf.summary.FileWriter('logs', sess.graph) sess.run(init)
for i in range(1000):
loss2, _ = sess.run([loss, optimizer], feed_dict={input_x:x[:, np.newaxis], input_y:y[:, np.newaxis]}) # result = sess.run(merged) # 这样写报错
# InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'input/input_y' with dtype float and shape [100,1]
result = sess.run(merged, feed_dict={input_x:x[:, np.newaxis], input_y:y[:, np.newaxis]}) writer.add_summary(result, i)

需要喂参数

tensorflow-可视化的更多相关文章

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

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

  2. AI - TensorFlow - 可视化工具TensorBoard

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

  3. tensorboard实现tensorflow可视化

    1.工程目录 2.data.input_data.py的导入 在tensorflow更新之后可以进行直接的input_data的导入 # from tensorflow.examples.tutori ...

  4. Tensorflow可视化MNIST手写数字训练

    简述] 我们在学习编程语言时,往往第一个程序就是打印“Hello World”,那么对于人工智能学习系统平台来说,他的“Hello World”小程序就是MNIST手写数字训练了.MNIST是一个手写 ...

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

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

  6. Tensorflow可视化-P295-Tensorboard可视化

    各模块含义 1>表示一个Batch的大小是不确定的 2>当两个节点之间传输的张量多与1时,可视化效果图将只显示张量的个数 3>效果图上的粗细表示两个节点之间传输的标量维度的总大小,而 ...

  7. Tensorboard教程:Tensorflow命名空间与计算图可视化

    Tensorflow命名空间与计算图可视化 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 强烈推荐Tensorflow实战Google深度学习框架 实验平台: Tensorflow ...

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

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

  9. TensorFlow实战第四课(tensorboard数据可视化)

    tensorboard可视化工具 tensorboard是tensorflow的可视化工具,通过这个工具我们可以很清楚的看到整个神经网络的结构及框架. 通过之前展示的代码,我们进行修改从而展示其神经网 ...

  10. tensorflow笔记(一)之基础知识

    tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...

随机推荐

  1. 远程服务器返回了意外相应:(413) Request Entity Too Large。

    在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...

  2. p1215

    一开始没用数组,没成功.后来确定用深搜后,用数组.出现一个不同的abc状态就记录下来,以免重复.一开始要倒的肯定是c杯,之后出现新状态要递归dfs3次.另外发现algorithm里的copy是原数组在 ...

  3. Beautiful Paintings CodeForces - 651B (贪心)

    大意: 给定序列$a$, 可以任意排序, 求最大下标i的个数, 满足$a_i<a_{i+1}$. 这个贪心挺好的, 答案就为n-所有数字出现次数最大值.

  4. arp欺骗图解

    ARP协议:地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的. 防止ARP攻击的方法: 1.使用 ...

  5. nodejs进程线程优化性能

    1. node.js 单线程的特点 node.js 以异步非阻塞单线程,作为其执行速度的保障.什么是非阻塞单线程? 举一个现实生活中的例子,我去巢大食堂打饭,我选择了A套餐,然后工作人员区为我配餐,我 ...

  6. Leetcode 1020. 将数组分成和相等的三个部分

    1020. 将数组分成和相等的三个部分  显示英文描述 我的提交返回竞赛   用户通过次数321 用户尝试次数401 通过次数324 提交次数883 题目难度Easy 给定一个整数数组 A,只有我们可 ...

  7. Mac 安装md5sum等

    一.安装md5sum 方案1.使用brew 安装 方案2.使用源码编译安装 源码下载地址:http://www.microbrew.org/tools/md5sha1sum/md5sha1sum-0. ...

  8. 1003. Check If Word Is Valid After Substitutions Medium检查替换后的词是否有效

    网址:https://leetcode.com/problems/check-if-word-is-valid-after-substitutions/ 参考:https://leetcode.com ...

  9. 一、I/O操作(中文问题)

    一.编码概念 计算机存放数据只能存放数字,所有的字符都会被转换为不同的数字. 常见的编码有:ISO-8859-1 ASCII数字和西欧字母 GBK:简体中文和繁体,以及日文 GB2312:简体中文 B ...

  10. 33 个 2017 年必须了解的 iOS 开源库

    本文翻译自Medium,原作者为Pawe? Bia?ecki 照片版权:(Unsplash/Markus Pe) 你好,iOS 开发者们!我的名字叫 Pawe?,我是一个独立 iOS 开发者,并且是  ...