简单讲讲TensorFlow

    科技2022-07-20  108

    TensorFlow基本概念

    计算图Session会话示例代码 TensorFlow是Google推出的一套深度学习系统,使用其灵活的易用的前端语言可以轻松的构建各种复杂的算法模型,后端高效的执行系统与分布式架构保证了在模型训练和执行方面的高性能。综合来看,TensorFlow是目前业界最优秀的深度学习系统之一。 在 TensorFlow的官方介绍中给出的定义是: TensorFlow是一个基于数据流图( Data flow Graph)的数值计算开源软件库其灵活的架构设计可以让用户以单机或分布式的方式将计算部署在台式机、服务器,甚至是手机上。通过这个描述可以看出,首先, TensorFlow面向的是数值计算,虽然起初是作为深度神经网络方向研究的工具,但它在通用计算方面的应用范围也不容小觑。其次,数据流图(或称为计算图)是TensorFlow中对于计算过程的抽象表示。数据流图是有向图,图中的点表示各种数学计算操作,边表示操作与操作之间传递的高维数组数据,称为 tensor最后,支持各种设备的灵活部署是 TensorFlow最大的优势,大至分布式服务器集群,小到手机等移动设备,都能运行同样的机器学习算法模型。

    计算图

    计算图用结点和线的有向图来描述数学计算。节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors),如下图所示: 看起来太复杂了?,来个简单的:

    上图描述的运算是: y = w ∗ x + b y=w*x+b y=wx+b 是不是很容易理解了!图中的Mul、Add表示的是TensorFlow的数值计算操作的算子,类似的还有很多,具体可以看官网。

    Session会话

    Session是驱动 TensorFlow系统执行计算交互的入口 。Session负责完成多计算设备或集群分布式的节点布置和数据传输节点的添加,并负责将子图分配给相应的执行器单元来运行。 从使用角度说,典型的用法是客户端通过 CreateSession接口与 master建立连接并在初始会话的过程中传入计算图。对于 Python接口,计算图可以在 Session创建之前构造完成,并在tf.Session对象初始化时载入到后端执行引擎。Session还提供了进程Extend的接口,可以在会话中修改计算图。 触发计算图的执行通过Run接口,也就是 Python的sess.run()方法。通过由三个接口,可以将数据代入模型,执行计算,并得到执行结果。训练过程由客户端的循环来控制,一般情况下,都会在一个会话中通过Run接口执行成千上万次的计算。 Session管理了运行时的一系列资源的申请和分配,所以在计算完成后,必须要关闭Session以释放资源。 注:TensorFlow2.x版本不再支持使用tf.Session()调用会话引擎,具体怎么使用,可以参考下文。

    示例代码

    示例代码采用我在之前的博客所用的TensorFlow安装常见问题和解决办法:

    import tensorflow as tf tf.compat.v1.disable_eager_execution() #定义两个常量 x = tf.constant([[3.,3.]]) w = tf.constant([[2.],[2.]]) #y = w * x y = tf.matmul(x,w) with tf.compat.v1.Session() as sess: result = sess.run(y) print(result)

    上面的代码演示了tensorflow完成矩阵乘法的过程。

    文章引自喻俨 莫瑜主编的《深度学习原理与TensorFlow实践》的第二章。

    Processed: 0.011, SQL: 8