• 第3章 TensorFlow入门

    • 3.1 TensorFlow计算模型——计算图

      • 3.1.1 计算图的概念
      • 3.1.2 计算图的使用
    • 3.2 TensorFlow数据模型——张量
      • 3.2.1 张量的概念
      • 3.2.2 张量的使用
    • 3.3 TensorFlow运行模型——会话

第3章 TensorFlow入门

3.1 TensorFlow计算模型——计算图

计算图是TF框架中最基本的概念,所有的计算都会被转化为计算图上的点,下面详细介绍计算图。

3.1.1 计算图的概念

Tensor——张量,可以理解为多维数组;

Flow——流,体现了计算模型,表达了张量之间通过计算相互转化的过程;

每个计算都会被转化为计算图上的一个节点,节点之间的边描述了计算之间的依赖关系

3.1.2 计算图的使用

Tensorflow程序会分为两个阶段:

  • 第一阶段需要定义计算图中的所有计算

  • 第二阶段执行计算

函数 效果
tf.get_default_graph 获取当前默认的计算图
tf.Graph 生成新的计算图
tf.Graph_device 指定运算设备

计算图的另一个功能:有效整理TF程序中的资源

通过集合来整合资源:

函数 效果
tf.add_to_collection 将资源加入一个或多个集合
tf.get_collection 获取一个集合中的所有资源

为方便使用,TF也自动管理了一些常用的集合

集合名称 集合内容 使用场景
tf.GraphKeys.VARIABLES 所有变量 持久化TensorFlow模型
tf.GraphKeys.TRAINABLE_VARIABLES 可学习的变量 模型训练、生成模型可视化内容
tf.GraphKeys.SUMMARIES 日志生成相关张量 TensorFlow计算可视化
tf.GraphKeys.QUEUE_RUNNERS 处理输入的QueueRunner 输入处理
tf.GRaphKeys.MOVING_AVEGAGE_VARIABLES 所有计算了滑动平均值的变量 计算变量的滑动平均值

3.2 TensorFlow数据模型——张量

张量是TF的数据管理形式

3.2.1 张量的概念

在TF程序中,所有的数据都是通过张量的形式来表示的,从功能角度看,张量可以被理解为多维数组,其中零阶张量表示标量(scalar),也就是一个数;一阶张量表示向量(vector),也就是也一维数组;n阶张量可以理解为n维数组。

张量的实现:并不是直接采用数组的形式,而只是对tensorflow中计算结果的引用。

张量保存的是什么:并不是真正的数字,而是保存如何得到这些数字的计算过程。

张量的属性:名字(name)、维度(shape)、类型(type)

Tensor("MatMul:0", shape=(1, 1), dtype=int32)
  • 名字:张量的唯一标识符,且说明了张量是如何计算出来的; node:src_output的形式

    • node:节点名称
    • src_output:当前张量来自第几个节点的第几个输出(MatMul:0表示计算节点“MatMul的第一个结果”)
  • 维度:描述了张量的维度信息(shape=(1, 1)表示该张量是二维数组)
  • 类型:每个张量会有一个唯一的类型(TF会对所有参与运算的张量进行类型检查,不匹配会报错)

3.2.2 张量的使用

  • 第一类:对中间结果进行引用,当一个计算包含很多中间结果时,使用张量可以提高代码可读性。
a=tf.constant([1.0,2.0],name="a")
b=tf.constant([2.0,3.0],name="b")
result=a+b
  • 第二类:当计算图构造完成之后,张量可以用来获得计算结果,也就是得到真实的数字。

虽然张量本身没有存储具体数字,但可以通过会话(session)来得到具体数字

3.3 TensorFlow运行模型——会话

会话(session):执行定义好的运算

会话拥有并管理TensorFlow程序运行时的所有资源,当所有计算完成之后需要关闭会话来回收资源,否则可能出现资源泄露的问题。

会话模式有两种:

  • 第一种模式:需要明确调用会话生成函数和关闭会话函数(当程序异常退出时,关闭会话函数可能不会执行,导致资源泄露)
# 创建一个会话
sess = tf.Session()
# 使用这个创建好的会话得到关心的运算结果
sess.run(result)
# 关闭会话
sess.close()
  • 第二种模式:通过Python上下文管理机制
with tf.Session() as sess:sess.run(result)
# 当上下文退出时会话关闭,资源可以被释放。

会话如何生成:指定默认会话(默认会话不会自动生成),通过 tf.Tensor.eval 函数计算张量取值。

run和eval的区别:ecal一次只能得到一个节点的值,run可以得到多个节点的值

sess = tf.Session()
with sess.as_default():print(result.eval())
[ 4.  6.]

以下代码实现相同的功能:

sess = tf.Session()# 下面的两个命令有相同的功能
print(sess.run(result))
print(result.eval(session = sess))

使用tf.InteractiveSession()构建会话:

通过默认会话的方式获取张量的取值会更加方便,TensorFlow提供了一种在交互式环境下直接构建默认会话的函数,会自动将生成的会话注册为默认会话。

