-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にバグとして報告する必要がありますか?
解決済み!自分の質問へ
回答:解決ループ
ループの外
get_next()
を移動しますそれは...ですか?別のフォーマットから同じデータを読み取るために同じ測定を行うことはできますか? –'get_next'はopを返します。それはループの外にあるべきであるように見える? –
コメント@ E_net4のおかげで、私は質問 –