TensorFlow的基本数据单元是tensor(张量),如何讲tensor的值取出,又如何在运算过程中向tensor中传入值呢?Fetch与Feed是TensorFlow中关于数据存取的术语,博主就由代码来简要介绍下Fetch与Feed。
1.取回单节点的tensor:TensorFlow实现的计数器
这个例子比较简单,就不多讲了,直接看代码即可
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf state = tf.Variable(0, name = "counter") #创建变量,初始化值为零,初始化在run时刻执行,并不立即执行 one = tf.constant(1) new_value = tf.add(state, one) update = tf.assign(state, new_value) #赋值操作 init_op = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init_op) print sess.run(state) for _ in range(3): sess.run(update) #运行更新操作 print sess.run(state) #输出单个tensor
输出0,1,2,3四个数字。
2.取回多个tensor
下面这个例子和上面的一样,sess.run()的参数,就是你要的返回值。
也就是说,要获取多个tensor值,在op的一次操作中获取就可以了,而不是逐个去获取。
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf input1 = tf.constant(3.) input2 = tf.constant(2.) input3 = tf.constant(5.) intermed = tf.add(input2, input3) mul = tf.mul(input1, intermed) with tf.Session() as sess: result = sess.run([mul, intermed]) #使用result op 取回多个tensor print result
输出结果[21.0 7.0]。
3.TensorFlow的Feed机制
Feed机制可以插入一个tensor来临时替代图中的任意操作中的tensor,就是可以提供feed数据作为run()的调用参数,feed只在调用它的方法内有效,方法结束,feed就会消失。
最常见的用例是将默写特殊的操作制定为feed操作,使用tf.placeholder()创建占位符。
#!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf input1 = tf.placeholder(tf.float32) #这里注意,在早期的tensorflow中要写作tf.types.float32 input2 = tf.placeholder(tf.float32) output = tf.mul(input1, input2) with tf.Session() as sess: print sess.run([output], feed_dict={input1:[7.], input2:[2.]})
输出为一个元组: [array(14.0, dtype=float32)]
这里注意,传入feed的是一个dict,一个字典类型。
OK,See You Next Chapter!