系列博客链接:

(一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html

本文概述:

  说明图的基本使用

  应用tf.Graph创建图、tf.get_default_graph获取默认图

  知道开启TensorBoard过程

  知道图当中op的名字

1、什么是图结构

图包含了一组tf.Operation代表计算单元的对象和tf.Tensor代表计算单元之间流动的数据。

2、图相关操作

2.1 图中操作、会话默认属性

默认op、sess都含有graph属性 ,都在一张图中

2.2 获取默认图

Graph默认注册,并可通过调用访问 tf.get_default_graph,要将操作添加到默认图形中,直接创建OP即可。

  1. # 实现一个加法运算
  2. a = tf.constant(3.0)
  3. b = tf.constant(4.0)
  4.  
  5. sum = tf.add(a, b)
  6.  
  7. # 图:打印出来,就是一个分配内存的地址
  8. # more所有的张量、op、会话都在一张图当中
  9. print(tf.get_default_graph())
  10.  
  11. # print(sum)
  12. # 会话,默认只能运行默认的图,不能运行其它的(可以通过参数解决)
  13. with tf.Session() as sess:
  14. print(sess.run(sum1))
  15. print(a.graph)
  16. print(b.graph)
  17. print(sess.graph)

2.3 创建图

可以通过tf.Graph创建图,如果要在这张图中创建OP,典型用法是使用tf.Graph.as_default上下文管理器

  1. g = tf.Graph()
  2. with g.as_default():
  3. # 在g图中定义了一个operation
  4. c = tf.constant(30.0)
  5. assert c.graph is g

那么TensorFlow有一个亮点就是,我们能看到自己写的程序,这个功能就是Tensorboard,在这里先简单介绍一下基本功能。

3、 TensorBoard:可视化学习

TensorFlow 可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了更方便 TensorFlow 程序的理解、调试与优化,有了TensorBoard 的可视化工具。

 

3.1 数据序列化-events文件

TensorBoard 通过读取 TensorFlow 的事件文件来运行,需要将数据生成一个序列化的 Summary protobuf 对象。

  1. # 返回filewriter,写入事件文件到指定目录(最好用绝对路径),以提供给tensorboard使用
  2. tf.summary.FileWriter('/tmp/tensorflow/summary/test/', graph=sess.graph)

这将在指定目录中生成一个 event 文件,其名称格式如下:

  1. events.out.tfevents.{timestamp}.{hostname}

3.2 启动TensorBoard

  1. tensorboard --logdir="/tmp/tensorflow/summary/test/"

在浏览器中打开 TensorBoard 的图页面 127.0.0.1:6006,会看到与以下图形类似的图,在GRAPHS模块我们可以看到以下图结构

4、OP

哪些是OP?

 只要是tf下的API我们都可以称之为一个OP,也称之为指令

  1. a = tf.constant(3.0, dtype=tf.float32)
  2. b = tf.constant(4.0) # also tf.float32 implicitly
  3. total = a + b
  4. print(a)
  5. print(b)
  6. print(total)

打印语句会生成:

  1. Tensor("Const:0", shape=(), dtype=float32)
  2. Tensor("Const_1:0", shape=(), dtype=float32)
  3. Tensor("add:0", shape=(), dtype=float32)

注意,打印出来的是张量值,可以理解成OP当中包含了这个值。并且每一个OP指令都对应一个唯一的名称,如上面的Const:0,这个在TensorBoard上面也可以显示。

请注意,tf.Tensor 对象以输出张量的 tf.Operation 明确命名。

4.1 指令名称

tf.Graph对象为其包含的 tf.Operatio对象定义一个命名空间。TensorFlow 会自动为您的图中的每个指令选择一个唯一名称,但您也可以指定描述性名称,使程序阅读起来更轻松。我们可以以下方式改写指令名称

  • 每个创建新的 tf.Operation 或返回新的 tf.Tensor 的 API 函数可以接受可选的 name 参数。
  1. 例如,tf.constant(42.0, name="answer") 创建一个名为 "answer" 的新 tf.Operation 并返回一个名为 "answer:0" tf.Tensor
    如果默认图已包含名为 "answer" 的指令,则 TensorFlow 会在名称上附加 "1""2" 等字符,以便让名称具有唯一性。
  • 当修改好之后,我们在Tensorboard显示的名字也会被修改
  1. a = tf.constant(3.0, name="a")
  2. b = tf.constant(4.0, name="b" )

(第一章第二部分)TensorFlow框架之图与TensorBoard的更多相关文章

  1. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  2. ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

    原文:ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了 ...

  3. 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍

    Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...

  4. CSS3秘笈复习:第一章&第二章&第三章

    第一章: 1.<cite>标签不仅可以将网页设置为斜体,还能给标题做上标记,使它便于被搜索引擎搜索到. 第二章: 1.import指令链接样式表: CSS本身有一种添加外部样式的方法:@i ...

  5. AI学习---TensorFlow框架介绍[图+会话+张量+变量OP+API]

    TensorFlow的数据流图 TensorFlow的结构分析: 图 + 会话 TensorFlow = 构图阶段(数据与操作的执行步骤被描绘出一个图) + 执行图阶段(使用回话执行构建好的图中操作) ...

  6. Practical Vim 第一章 & 第二章

    第一章:Vim 解决问题的方式 前言 本质上讲,我们的工作是重复性的.凡是可以简化重复性操作的方式,都会成倍地节省我们的时间. Vim 对重复性操作进行了优化.它之所以能高效地重复,是因为它会记录我们 ...

  7. Linux第一章第二章学习笔记

    第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...

  8. Linux内核设计与实现 第一章 第二章

    第一章 Linux内核简介 Unix特点: (1)     Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2)     在Unix中,所有的东西都被当作文件对待,通过一套相 ...

  9. progit 学习笔记-- 1 第一章 第二章

    * 1 起步**  关于版本控制*** 什么是版本控制?记录文件变化,查阅特定版本,回溯到之前的状态.任何类型的文件进行版本控制.复制整个目录 加上备份时间 简单 混淆 无法恢复本地版本控制 数据库记 ...

