python是一个脚本语言,它的运算速度较C、C++来说慢了很多很多,所以如果要执行开销非常大的操作(比如大型矩阵乘法),一般都是转到python之外,使用其他语言来完成。但是,从其他语言转回到python的这个操作仍然是耗费时间的,如果这种转来转去的操作经常发生,也会大大影响程序的运行速度。所以tensorflow索性只使用python这门语言对计算的过程进行描述,待描述完毕之后统一放到python之外使用其他语言进行。
这个统一描述的过程就是tensorflow的编程体系:图(graph)、节点(operation)和张量(tensor)。
图就是整个计算过程所依托的白纸,计算过程的每一个环节都是一个op(即operation,以下均用op代指节点),在整个图中流动的数据用矩阵来表示,矩阵在tensorflow中被称为tensor(张量)。
每一个op只有两种类型:纯数据和纯操作
# 纯数据
op1 = tf.constant([[1, 2], [3, 4]])
op2 = tf.constant([[1, 2], [3, 4]])
# 纯操作
op3 = tf.matmul(op1, op2)
纯操作有tensorflow的各种内置类型,比如matmul(矩阵乘法)、mul(乘法)等等;
纯数据也有tensorflow提供的各种类型,包括:
常量constant、
变量(要赋初值但是在计算过程中可能会根据你的想法进行变化)Variable
占位符(在计算过程中实时输入的数据)placeholder等等。
注意Variable由于其特殊性(即在运算过程中系统可以自行改变这个数据的值),需要在计算之前进行初始化:sess.run(tf.initialize_all_variables())