一、关于TensorFlow的基本概念
TensorFlow的计算模型、数据模型、运行模型,主要是一些理论概念的整理。
1、TensorFlow的计算模型——计算图
Tensor—张量,即可简单理解为多维数组,表明其数据结构。
Flow—流,直观的表达了张量之间通过计算相互转化的过程,体现其计算模型。
TensorFlow—一个通过计算图的形式来表述计算的编程系统,TensorFlow中的每一个计算都会被转化为计算图上的一个节点,而节点之间的边表述了计算之间的依赖关系。
2、TensorFlow的数据模型——张量
即TensorFlow管理数据的形式。
在TensorFlow程序中,所有的数据都通过张量的形式来表示,可简单理解为多维数组。但张量在TF中的实现并不是直接采用数组的形式,它只是对TF中运算结果的引用。在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。
张量的使用有以下两类:
1)对中间计算结果的引用,主要是提高可阅读性,同时方便获取中间结果。比如在CNN中,卷积层或者池化层有可能改变张量的维度,通过result.get_shape函数来获取结果张量的维度信息可以免去人工计算的麻烦。
2)获得计算结果,即得到真实的数字。张量本身并没有存储具体的数字,但通过会话session就可以得到这些具体的数字。
3、TensorFlow的运行模型——会话
使用会话来执行定义好的运算。会话拥有并管理TF程序运行时的所有资源。
TF使用会话一般有两种模式:
1)明确调用会话生成函数和关闭会话函数
sess=tf.Session()//创建一个会话
sess.run()//使用会话得到运算结果
sess.close()//关闭会话,释放资源
由于该情况可能会出现异常退出导致无法执行关闭会话的函数,从而使资源泄露的问题。
解决方法:TF通过Python的上下文管理器来使用会话。
with tf.Session() as sess:
sess.run(...)
2)通过设定默认会话计算张量的取值
sess=tf.Session()
with sess.as_default():
print(result.eval())