トレーニングデータセットが大きすぎてメモリに収まらないため、コードは一度にディスクから1,000レコードしか読み込みません。今度はTensorflowの新しいDataset APIを使用したいと思います。データセットAPIにより、メモリに保持するレコード数を指定できますか、Tensorflowは自動的にメモリを管理しますので、これを行う必要はありません。TensorflowのデータセットAPIでのメモリ管理
答えて
batch_sizeでレコード数を指定する場合は、この場合、TFはファイルからbatch_size要素だけを取得します。 shuffleを指定することもできます。これにより、メモリ内のすべての時間が最大でbuffer_size
要素になることが保証されます。
私のtfrecordsファイルで確認しました。私は100のtfrecordsファイルを持っています、それらのそれぞれ〜10Gb(私のラップトップ上のメモリ以上)です。そして、すべて正常に動作します。
私が何か見落としていない限り、ドキュメントは単にバッチと言っています。「このデータセットの連続した要素をバッチにまとめます」私はメモリ管理やデータがディスクからどのように読み込まれるかについて何も見ていませんでした。また、これまでデータセットがキューを置き換えていることがわかりました。たとえば、この問題を参照してください。https://github.com/tensorflow/tensorflow/issues/7951#issuecomment-303744600 – user554481
@ user554481うわー、知らなかったそれ。これはデータセットを見て初めてのことで、これはちょうどヘルパーだと思っています。ありがとうございました –
はい。公式ガイド(TensorFlow入力パイプラインのためのデータセットのAPIを使用して、https://www.tensorflow.org/programmers_guide/datasets)から例
filenames = ["/var/data/file1.tfrecord", "/var/data/file2.tfrecord"]
dataset = tf.contrib.data.TFRecordDataset(filenames)
dataset = dataset.map(...) ## Parsing data with a user specified function
dataset = dataset.shuffle(buffer_size=10000) ## 10000: size of sample/record pool for random selection
dataset = dataset.batch(32) ## 32: number of samples/records per batch (to be read into memory)
dataset = dataset.repeat() ## None: keep repeating
データセット= dataset.prefetch(BUFFER_SIZE)私はプリフェッチがこれを行うだろうと仮定? buffer_sizeが十分大きく設定されていると、すべてのtfrcordがmemに保持されますか? Meaning of buffer_size in Dataset.map , Dataset.prefetch and Dataset.shuffle
- 1. Tensorflowメモリ管理 - チャンク?
- 2. Tensorflow - im2txtでのGeForce 970でのメモリ管理
- 3. C#(メモリ管理)の配列の管理
- 4. イベントマシンのメモリ管理
- 5. iPhoneのメモリ管理
- 6. クラスインスタンスのメモリ管理
- 7. NSTimerのメモリ管理
- 8. スウィフトのメモリ管理
- 9. Firefoxのメモリ管理
- 10. コンテナクラスのメモリ管理
- 11. iPhoneのメモリ管理
- 12. iPhoneのメモリ管理
- 13. Windowsのメモリ管理
- 14. iOSのメモリ管理
- 15. NSDictionaryのメモリ管理
- 16. hDCのメモリ管理
- 17. iPhoneのメモリ管理
- 18. 未管理オブジェクトのメモリ管理
- 19. Javascriptでのメモリ管理
- 20. ココアでのメモリ管理
- 21. Rubyでのメモリ管理
- 22. カスタムUIViewControllerでのメモリ管理
- 23. Javaでのメモリ管理
- 24. PHPでのメモリ管理
- 25. BADAでのメモリ管理
- 26. Forthでのメモリ管理
- 27. GUIでのメモリ管理
- 28. スレッド間でのメモリ管理
- 29. Caffe2でのメモリ管理
- 30. iosでのメモリ管理の理解
質問を再訪しました。 shuffleとの組み合わせでBatch_sizeは確実に機能します。 –