2017-11-14 2 views
-1

私のデータはtfrecordsファイルです。この単純なコードは、tf.data.Dataset apiで画像を繰り返してバッチ処理します。しかし、100バッチあたりの計算時間が増加します。これはどうしてこの問題を解決するのですか?tf.data.Dataset APIを使用してTFRecordsを読み取ると、計算時間が増加します

import tensorflow as tf 
import time 
sess = tf.Session() 
dataset = tf.data.TFRecordDataset('/tmp/data/train.tfrecords') 
dataset = dataset.repeat() 
dataset = dataset.batch(3) 
iterator = dataset.make_one_shot_iterator() 

prev_step = time.time() 
for step in range(10000): 
    tensors = iterator.get_next() 
    fetches = sess.run(tensors) 
    if step % 200 == 0: 
     print("Step %6i time since last %7.5f" % (step, time.time() - prev_step)) 
     prev_step = time.time() 

これは、次の回出力:

Step  0 time since last 0.01432 
Step 200 time since last 1.85303 
Step 400 time since last 2.15448 
Step 600 time since last 2.65473 
Step 800 time since last 3.15646 
Step 1000 time since last 3.72434 
Step 1200 time since last 4.34447 
Step 1400 time since last 5.11210 
Step 1600 time since last 5.87102 
Step 1800 time since last 6.61459 
Step 2000 time since last 7.57238 
Step 2200 time since last 8.33060 
Step 2400 time since last 9.37795  

tfrecordsファイルは、問題の範囲を狭めるためにthis HowTo from the Tensorflow doc's

で書かれた、MNIST画像が含まれているが、私はからの生の画像を読み取るためのコードを再現しましたディスク。この場合、200バッチあたりの時間は予想どおり一定にとどまります。

今私の質問は:

  • 計算時間が増加し何のコードの一部?
  • Tensorflowのgithubにバグとして報告する必要がありますか?

解決済み!自分の質問へ

回答:解決ループ

+0

ループの外get_next()を移動しますそれは...ですか?別のフォーマットから同じデータを読み取るために同じ測定を行うことはできますか? –

+1

'get_next'はopを返します。それはループの外にあるべきであるように見える? –

+0

コメント@ E_net4のおかげで、私は質問 –

答えて

1

get_next()を移動:TFRecordデータセットの構造が何であるか、そしてどのように大規模な:追加の情報を含めることが有用であろう

関連する問題