2017-05-08 11 views
2

fetches引数を順番に実行すると、Session.run(fetches, feed_dict)が保証されますか?Session.run(フェッチ)は "フェッチ"引数を順番に実行することが保証されていますか?

ドキュメントには言及していないようです。例えば

、あなたが

sess.run([accuracy, train_op], feed_dict=feed_dict) 

実行の順番に実行する場合:accuracyに影響を与えるパラメータを更新しますtrain_opを。これを掲示した後

答えて

3

デフォルトでは、Tensorflowは任意の順序で演算子を自由に評価することができます。並行性のため、その順序は実行間で変更されることさえあります。これは通常、Tensorflowが利用可能なハードウェアを最適に使用する可能性があるため、良いことです。あなたのコードがVariablesのような状態を変更すると問題になることがあります。

しかし、何らかの理由で評価の順序を制御したい場合は、一般に、制御依存関係を使用して演算子間の順序を強制することができます。制御依存関係はここに記載されています:助け

https://www.tensorflow.org/api_docs/python/tf/Graph#control_dependencies

希望を!

+0

これはリンクされた質問に役立つようです:http://stackoverflow.com/questions/43856480/is-it-possible-to-get-the-objective-function-value-during-each-training私はあなたが興味を持っているかどうか分かりませんが、そこには100ポイントの賞金があります。 – MaxB

0

、および

Is it possible to get the objective function value during each training step?

での議論の間に私は、実行順序が定義されていないことに気づきました。環境変数CUDA_VISIBLE_DEVICESは、GPUのいずれかに設定されている場合、これは

[0.0, None] 

を印刷し、それが""に設定されている場合、このコードは、TensorFlow 1.1で

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]) 

:たとえば、このコードを検討プリント

[1.0, None] 

は残念ながら、私は、実行順序を指定するか、それが未定義だことをユーザーに警告する文書には何も表示されません。

関連する問題