郭震 AI公众号:郭震AI

15 运行计算图:Fetch与Feed

发布日期:

最近更新:

分类: Tensorflow小白

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点7 个
图文要点6 张
正文规模1.4k 字
运行计算图: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
正在加载留言...