理解tensorflow
- 使用图(graph)来表示计算任务
- 在被称为会话(session)的上下文(context)中执行图
- 使用tensor(张量)表示数据
- 通过变量(variable)维护状态
- 使用feed和fetch可以为任意的操作(arbitrary operation)赋值或者从其中获取数据
tensorflow是一个编程系统,使用图来表示计算任务。图中的节点被称作op(opreation),op可以获得0个或多个tensor,产生0个或多个tensor。每个tensor是一个类型化的多维数组。 图描述了计算的过程。为了进行计算,图必须在会话中启动,会话负责将图中的op分发到CPU或GPU上进行计算,然后将产生的tensor返回。在python中,tensor就是numpy.ndarray对象。
tensorflow程序阶段
一般被组织成两个阶段:构建阶段和执行阶段
- 构建阶段:op的执行顺序被描述成一个图
- 执行阶段:使用会话执行图中的op
tensorflow使用实例
import tensorflow as tf
mat1 = tf.constant([[3.,3.]])
mat2 = tf.constant([[2.],[2.]])
product = tf.matmul(mat1,mat2)
sess = tf.Session()
res = sess.run(product)
print(res)
sess.close()
交互式会话(interactivesession)
为了方便使用ipython之类的python交互环境,可以使用交互式会话来代替session。使用类似Tensor.run()和Operation.eval()来代替Session.run(),避免使用一个变量来持有会话。
import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.Variable([1.0,2.0])
b = tf.constant([3.0,4.0])
sess.run(tf.global_variables_initializer()
res = tf.add(a,b)
print(res,eval())
Feed操作
Feed机制可以临时代替图中任意操作中的tensor,最常见的用例是使用tf.placeholder()创建占位符,相当于是作为图中的输入,然后使用Feed机制向图中占位符提供数据进行计算。
import tensorflow as tf
sess = tf.InteractiveSession()
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
res = tf.mul(input1,input2)
res.eval(feed_dict{input1:[7.],input2:[2.]})
|