tensorflow中的基本概念
本文是在阅读官方文档后的一些个人理解。
官方文档地址:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage.html#basic-usage
关于tensor和op的理解
Nodes in the graph are called ops (short for operations).
An op takes zero or more Tensors, performs some computation, and produces zero or more Tensors.
类比:一个神经元有多个输入,一个或者多个输出。这里的OP可以看作神经元,tensor可以看作输入的数据。
In TensorFlow terminology, a Tensor is a typed multi-dimensional array.
For example, you can represent a mini-batch of images as a 4-D array of floating point numbers with dimensions [batch, height, width,channels].
tensor是一个数组,每个数组元素是多维的,其实就是一个矩阵。
TensorFlow程序的阶段
TensorFlow程序通常被组织成一个构建阶段和一个执行阶段。在构建阶段,op 的执行步骤被描述成一个图。在执行阶段,使用会话执行执行图中的op。
阶段一:如何构建图?
1.构建图从创建op开始。有些op的创建是不需要input的,比如Constant。这样的op被成为源op(source op)。
2.在python中op对象是由op构造器(ops constructors)创建的。op构造器创建一个op对象时可以传递一个源op作为待构造op对象的输入。
3.op对象被op构造器创建后是作为一个node加入到graph中的。TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了。
总结:因为graph是由op对象组成的,所以构建图的过程其实就是创建op对象的过程,以及如果将这些个op对象连接起来(比如某个op对象作为另外某个op对象的输入)的过程。
阶段二:图构建好了,如何执行?
1.因为graph需要在session中启动。所以为了启动一个graph,第一步就是创建session对象。
2.sessoin对象创建的时候如果不制定graph,则使用默认图(default graph)。
对Variable的理解
变量用于维护图执行过程中的状态信息。
通常会将一个统计模型中的参数表示为一组变量。 例如, 你可以将一个神经网络的权重作为一个tensor存储在某个变量中。在训练过程中, 通过重复运行训练图,更新这个 tensor。
对feeds和fetches的理解
可以为任意的op赋值或者从其中获取数据。
对于tensor、Constants、Variables三者的理解
tensor存储在Constants或者Variables。就像数据可以放在常量和变量中一样。放在变量中的数据是可以修改的,放在常量中的数据是不可以修改的。
常量op也算是op吧,只是比较简单而已。