对TensorFlow基础概念的理解
TensorFlow的核心程序由2个部分组成:
- 构建计算图:Building the computational graph
- 运行计算图:Running the computational graph
首先我们先了解一些TensorFlow相关的单词:
tensor张量、graph图、computational graph计算图、operation(op)操作、session会话、variable变量、placeholders占位符、feed_dict传递字典、name_scope名字作用域
接下来我们了解一些TensorFlow的基础概念:
- 张量:TensorFlow核心的基本数据单元。 张量是一个多维数组。
- 图:默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象。
- 计算图:由一系列的tensorflow的操作组成,并且这些操作编配成计算图的节点。
- 会话:TensorFlow的运行模型,通过会话来存储执行计算图。
- 变量:当训练模型时,用变量来存储和更新参数。建模时它们需要被明确地初始化,当创建一个变量时,需要将一个张量作为初始值传入构造函数Variable()。变量也是一种OP,是一种特殊的张量,能够进行存储持久化,它的值就是张量。是在模型训练中,允许修改的量。相同的输入,通过修改变量得到不同输出值。
- 占位符:在计算图中,能够接受额外输入,通常情况下,提供的值晚于定义。意义在于,在程序执行的时候,不确定输入的是什么,提前“占个坑”。
- 传递字典:参数传递具体的值到run方法的占位符来进行多个输入。
- 名字作用域:管理变量的集合,调用范围内创建的所有计算图形元素都有名称。
理解:
TensorFlow,张量的流动,我们可以把TensorFlow当成是一个工厂,名字叫做“张量工厂”。
一个工厂通过设备,生产原料,能源等,生产出产品。那么在我们的“张量工厂”中,我们的生产原料就是“张量”,我们的设备就是“操作op”,合理组装这些设备就成为了“计算图”,这些生产原料和设备,构成了我们的工厂即“图”。那么有了生产原料和工厂,之后我们就可以进行生产,只需要老板动一动手指按下启动按钮,那么整个工厂,就会运行起来。
张量工厂的组成:
- 生产原料:张量tensor。
- 生产设备:操作operation(op),接收仓库的tensor,清洗数据tensor,处理数据tensor 。
- 工厂:图graph,由“生产原料”和“生产设备”组成,整个程序。
- 流水线:计算图computational graph,有一系列的设备op组成,加工仓库的原料和中间产品tensor
- 董事会:会话session,董事会在会议上决定共产是否启动启动(run)工厂graph生产产品tensor。
- 仓库:变量variable,仓库内的原料tensor或者生产出的中间产品tensor,但只能是一种类型的(维度),不能原来存放的是HCl,现在存放NaCO3(因为维度不同),仓库中的tensor在进入流水线之前,必须先拆掉包装(必须先初始化),然后才能被设备使用。
- 通用原料容器:占位符placeholders,同一条生产线,今天我可能生产花生酱,明天生产草莓酱,我不确定到底会生产什么,所以我单独设置这样的原料容器,提前占个位置,这样无论生产什么我都不需要专门使用一个容器,只需要防止一个通用容器。
- 仓库大门:传递字典feed_dict,通过这个大门,我们向仓库中存入tensor。
- 生产车间:名字作用域name_scope,就像是,清洗车间、组装车间等,每个车间都包含生产设备op。
这个图就很好的体现了“TensorFlow”,张量Tensor在计算图中流动Flow。
这个图中流动的线就是生产原料和中间产品tensor;每一个灰色的方块,ReLu Layer,Logit Layer,Gradients,SGD Trainer,都是生产车间name_scope,有了生产车间就方便我们管理设备;在每个生产车间中的图形,就是我们的生产设备operation,他们加工原料tensor。
在加工的过程中,工厂的技术人员会不断调整设备的参数(学习参数),最终,使生产出的产品的质量(准确率)不断提高