我是靠谱客的博主 光亮太阳,最近开发中收集的这篇文章主要介绍python与tensorflow的关系_Python深度学习之TensorFlow中的一些基本概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

TensorFlow中的边

TensorFlow的边有两种连接关系:数据依赖和控制依赖。其中,实线边表示数据依赖,代表数据,即张量。任意维度的数据统称为张量。在机器学习算法中,张量在数据流图中从前往后流动一遍就完成了一次前向传播(forward propagation),而残差从后向前流动一遍就完成了一次反向传播(backward propagation)。残差指的是实际观察值与训练的估计值之间的差。

还有一种特殊的边,一般画为虚线边,称为控制依赖,可以用于控制操作的运行,这被用来确保happens-before关系,这类边上没有数据流过,但源节点必须在目的节点开始执行前完成执行。常用代码如下:

tf.Graph.control_dependencies(control_inputs)

TensorFlow支持的张量具有如下所示的数据属性:

7c1ed21b0ef41bd573174bb6ca0847cf38db3d07.png?token=1f901643bd70d705e9a2940436926aaa&s=1ea87c23959179c25e5415c60300c0b1

节点

图中的节点又称为算子,它代表一个操作,一般用来表示施加的数学运算,也可以表示数据输入的起点以及输出的终点,或者是读取/写入持久变量的终点。下表我们列举了一些TensorFlow实现的算子。算子支持上表所示的张量的各种数据属性,并且需要在建立图的时候确定下来。

b219ebc4b74543a91b07ca3584c54c86b8011405.png?token=6798900133bc60ce7868cdd7eb28fba0&s=1eaa7423c7e469035e7d10cf030080b1

其他概念

除了边和节点,TensorFlow还涉及其他一些概念,如图、会话、设备、变量、内核等。下面我们分别介绍一下这些概念。

图把操作任务描述成有向无环图。那么如何构建一个图呢?构建图的第一步是创建各个节点。具体如下:

6d81800a19d8bc3e0ce1a3091859601aaad3455b.png?token=3223a773ad3c0b4d0f454a98127b0a29&s=41f233645bf49e4d5c58740e0300e0c2

会话启动图的第一步是创建一个Session对象。会话(session)提供在图中执行操作的一些方法。一般的模式是,建立会话,此时会生成一张空图,在会话中添加节点和边,形成一张图,然后执行。

要创建一张图并运行操作的类,在Python的API中使用tf.Session,示例如下:

a8773912b31bb0511c0443bfada81cb04bede059.png?token=ad4974b3a4edb345d16ec1da18cf48e0&s=41f283645be4b44b564dd40d030070c1

在调用Session对象的run( )方法来执行图时,传入一些Tensor,这个过程叫做填充(feed);返回的结果类型根据输入的类型而定,这个过程叫做取回。

会话是图交互的一个桥梁,一个会话可以有多个图,会话可以修改图的结构,也可以往图中注入数据进行计算。因此,会话主要有两个API接口:Extend和Run。Extend操作是在Graph中添加节点和边,Run操作是输入计算的节点和填充必要的数据后,进行运算,并输出运算结果。

设备设备是指一块可以用来运算并且拥有自己的地址空间的硬件,如GPU和CPU。TensorFlow为了实现分布式执行操作,充分利用计算资源可以明确指定操作在哪个设备上执行。具体如下:

c995d143ad4bd113fa6d8682c07d620b4afb0530.png?token=55e2efa6204036d9f1b8f947b5715e1f&s=61f203661af4884b02cdf503030070c3

变量变量是一个特殊的数据,它在图中有固定的位置,不像普通张量那样可以流动。例如创建一个变量张量,使用tf.Variable( )构造函数,这个构造函数需要一个初始值,初始值的形状和类型决定了这个变量的形状和类型:state = tf.Variable(0, name="counter")

创建一个常量张量:

input1 = tf.constant(3.0)

TensorFlow还提供了填充机制,可以在构建图的时候使用tf.placeholder( )临时替代任意操作的张量。在调用Session对象的run( )方法去执行图时,使用填充数据作为调用的参数,调用结束后,填充数据就消失了。代码如下:

18d8bc3eb13533faa06d8bcb32013b1b43345b56.png?token=4214ecfb6ac45fb514ccddfa50b54f92&s=61d2036412f48c7c1445ac070300e0c0

内核我们知道操作是对抽象操作的一个统称,而内核则是能够运行在特定设备上的一种对操作的实现。因此,同一个操作可能会对应多个内核。当自定义一个操作时,需要把新操作和内核通过注册的方式添加到系统中。

最后

以上就是光亮太阳为你收集整理的python与tensorflow的关系_Python深度学习之TensorFlow中的一些基本概念的全部内容,希望文章能够帮你解决python与tensorflow的关系_Python深度学习之TensorFlow中的一些基本概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部