TensorFlow学习笔记(三)——Fetch与Feed

        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!

发表评论