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:稀疏张量。
到此,基本概念篇结束,感谢阅读,下一篇再见!
- 点赞
- 收藏
- 关注作者
评论(0)