随机推荐

  1. PyTorch 介绍 | DATSETS & DATALOADERS

    用于处理数据样本的代码可能会变得凌乱且难以维护:理想情况下,我们希望数据集代码和模型训练代码解耦(分离),以获得更好的可读性和模块性.PyTorch提供了两个data primitives:torch ...

  2. [HZOI] 山海经 题解

    0.题目大意 给出一个序列,每次查询一个区间的最大子段和的端点和值.序列长度 \(n \le 10^{5}\) . 1.思路 显然应该使用线段树.题目要求每次求一个区间的最大子段和,那么在线段树节点中 ...

  3. SQL解析器详解

    1.概述 最近,有同学留言关于SQL解析器方面的问题,今天笔者就为大家分享一下SQL解析器方便的一些内容. 2.内容 2.1 SQL解析器是什么? SQL解析与优化是属于编辑器方面的知识,与C语言这类 ...

  4. Nginx 根据不同的域名来代理转发内部主机-HTTP和HTTPS

    一.需求 由于公司只有一个公网,很多 web 项目都想通过 80 或 443 端口来访问,所以需要 Nginx 充当公司网关. 把唯一的公网 IP 80 端口和 443 端口跟 Nginx 网关主机 ...

  5. CSP2019 Day2T2 划分

    很显然有一个暴力 \(dp\),令 \(dp_{i, j}\) 表示最后一次划分在 \(i\) 上次划分在 \(j\) 的最小花费,令 \(S_i = \sum\limits_{j = 1} ^ i ...

  6. Linux 查看运行中进程的 umask

    线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用.这个应用会生成一个文件,到NFS挂载目录. 而这个 NFS 挂载目录是一个 FTP 服务器的目录.另一台 ...

  7. JVM学习四:深入分析ClassLoader

    一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程 ...

  8. 入门 - k8s滚动更新部署中的镜像版本 (七)

    目标 使用 kubectl 执行 Rolling Update(滚动更新) 更新应用程序 用户期望应用程序始终可用,为此开发者/运维者在更新应用程序时要分多次完成.在 Kubernetes 中,这是通 ...

  9. shell下快捷键

    ### 1.快捷键 ^C   终止前台运行的程序 ^D   退出 等价于exit ^L   清屏 ^A   光标移动到命令行的最前端 ^E   光标移动到命令行的最后端 ^U   删除光标前所有字符 ...

  10. git rebase git merge

    Git rebase 使用方法 1. git checkout feature 2. git rebase master feature 相当于git rebase master + git chec ...