15 运行计算图:Fetch与Feed
系列进度
TensorFlow 入门 · 第 15 / 25 篇
TensorFlow 学习要把张量、模型、训练和部署放在一条线上,而不是只看单段代码。阅读时可以按「Fetch:提取特定计算的输出 -> 基本用法 -> Fetch多个操作 -> Feed:动态输入数据」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「Fetch:提取特定计算的输出」,再查「基本用法」。
在上篇中,我们学习了如何使用 Session 来运行计算图。现在,我们将深入探索 Fetch 和 Feed 的概念,这两者在 TensorFlow 中对于处理数据和执行计算都非常重要。
6.2 Fetch:提取特定计算的输出
Fetch 允许你从计算图中提取特定的操作结果。通过 Fetch,我们可以获得一个或多个操作的结果,而不是整个计算图的输出。
理解 TensorFlow Fetch 与 Feed 时,先看占位符输入、feed_dict、fetch 节点、执行结果和多输出读取。
基本用法
在使用 Fetch 时,我们将需要在 Session.run() 中指定想要提取的操作。以下是一个基本的示例:
import tensorflow as tf
# 创建一个简单的计算图
a = tf.constant(5)
b = tf.constant(6)
c = tf.add(a, b)
# 启动一个Session
with tf.Session() as sess:
# Fetch c的计算结果
result = sess.run(c)
print("Result of c: ", result)
在这个代码中,我们定义了 a 和 b 两个常量,并通过 tf.add 操作将它们相加。在 Session 中调用 sess.run(c) 时,我们提取了 c 的结果,输出为 11。
Fetch多个操作
我们不仅可以提取一个操作的输出,还可以一次提取多个操作的结果。例如:
# 创建多个操作
d = tf.multiply(a, b)
e = tf.subtract(b, a)
with tf.Session() as sess:
# Fetch多个操作的结果
results = sess.run([c, d, e])
print("Results of c, d, e: ", results)
在这个例子中,results 将会包含 c、d 和 e 的计算结果,依次为 [11, 30, 1]。
6.2 Feed:动态输入数据
Feed 允许我们将数据动态地输入到计算图中。这在我们需要使用运行时数据而不是预先定义的数据时尤为重要。我们可以使用 feed_dict 来实现这一点。
读《运行计算图:Fetch与Feed》时,可以把配图当成路线卡:先看整体顺序,再看每一步为什么这样做,最后再检查边界条件。
使用Feed动态输入
让我们看看如何使用 Feed 来输入动态数据:
# 定义占位符
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
z = x * y
# 使用feed_dict输入数据
with tf.Session() as sess:
result = sess.run(z, feed_dict={x: 3, y: 4})
print("Result of z: ", result)
在上述代码中,x 和 y 是占位符,我们利用 feed_dict 提供了它们的值。运行后,z 的结果为 12。
组合Fetch与Feed
我们可以将 Fetch 和 Feed 结合使用,以便在同一计算图中进行多次动态输入和提取不同操作的输出。例如:
# 定义更多的占位符
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
c = tf.add(a, b)
d = tf.multiply(a, b)
with tf.Session() as sess:
result_addition = sess.run(c, feed_dict={a: 5, b: 3})
result_multiplication = sess.run(d, feed_dict={a: 5, b: 3})
print("Addition result: ", result_addition) # 输出:8
print("Multiplication result: ", result_multiplication) # 输出:15
在这个示例中,我们分别使用 Feed 为 a 和 b 输入不同的值,并通过 Fetch 获取两个操作 (c 和 d) 的结果。
如果《运行计算图:Fetch与Feed》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《运行计算图:Fetch与Feed》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
小结
在本节中,我们学习了 Fetch 和 Feed 的基本用法。Fetch 使得我们可以提取特定的操作输出,而 Feed 则允许我们动态地输入数据到计算图中。这两者是 TensorFlow 的核心操作,对于建模和数据处理至关重要。
在下一个章节中,我们将进入 Keras 的世界,学习如何使用这个高级API来构建更复杂的深度学习模型。准备好下一步的旅程了吗?具体内容将涵盖 Keras 的基本概念与用法,带你一步步深入深度学习的殿堂。
相关教程
相关入口
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
相关内容