gpt4 book ai didi

Tensorflow:什么时候应该使用或不使用 `feed_dict` ?

转载 作者:行者123 更新时间:2023-12-03 00:43:41 24 4
gpt4 key购买 nike

我有点困惑为什么我们要使用feed_dict?据我的 friend 说,当您使用 placeholder 时,通常会使用 feed_dict,这可能对生产不利。

我见过这样的代码,其中不涉及 feed_dict:

for j in range(n_batches):
X_batch, Y_batch = mnist.train.next_batch(batch_size)
_, loss_batch = sess.run([optimizer, loss], {X: X_batch, Y:Y_batch})

我也见过这样的代码,其中涉及到feed_dict:

for i in range(100): 
for x, y in data:
# Session execute optimizer and fetch values of loss
_, l = sess.run([optimizer, loss], feed_dict={X: x, Y:y})
total_loss += l

我理解 feed_dict 是您正在输入数据并尝试 X 作为键,就像在字典中一样。但在这里我看不出有什么区别。那么,到底有什么区别以及为什么我们需要 feed_dict

最佳答案

在 tensorflow 模型中,您可以定义一个占位符,例如 x = tf.placeholder(tf.float32),然后您将在模型中使用 x

例如,我定义了一组简单的操作:

x = tf.placeholder(tf.float32)
y = x * 42

现在,当我要求 Tensorflow 计算 y 时,很明显 y 取决于 x

with tf.Session() as sess:
sess.run(y)

这会产生错误,因为我没有给它指定 x 的值。在本例中,由于 x 是占位符,因此如果在计算中使用它,则必须通过 feed_dict 传入它。如果不这样做,那就是一个错误。

让我们解决这个问题:

with tf.Session() as sess:
sess.run(y, feed_dict={x: 2})

这次的结果将是84。伟大的。现在让我们看一个不需要 feed_dict 的简单情况:

x = tf.constant(2)
y = x * 42

现在没有占位符(x 是一个常量),因此不需要向模型提供任何内容。现在可以了:

with tf.Session() as sess:
sess.run(y)

关于Tensorflow:什么时候应该使用或不使用 `feed_dict` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com