郭震 AI公众号:郭震AI

15 运行计算图:Fetch与Feed

发布日期:

分类: Tensorflow小白

预计阅读: 3 分钟

运行计算图:Fetch与Feed结构图查看大图
运行计算图:Fetch与Feed结构图

TensorFlow 学习要把张量、模型、训练和部署放在一条线上,而不是只看单段代码。阅读时可以按「Fetch:提取特定计算的输出 -> 基本用法 -> Fetch多个操作 -> Feed:动态输入数据」建立结构,再回到正文里的代码、案例或指标做验证。

运行计算图:Fetch与Feed核对图查看大图
运行计算图:Fetch与Feed核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「Fetch:提取特定计算的输出」,再查「基本用法」。

在上篇中,我们学习了如何使用 Session 来运行计算图。现在,我们将深入探索 FetchFeed 的概念,这两者在 TensorFlow 中对于处理数据和执行计算都非常重要。

6.2 Fetch:提取特定计算的输出

Fetch 允许你从计算图中提取特定的操作结果。通过 Fetch,我们可以获得一个或多个操作的结果,而不是整个计算图的输出。

Fetch与Feed判断卡查看大图
Fetch与Feed判断卡

理解 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)

在这个代码中,我们定义了 ab 两个常量,并通过 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 将会包含 cde 的计算结果,依次为 [11, 30, 1]

6.2 Feed:动态输入数据

Feed 允许我们将数据动态地输入到计算图中。这在我们需要使用运行时数据而不是预先定义的数据时尤为重要。我们可以使用 feed_dict 来实现这一点。

TensorFlow阅读地图卡查看大图
TensorFlow阅读地图卡

读《运行计算图: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)

在上述代码中,xy 是占位符,我们利用 feed_dict 提供了它们的值。运行后,z 的结果为 12

组合Fetch与Feed

我们可以将 FetchFeed 结合使用,以便在同一计算图中进行多次动态输入和提取不同操作的输出。例如:

# 定义更多的占位符
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

在这个示例中,我们分别使用 Feedab 输入不同的值,并通过 Fetch 获取两个操作 (cd) 的结果。

运行计算图:Fetch与Feed应用复盘卡查看大图
运行计算图:Fetch与Feed应用复盘卡

如果《运行计算图:Fetch与Feed》还没完全消化,可以从这张卡片的四个动作重新走一遍。

运行计算图:Fetch与Feed应用检查卡查看大图
运行计算图:Fetch与Feed应用检查卡

回看《运行计算图:Fetch与Feed》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

小结

在本节中,我们学习了 FetchFeed 的基本用法。Fetch 使得我们可以提取特定的操作输出,而 Feed 则允许我们动态地输入数据到计算图中。这两者是 TensorFlow 的核心操作,对于建模和数据处理至关重要。

在下一个章节中,我们将进入 Keras 的世界,学习如何使用这个高级API来构建更复杂的深度学习模型。准备好下一步的旅程了吗?具体内容将涵盖 Keras 的基本概念与用法,带你一步步深入深度学习的殿堂。

相关教程

相关页面

AI 教程列表
微博邮件

延伸教程

AI 教程列表

相关内容

相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...