TensorFlow是用数据流图(data flow graphs)技术来进行数值计算的。
数据流图是描述有向图中的数值计算过程。
有向图中,节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors)。
节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。
那么数据流图是如何在TensorFlow运行的呢?
1. 将计算流程表示成图;
2. 通过Sessions来执行图计算;
3. 将数据表示为tensors;
4. 使用Variables来保持状态信息;
5. 分别使用feeds和fetches来填充数据和抓取任意的操作结果;
1. tf.constant(): tensorflow常量
hello = tf.constant("Hello world")
使用type函数输出类型:tensorflow.python.framework.ops.Tensor
这个常量可以是字符串,数字等。
2. tf.Session(): tensorflow事务
3. tf.placeholder(): 输入函数
事务执行到此等待输入(括号内指定类型)
a = tf.placeholder(tf.int16)
4. tf.add/tf.multiply: 简单运算
5. tf.matmul() 矩阵乘法
6. Eager Mode
Tensorflow新出的eager模式,Tensorflow会从原先的声明式(declarative)编程形式变成命令式编程形式(imperative),当使用语句c = tf.matmul(a, b)后,以及其他tf开头的语句,就会直接执行相应的操作生成一个值,而不像以前那样先生成以个Tensor,通过sess.run()才能拿到值。
7. tf.Variable(): 变量
当创建一个变量时,你将一个张量作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。
调用tf.Variable()添加一些操作(Op, operation)到graph:
一个Variable操作存放变量的值。
一个初始化op将变量设置为初始值。这事实上是一个tf.assign操作.
初始值的操作,例如示例中对biases变量的zeros操作也被加入了graph。
tf.Variable的返回值是Python的tf.Variable类的一个实例。
8. tf.global_variables_initializer(): 初始化所有变量
变量的初始化必须在模型的其它操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。