2016-07-01 1 views
0

num_epochsが設定されている場合、string_input_producerは文字列をエンキューしていないようです。num_epochsが設定されていると、Tensorflow string_input_producerが正しく動作しません。

次のコードでは、プログラムprint [0]が正しくありません。

`import tensorflow as tf 
sess = tf.InteractiveSession() 
filenames = ["1", "2", "3"] 
filename_queue = tf.train.string_input_producer(filenames, num_epochs=10) 
test_value = tf.convert_to_tensor(filename_queue.size()) 

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(sess=sess, coord=coord) 

print(sess.run([test_value]))` 

しかし、私はnum_epochs、

`import tensorflow as tf 
sess = tf.InteractiveSession() 
filenames = ["1", "2", "3"] 
filename_queue = tf.train.string_input_producer(filenames) 
test_value = tf.convert_to_tensor(filename_queue.size()) 

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(sess=sess, coord=coord) 

print(sess.run([test_value]))` 

を取る場合、それは期待[3]として出力します。

誰か他に同じ問題が発生していますか?キューランナーを開始する前に...

sess.run(tf.initialize_all_variables()) 

+0

これは私のバグのようです。私はあなたの最善の選択肢はgithubで問題を開くことだと思います。 –

答えて

0

ソリューションは、行を追加することです。 tf.train.string_input_producer()関数は、現在のエポックインデックスを追跡するために内部でTensorFlow variableを作成します。最初の使用前に初期化する必要があります(これは、キューランナーの起動時になります)。今日で

0

、キューランナーを開始する前に

sess.run(tf.local_variables_initializer())

を使用しています。 num_epochsがNoneでない場合、tf.train.string_input_producer()はローカルカウンタを作成するためです。

関連する問題