TensorFlow2.0专栏之基本概念

qinggedada 发表于 2020/10/29 14:36:52 2020/10/29
【摘要】 本专栏内容源于《TensorFlow2.0从零开始学》。我在阅读后收获挺多,最近抽空整理出学习笔记和大家分享,截取了书中内容和大家分享,加入一些自己的理解。后续有时间也会有代码讲解,初学者不要错过!我会把重点划出来~TensorFlow2.0的历史介绍我们就不提了,感兴趣的小伙伴自己百度,本专栏主要是带领大家使用TensorFlow2.0这个深度学习框架。1.计算图计算图是一个有向图,是对T...

本专栏内容源于《TensorFlow2.0从零开始学》。我在阅读后收获挺多,最近抽空整理出学习笔记和大家分享,截取了书中内容和大家分享,加入一些自己的理解。后续有时间也会有代码讲解,初学者不要错过!我会把重点划出来~

TensorFlow2.0的历史介绍我们就不提了,感兴趣的小伙伴自己百度,本专栏主要是带领大家使用TensorFlow2.0这个深度学习框架。

1.计算图

计算图是一个有向图,是对TensorFlow中计算任务的抽象描述,也称为数据流图。TensorFlow使用计算图将计算表示成独立指令之间的依赖关系。

在计算图中,节点表示计算单元(即一个独立的运算操作),图中的边表示计算使用或产生的数据。

TensorFlow2.0则采用了动态计算图机制,无需要自己预先定义好计算图。

2.会话

TensorFlow2.0采用了动态计算图机制,无需在会话中执行计算图,该内容了解即可。

在TensorFlow1.x版本中,会话(Session)是客户端程序与TensorFlow系统进行交互的接口,定义好的计算图必须在会话中执行。

当会话被创建时会初始化一个空的图,客户端程序可以通过会话提供的“Extend”方法向这个图中添加新的节点来创建计算图,并通过“tf.Session”类提供的“run”方法来执行计算图。在大多数情况下只需要创建一次会话和计算图,之后可以在会话中反复执行整个计算图或者其中的某些子图。

TensorFlow2.0采用了动态计算图机制,就不需要在会话中执行计算图了。

“tf.Session”类被放到了兼容模块“TensorFlow.compat.v1”中,这个模块里有完整的TensorFlow1.x的API。为了保留静态计算图的优势(例如性能优化和可移植性等),TensorFlow2.0提供了“tf.function”方法,对于使用“tf.function”方法修饰的Python函数,TensorFlow可以将其作为单个图来运行。

3.运算操作和运算核

计算图中的每一个节点就是一个运算操作(Operation,通常简称Op)。每一个运算操作都有名称,并且代表了一种类型的抽象运算,例如“MatMul”代表矩阵的乘法。每个运算操作都可以有自己的属性,但是所有的属性都必须被预先设置,或者能够在创建计算图时根据上下文推断出来。通过设置运算操作的属性可以让运算操作支持不同的张量(Tensor)元素类型,例如让向量加法操作运算只接收浮点类型的张量。

运算核(Kernel)是一个运算操作在某个具体的硬件(比如CPU或GPU)上的实现。

4.张量

张量由“tf.Tensor”类定义。

张量(Tensor)可以看作一个多维的数组或列表,张量由“tf.Tensor”类定义。计算图中的一个运算操作可以获得0个或多个张量作为输入,运算后会产生0个或多个张量输出。这些张量在计算图的边中流动(Flow),从一个节点(运算操作)到另一个节点,TensorFlow也因此而得名。

张量具有以下两个属性:

●数据类型(同一个张量中的每个元素都具有相同的数据类型,例如float32、int32及string)。

●形状(即张量的维数及每个维度的大小)。

TensorFlow有一些特殊的张量,如下所示。

tf.Variable:变量

对于那些需要被持久化保存的张量,可以用变量来代替。

TensorFlow中的张量一般都不会被持久化保存,参与一次运算操作后就会被丢弃了。而变量是一种特殊的张量。对于那些需要被持久化保存的张量,可以用变量来代替。使用“tf.Variable”类来定义和操作变量,模型的参数一般都是使用变量来存储的,在模型训练的过程中,参数会不断地更新。变量的值可以修改,但是其维度不可以改变。

tf.constant:常量。常量定义时必须初始化值,且定义后其值和维度不可再改变。

●tf.placeholder:占位符。在执行“session.run()”方法时传入具体的值,TensorFlow2.0中不再使用,但依然可以在“TensorFlow.compat.v1”模块中找到。

●tf.SparseTensor:稀疏张量。

到此,基本概念篇结束,感谢阅读,下一篇再见!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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