计算图用结点和线的有向图来描述数学计算。节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors),如下图所示: 看起来太复杂了?,来个简单的:
上图描述的运算是: y = w ∗ x + b y=w*x+b y=w∗x+b 是不是很容易理解了!图中的Mul、Add表示的是TensorFlow的数值计算操作的算子,类似的还有很多,具体可以看官网。
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实践》的第二章。