是否Session.run(fetches, feed_dict)
保证按顺序执行其fetches
参数?Session.run(fetches)是否保证按顺序执行它的“fetches”参数?
该文档似乎没有提及它。
例如,如果运行
sess.run([accuracy, train_op], feed_dict=feed_dict)
的执行事项的顺序:train_op
将更新影响accuracy
参数。
是否Session.run(fetches, feed_dict)
保证按顺序执行其fetches
参数?Session.run(fetches)是否保证按顺序执行它的“fetches”参数?
该文档似乎没有提及它。
例如,如果运行
sess.run([accuracy, train_op], feed_dict=feed_dict)
的执行事项的顺序:train_op
将更新影响accuracy
参数。
编号默认情况下,Tensorflow可以按任意顺序评估操作员。由于并发性,该顺序甚至可能在运行之间发生变化。这通常是件好事,因为这意味着Tensorflow可能会优化使用可用的硬件。如果你的代码改变诸如Variables之类的状态,这可能会有问题。
但是,如果由于某种原因您希望控制评估顺序,通常您可以使用控制依赖关系来强制执行操作符之间的顺序。控制依赖关系记录在这里:
https://www.tensorflow.org/api_docs/python/tf/Graph#control_dependencies
希望帮助!
发布之后,并在讨论中
Is it possible to get the objective function value during each training step?
我注意到,执行顺序是不确定的。例如,考虑这样的代码:
import tensorflow as tf
x = tf.Variable(0, dtype=tf.float32)
loss = tf.nn.l2_loss(x-1)
train_opt = tf.train.GradientDescentOptimizer(1)
train_op = train_opt.minimize(loss)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print sess.run([x, train_op])
随着TensorFlow 1.1,如果环境变量CUDA_VISIBLE_DEVICES
设置为GPU的一个,这个打印
[0.0, None]
,并且如果它被设置为""
,该代码打印
[1.0, None]
不幸的是,我没有看到任何文档中指定的执行顺序或警告用户,它是不确定的。
这看起来像它可能会在链接的问题中有用:http://stackoverflow.com/questions/43856480/is-it-possible-to-get-the-objective-function-value-during-each-training - 步骤我不知道你是否有兴趣,但那里有100点的赏金。 – MaxB