sess=tf.InteractiveSession()
print(result.eval())
sess.close()

使用ConfigProto Protocol Buffer配置需要生成的会话:

config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
sess1 = tf.InteractiveSession(config=config)
sess2 = tf.Session(config=config)

allow_soft_placement=True 在下面的任意一个条件成立,GPU的运算可以放到CPU上进行:
运算无法在GPU上执行;
没有GPU资源(比如运算被指定在第二个GPU上运行,但是机器只有一个GPU);
运算输入包含对CPU计算结果的引用。
log_device_placement=True日志中将会记录每个节点被安排在了哪个设备上以方便调试。

TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型相关推荐

  1. 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记

    一.图像识别问题简介及经典数据集 图像识别问题希望借助计算机程序来处理.分析和理解图片中的内容,使得计算机可以从图片中自动识别各种不同模式的目标和对象.图像识别问题作为人工智能的一个重要领域,在最近几 ...

  2. (转)Tensorflow 实战Google深度学习框架 读书笔记

    本文大致脉络: 读书笔记的自我说明 对读书笔记的摘要 具体章节的摘要: 第一章 深度学习简介 第二章 TensorFlow环境搭建 第三章 TensorFlow入门 第四章 深层神经网络 第五章 MN ...

  3. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架

    小编说  时间过的好快啊,小伙伴们是不是都快进入寒假啦?但是学习可不要落下哦!  本期教材  本期为大家发放的教材为:<Python机器学习实践指南>.<Tensorflow 实战G ...

  4. 《Tensorflow 实战google深度学习框架》第二版源代码

    <<Tensorflow 实战google深度学习框架–第二版>> 完整资料github地址: https://github.com/caicloud/tensorflow-t ...

  5. 学习《TensorFlow实战Google深度学习框架 (第2版) 》中文PDF和代码

    TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用.<TensorFlow:实战Google深度学习框架(第2版)>为TensorFlow入门参考书,帮助快速. ...

  6. 说说TensorFlow实战Google深度学习框架

    说说TensorFlow实战Google深度学习框架 事情是这样的,博主买了这本书,但是碍于想在电脑上边看边码,想找找PDF版本,然后各种百度,Google,百度网盘,最后找到的都是很多200M的,百 ...

  7. TensorFlow实战Google深度学习框架

    TensorFlow是谷歌2015年开源的主流深度学习框架.科技届的聚光灯已经从"互联网+"转到了"AI+": 掌握深度学习需要较强的理论功底,用好Tensor ...

  8. TensorFlow实战Google深度学习框架5-7章学习笔记

    目录 第5章 MNIST数字识别问题 第6章 图像识别与卷积神经网络 第7章 图像数据处理 第5章 MNIST数字识别问题 MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会 ...

  9. tensorflow实战google深度学习框架在线阅读

    https://max.book118.com/html/2019/0317/7112141026002014.shtm

  10. Tensorflow 实战 Google 深度学习框架(第2版)---- 10.2.2节 P274 代码

    #-*-coding:utf-8-*- import keras from tflearn.layers.core import fully_connected from keras.datasets ...

最新文章

  1. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity
  2. VTK:BackfaceCulling背面剔除用法实战
  3. easyui中的option设置selected没有效果
  4. 程序员书单_数据库篇
  5. linux新建用户不显示,linux系统无法添加用户帐号的原因分析
  6. JDBC数据库编程(java实训报告)
  7. mysql 插入信息_MySQL插入数据
  8. 计算机桌面调音量的图标不见了,如何解决电脑音量图标不见了
  9. 计算机exce常用功能,excel表格的基本操作 电脑基本操作知识(办公室常用).doc
  10. 基于bert的platos republic i ii情绪分析和可视化
  11. 面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
  12. 逆向思维--魔兽世界封包分析
  13. C10K问题与IO多路复用
  14. QQ聊天记录快速迁移
  15. python 从windows移植到linux后,ImportError:No module named xxxx
  16. 编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常,而且无论在哪种情况下,“总是被执行”
  17. 个人理解小波变换及转载小波变换原理
  18. uView——分段器、选项卡
  19. NNDL 作业8:RNN-简单循环网络
  20. 2021前端面试题系列:fetch与axios、浏览器内多个标签页面通信及安全问题

热门文章

  1. Redux源码全篇浅读
  2. 通过QQ或者QQ帮助别人学习Lync之一
  3. Mac,WIN下支撑 IPV6的 sftp客户端
  4. 自动化运维平台中的统一认证接入与单点登录实现
  5. USACO Section 4.2 题解
  6. 几个经典的路由重分发实验
  7. 语音通话框架_普通话考试得高分的方法
  8. springsecurity 登录失败_Spring Security 实战干货: 401和403状态
  9. Mybatis 高级结果映射 ResultMap Association Collection
  10. python 抓包 上传 文件_Python接口测试文件上传实例解析