TensorFlow基础学习 三(变量、fetch、feed)

定义变量并进行相加和赋值操作:

# 定义一个变量, 初始值为 0.
state = tf.Variable(0, name="counter")

# 创建一个 op, 作用是让 state 增加 1
# 定义常量one
one = tf.constant(1)
# new_value的值为state和one的值相加
new_value = tf.add(state, one)
# 将最终的new_value的值赋予变量state
# assign函数:给变量赋值
update = tf.assign(state, new_value)

# 启动图后, 变量必须先经过`初始化` (init) op 初始化,
# 首先必须增加一个`初始化` op 到图中.
init_op = tf.initialize_all_variables()

# 启动图, 运行 op
with tf.Session() as sess:
  # 运行 'init' op
  sess.run(init_op)
  # 打印 'state' 的初始值
  print sess.run(state)
  # 运行 op, 更新 'state', 并打印 'state'
  for _ in range(3):
    sess.run(update)
    print sess.run(state)

# 输出:

# 0
# 1
# 2
# 3

Fetch

在执行图操作时,用于抓取多个tensor

input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session() as sess:
  result = sess.run([mul, intermed])
  print result

# 输出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

intermed是input2和input3的和,最终我们在run中将mul和intermed一起都抓取出来了。

Feed机制

TensorFlow 提供了 feed 机制, 该机制 可以临时替代图中的任意操作中的 tensor 可以对图中任何操作提交补丁, 直接插入一个 tensor。

feed 使用一个 tensor 值临时替换一个操作的输出结果。 你可以提供 feed 数据作为 run() 调用的参数。feed 只在调用它的方法内有效, 方法结束, feed 就会消失.

简的来说:feed机制也就是引进了一个占位符,可以让我们在run  op操作的时候讲数据直接带入到方法中

示例:

input1 = tf.placeholder(tf.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.], dtype=float32)]

猜你喜欢

转载自blog.csdn.net/qq_36652619/article/details/81388417