2016-11-08 1 views
0

私は、Kerasの何百万という小さな画像(~~ 100x100px、それぞれ3チャンネル)で非常に大きな神経回路網(fc、conv、poolなど)を学習する準備をしています。すべてのファイルは約〜800 GBになり、私の質問があります。どのようにデータを処理するのですか?大きな神経ネットワークのデータバッチを管理するにはどうすればいいですか?

私はKerasがバッチを処理することは知っていますが、それぞれ8GBの100ファイルを持つネットワークを学ぶ方が良いでしょうか?〜300kファイルを作成した方が良いでしょうか?私はそれがより大きいファイルを持っていることが良いと思うし、300k回よりも8倍(8つの大きなファイル)を読むのが速いですが、わかりません。

私は100 GB未満のRAMしか持っていないので、一度に全データを読み込むことはできません。

ありがとうございます!

答えて

0

Kerasが提供するkeras.preprocessing.image.ImageDataGeneratorを使用して、すべてのファイルをメモリにロードする代わりに使用できます。バッチサイズを設定することができます。 ImageDataGeneratorは、必要に応じてリアルタイムであなたのデータを「無料で」増やすのにも役立ちます。一連のイメージを使用してネットワークをトレーニングするには時間がかかるため、ハードドライブからファイルを読み込んでもパフォーマンスは低下しません。主なボトルネックは計算力です。何らかの理由であなたがkeras.preprocessing.image.ImageDataGeneratorを使用できない場合

インターフェースとkeras.preprocessing.image.ImageDataGeneratorの例はImageDataGenerator

0

で見つけることができ、あなた自身の発電機を使用することができます。

私の場合、私はセグメント化を行いましたが、その方法はflow_from_directoryメソッドではサポートされていませんでした。だから私は自分の発電機を書いた、https://wiki.python.org/moin/Generatorsによると、無期限に画像が得られた。 model.fit_generatorメソッドで使用することができます:https://keras.io/models/model/#fit_generator

関連する問題