gpt4 book ai didi

tensorflow - 同时从图中请求多个值

转载 作者:行者123 更新时间:2023-12-04 13:13:10 25 4
gpt4 key购买 nike

在下面的代码中,l2 令人惊讶地返回与 l1 相同的值,但由于在 l2 之前的列表中请求了优化器,我预计损失是训练后的新损失。我不能同时从图中请求多个值并期望输出一致吗?

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=[None, 10])
y = tf.placeholder(tf.float32, shape=[None, 2])

weight = tf.Variable(tf.random_uniform((10, 2), dtype=tf.float32))

loss = tf.nn.sigmoid_cross_entropy_with_logits(tf.matmul(x, weight), y)

optimizer = tf.train.AdamOptimizer(0.1).minimize(loss)

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

X = np.random.rand(1, 10)
Y = np.array([[0, 1]])

# Evaluate loss before running training step
l1 = sess.run([loss], feed_dict={x: X, y: Y})[0][0][0]
print(l1) # 3.32393

# Running the training step
_, l2 = sess.run([optimizer, loss], feed_dict={x: X, y: Y})
print(l2[0][0]) # 3.32393 -- didn't change?

# Evaluate loss again after training step as sanity check
l3 = sess.run([loss], feed_dict={x: X, y: Y})[0][0][0]
print(l3) # 2.71041

最佳答案

否 - 您在列表中请求它们的顺序对评估顺序没有影响。对于有副作用的操作,比如优化器,如果你想保证一个特定的排序,你需要使用 with_dependencies 来强制它。或类似的控制流结构。通常,忽略副作用,TensorFlow 将在计算后立即通过从图中抓取节点来将结果返回给您 - 显然,损失是在优化器之前计算的,因为优化器需要将损失作为其输入之一. (请记住,'loss' 不是变量;它是张量;因此它实际上不受优化器步骤的影响。)

sess.run([loss, optimizer], ...)


sess.run([optimizer, loss], ...)

是等价的。

关于tensorflow - 同时从图中请求多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512046/

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