《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 —1.2 计算图与会话

举报
华章计算机 发表于 2020/02/13 19:51:49 2020/02/13
【摘要】 本节书摘来自华章计算机《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 一书中第1章,第1.2节,作者是[印] 纳温·库马尔·马纳西(Navin Kumar Manaswi),刘毅冰 薛 明 译。

1.2 计算图与会话

TensorFlow因其TensorFlow Core程序而受欢迎,TensorFlow Core有两个主要的作用:

  • 在构建阶段建立计算图

  • 在执行阶段运行计算图

我们来看一下TensorFlow是如何工作的:

  • 其程序通常被结构化为构建阶段和执行阶段。

  • 构建阶段搭建具有节点(操作)和边(张量)的图。

  • 执行阶段使用会话来执行图中的操作。

  • 最简单的操作是一个常数,它没有输入,只是传递输出给其他计算操作。

  • 一个操作的例子就是乘法(或者是取两个矩阵作为输入并输出另一个矩阵的加法或减法操作)。

  • TensorFlow库具有一个默认图来给构建操作添加节点。

因此,TensorFlow程序的结构有如下两个阶段:

 image.png

计算图是由一系列的TensorFlow操作排成的节点组成的。

我们来对比一下TensorFlow和Numpy。在Numpy中,如果你打算将两个矩阵相乘,需要生成两个矩阵并将它们相乘。但是在TensorFlow中,你建立一个图(默认图,除非你另外创建了一个图)。接下来,需要创建变量、占位符以及常量值,然后创建会话并初始化变量。最终,把数据赋给占位符以便调用其他操作。

实际上,为了计算节点,必须在一个会话里面运行计算图。

一个会话里囊括了TensorFlow运行时的控制和状态。

下面代码生成了一个会话(Session)对象:

sess = tf.Session()

这之后就可以用它的运行方法来充分运行计算图以计算节点1和节点2。

计算图定义了计算。它并不执行计算,也不保留任何值。它用来定义代码中提及的操作。同时,创建了一个默认的图。因此,你不必创建图,除非需要创建图用于多种目的。

会话允许你执行图或者只执行部分图。它为执行分配资源(在一个或多个CPU或者GPU上)。它还保留了中间结果和变量值。

在TensorFlow中创建的变量的值,只在一个会话内是有效的。如果你尝试在之后的第二个会话里访问其值,TensorFlow就会报错,因为变量不是在那里初始化的。

想运行任何操作,需要给图创建一个会话。会话会分配内存来存储当前变量值。

以下是演示代码:

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。