一.TensorFlow基本执行流程如下:
使用图 (graph) 来表示计算任务.
在被称之为 会话 (Session) 的上下文 (context) 中执行图.
使用 tensor 表示数据.
通过 变量 (Variable) 维护状态.
使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据
二.详细介绍
1.op:
op为图中的节点,每一个op获得来自其他op产生并传递的0个或多个tensor,执行计算后,产生0个或多个tensor。
2.tensor:
tensor的汉语翻译是张量,张量概念是矢量概念的推广,矢量是一阶张量。张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。在tensorflow中用tensor作为数据结构。
在tensorflow中用tensor数据结构来代表所有数据结构。op之间传递的数据都是tensor
其中tensor有三个属性:Rank(阶),Shap(形状),Type(数据类型)
① Rank
简单的来说就是有几层方括号就是几阶tensor
②Shape
方括号中有几个元素,就是几维
③Type
Type可以为一个张量指定下列数据类型中的任意一个类型:
3.构建图
创建源op,源op无任何的输入,例如常量(constant)。源op的输出被当做其他与该op连接的op的输入。
import tensorflow as tf
matrix2=tf.constant([[2.],[2.])
matrix1=tf.constant([3.,3.])
product=tf.matmul(matrix1,matrix2)
上述代码创建了2*1的矩阵matrix2 和 1×2的矩阵matrix1。product位两矩阵的乘。
4.在会话(Session)中启动图
method 1:
sess=tf.Session()
result=sess.run(product)
print(result)
sess.close()
method 2:
with tf.Session() as sess:
result=sess.run(product)
print(result)
5.通过变量(Variable)维护状态
①创建变量,初始化为标量0
state=tf.Variable(0,name='counter')
②创建一个op,其作用是使变量加1
one=tf.constant(1)
new_value=tf.add(state,one)
update=tf.assign(state,new_value)
代码中 assign() 操作是图所描绘的表达式的一部分,是用来更新模型中变量的值的。 正如 add() 操作一样. 所以在调用 run() 执行表达式之前, 它并不会真正执行赋值操作。
③启动图后,变量必须先初始化op
init_op=tf.global_variables_initializer()
④启动图,运行op
with tf.Session() as sess:
sess.run(init_op)
print sess.run(state)
for _ in range(3):
sess.run(update)
print sess.run(state)